Allow a default_extension to be provided
When a file is found without an extension allow a CLI provided default_extension to be used in these cases so that files without extensions can be classified as known file extension types. Change-Id: I115ccc92ccd51a7018672b98b639ade30869f939
This commit is contained in:
parent
f2ec6f2550
commit
3912dca016
|
@ -27,8 +27,8 @@ Command line usage
|
|||
$ doc8 -h
|
||||
|
||||
usage: doc8 [-h] [--config path] [--allow-long-titles] [--ignore code]
|
||||
[--no-sphinx] [--ignore-path path] [--max-line-length int]
|
||||
[-e extension] [-v]
|
||||
[--no-sphinx] [--ignore-path path] [--default-extension extension]
|
||||
[--max-line-length int] [-e extension] [-v] [--version]
|
||||
[path [path ...]]
|
||||
|
||||
Check documentation for simple style requirements.
|
||||
|
@ -56,12 +56,16 @@ Command line usage
|
|||
--no-sphinx do not ignore sphinx specific false positives
|
||||
--ignore-path path ignore the given directory or file (globs are
|
||||
supported)
|
||||
--default-extension extension
|
||||
Default file extension to use when a file is found
|
||||
without a file extension.
|
||||
--max-line-length int
|
||||
maximum allowed line length (default: 79)
|
||||
-e extension, --extension extension
|
||||
check file extensions of the given type (default:
|
||||
.rst, .txt)
|
||||
-v, --verbose run in verbose mode
|
||||
--version Show the version and exit.
|
||||
|
||||
Ini file usage
|
||||
**************
|
||||
|
@ -101,6 +105,7 @@ of conflicts.
|
|||
Option Overrides Merges
|
||||
===================== =========== ========
|
||||
``allow-long-titles`` Yes No
|
||||
``default-extension`` Yes No
|
||||
``extension`` No Yes
|
||||
``ignore-path`` No Yes
|
||||
``ignore`` No Yes
|
||||
|
|
14
doc8/main.py
14
doc8/main.py
|
@ -109,6 +109,10 @@ def extract_config(args):
|
|||
cfg['verbose'] = parser.getboolean("doc8", "verbose")
|
||||
except (configparser.NoSectionError, configparser.NoOptionError):
|
||||
pass
|
||||
try:
|
||||
cfg['default_extension'] = parser.get("doc8", "default-extension")
|
||||
except (configparser.NoSectionError, configparser.NoOptionError):
|
||||
pass
|
||||
try:
|
||||
extensions = parser.get("doc8", "extensions")
|
||||
extensions = extensions.split(",")
|
||||
|
@ -155,13 +159,16 @@ def scan(cfg):
|
|||
files_ignored = 0
|
||||
file_iter = utils.find_files(cfg.get('paths', []),
|
||||
cfg.get('extension', []), ignored_paths)
|
||||
default_extension = cfg.get('default_extension')
|
||||
for filename, ignoreable in file_iter:
|
||||
if ignoreable:
|
||||
files_ignored += 1
|
||||
if cfg.get('verbose'):
|
||||
print(" Ignoring '%s'" % (filename))
|
||||
else:
|
||||
files.append(file_parser.parse(filename))
|
||||
f = file_parser.parse(filename,
|
||||
default_extension=default_extension)
|
||||
files.append(f)
|
||||
if cfg.get('verbose'):
|
||||
print(" Selecting '%s'" % (filename))
|
||||
return (files, files_ignored)
|
||||
|
@ -263,6 +270,11 @@ def main():
|
|||
parser.add_argument("--ignore-path", action="append", default=[],
|
||||
help="Ignore the given directory or file (globs"
|
||||
" are supported).", metavar='path')
|
||||
parser.add_argument("--default-extension", action="store",
|
||||
help="Default file extension to use when a file is"
|
||||
" found without a file extension.",
|
||||
default='', dest='default_extension',
|
||||
metavar='extension')
|
||||
parser.add_argument("--max-line-length", action="store", metavar="int",
|
||||
type=int,
|
||||
help="Maximum allowed line"
|
||||
|
|
|
@ -29,7 +29,7 @@ import six
|
|||
class ParsedFile(object):
|
||||
FALLBACK_ENCODING = 'utf-8'
|
||||
|
||||
def __init__(self, filename, encoding=None):
|
||||
def __init__(self, filename, encoding=None, default_extension=''):
|
||||
self._filename = filename
|
||||
self._content = None
|
||||
self._raw_content = None
|
||||
|
@ -40,6 +40,8 @@ class ParsedFile(object):
|
|||
self._has_read = False
|
||||
self._extension = os.path.splitext(filename)[1]
|
||||
self._read_lock = threading.Lock()
|
||||
if not self._extension:
|
||||
self._extension = default_extension
|
||||
|
||||
@property
|
||||
def errors(self):
|
||||
|
@ -129,7 +131,9 @@ class ParsedFile(object):
|
|||
len(list(self.lines_iter())))
|
||||
|
||||
|
||||
def parse(filename, encoding=None):
|
||||
def parse(filename, encoding=None, default_extension=''):
|
||||
if not os.path.isfile(filename):
|
||||
raise IOError(errno.ENOENT, 'File not found', filename)
|
||||
return ParsedFile(filename, encoding=encoding)
|
||||
return ParsedFile(filename,
|
||||
encoding=encoding,
|
||||
default_extension=default_extension)
|
||||
|
|
Loading…
Reference in New Issue