diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py index fdb5fabfa0e..e70d1956c98 100644 --- a/sphinx/builders/__init__.py +++ b/sphinx/builders/__init__.py @@ -275,16 +275,16 @@ def build_specific(self, filenames: List[str]) -> None: for filename in filenames: filename = path.normpath(path.abspath(filename)) + if not path.isfile(filename): + logger.warning(__('file %r given on command line does not exist, '), + filename) + continue + if not filename.startswith(self.srcdir): logger.warning(__('file %r given on command line is not under the ' 'source directory, ignoring'), filename) continue - if not path.isfile(filename): - logger.warning(__('file %r given on command line does not exist, ' - 'ignoring'), filename) - continue - docname = self.env.path2doc(filename) if not docname: logger.warning(__('file %r given on command line is not a valid ' diff --git a/sphinx/cmd/build.py b/sphinx/cmd/build.py index d08ad1d926f..6cadefe3bb9 100644 --- a/sphinx/cmd/build.py +++ b/sphinx/cmd/build.py @@ -209,16 +209,7 @@ def build_main(argv: List[str] = sys.argv[1:]) -> int: if not args.doctreedir: args.doctreedir = os.path.join(args.outputdir, '.doctrees') - # handle remaining filename arguments - filenames = args.filenames - missing_files = [] - for filename in filenames: - if not os.path.isfile(filename): - missing_files.append(filename) - if missing_files: - parser.error(__('cannot find files %r') % missing_files) - - if args.force_all and filenames: + if args.force_all and args.filenames: parser.error(__('cannot combine -a option and filenames')) if args.color == 'no' or (args.color == 'auto' and not color_terminal()): @@ -276,7 +267,7 @@ def build_main(argv: List[str] = sys.argv[1:]) -> int: warning, args.freshenv, args.warningiserror, args.tags, args.verbosity, args.jobs, args.keep_going, args.pdb) - app.build(args.force_all, filenames) + app.build(args.force_all, args.filenames) return app.statuscode except (Exception, KeyboardInterrupt) as exc: handle_exception(app, args, exc, error)