def METHOD_NAME(self, options: Values, args: List[str]) -> int:
    session = self.get_default_session(options)
    finder = self._build_package_finder(options, session)
    wheel_cache = WheelCache(options.cache_dir, options.format_control)
    options.wheel_dir = normalize_path(options.wheel_dir)
    ensure_dir(options.wheel_dir)
    build_tracker = self.enter_context(get_build_tracker())
    directory = TempDirectory(
        delete=not options.no_clean,
        kind="wheel",
        globally_managed=True,
    )
    reqs = self.get_requirements(args, options, finder, session)
    check_legacy_setup_py_options(
        options, reqs, LegacySetupPyOptionsCheckMode.WHEEL
    )
    if "no-binary-enable-wheel-cache" in options.features_enabled:
        # TODO: remove format_control from WheelCache when the deprecation cycle
        # is over
        wheel_cache = WheelCache(options.cache_dir)
    else:
        if options.format_control.no_binary:
            deprecated(
                reason=(
                    "--no-binary currently disables reading from "
                    "the cache of locally built wheels. In the future "
                    "--no-binary will not influence the wheel cache."
                ),
                replacement="to use the --no-cache-dir option",
                feature_flag="no-binary-enable-wheel-cache",
                issue=11453,
                gone_in="23.1",
            )
        wheel_cache = WheelCache(options.cache_dir, options.format_control)
    preparer = self.make_requirement_preparer(
        temp_build_dir=directory,
        options=options,
        build_tracker=build_tracker,
        session=session,
        finder=finder,
        download_dir=options.wheel_dir,
        use_user_site=False,
        verbosity=self.verbosity,
    )
    resolver = self.make_resolver(
        preparer=preparer,
        finder=finder,
        options=options,
        wheel_cache=wheel_cache,
        ignore_requires_python=options.ignore_requires_python,
        use_pep517=options.use_pep517,
    )
    self.trace_basic_info(finder)
    requirement_set = resolver.resolve(reqs, check_supported_wheels=True)
    reqs_to_build: List[InstallRequirement] = []
    for req in requirement_set.requirements.values():
        if req.is_wheel:
            preparer.save_linked_requirement(req)
        elif should_build_for_wheel_command(req):
            reqs_to_build.append(req)
    # build wheels
    build_successes, build_failures = build(
        reqs_to_build,
        wheel_cache=wheel_cache,
        verify=(not options.no_verify),
        build_options=options.build_options or [],
        global_options=options.global_options or [],
    )
    for req in build_successes:
        assert req.link and req.link.is_wheel
        assert req.local_file_path
        # copy from cache to target directory
        try:
            shutil.copy(req.local_file_path, options.wheel_dir)
        except OSError as e:
            logger.warning(
                "Building wheel for %s failed: %s",
                req.name,
                e,
            )
            build_failures.append(req)
    if len(build_failures) != 0:
        raise CommandError("Failed to build one or more wheels")
    return SUCCESS