Skip to content

Commit

Permalink
Support passing directories as command-line arguments
Browse files Browse the repository at this point in the history
This makes it easier to run djhtml over a bunch of files in a
directory or directories.

The default suffixes are used as a filter with no configuration
allowed (as black seems to work).
  • Loading branch information
pgjones committed Jul 21, 2022
1 parent 4f38952 commit 1da10e9
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions djhtml/__main__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import argparse
import sys
from pathlib import Path

from . import modes

Expand Down Expand Up @@ -28,13 +29,17 @@ def main():
$ djhtml -i file1.html file2.html
"""
target_extension = ".html"
Mode = modes.DjHTML
if sys.argv[0].endswith("djtxt"):
Mode = modes.DjTXT
target_extension = ".txt"
if sys.argv[0].endswith("djcss"):
Mode = modes.DjCSS
target_extension = ".css"
if sys.argv[0].endswith("djjs"):
Mode = modes.DjJS
target_extension = ".js"

changed_files = 0
unchanged_files = 0
Expand Down Expand Up @@ -74,7 +79,7 @@ def main():
metavar="filenames",
nargs="*",
default=["-"],
help="input filenames",
help="input filenames (either paths or directories)",
)
parser.add_argument("-d", "--debug", action="store_true", help=argparse.SUPPRESS)
args = parser.parse_args()
Expand All @@ -85,8 +90,7 @@ def main():
if len(args.input_filenames) > 1 and not args.in_place and not args.check:
sys.exit("Will not modify files in-place without -i option")

for input_filename in args.input_filenames:

for input_filename in _generate_files(args.input_filenames, target_extension):
# Read input file
try:
input_file = (
Expand Down Expand Up @@ -183,5 +187,17 @@ def main():
sys.exit(changed_files if args.check else problematic_files)


def _generate_files(input_filenames, suffix):
for file_name in input_filenames:
if file_name == "-":
yield file_name
else:
file_path = Path(file_name)
if file_path.is_file() and file_path.suffix == suffix:
yield file_name
elif file_path.is_dir():
yield from _generate_files(file_path.iterdir(), suffix)


if __name__ == "__main__":
main()

0 comments on commit 1da10e9

Please sign in to comment.