mirror of
https://github.com/kucherenko/jscpd.git
synced 2026-09-19 08:11:03 +08:00
1101bedcc1
- Detect format from shebang line (#!) for executable extensionless files (chmod +x) as fallback in skipNotSupportedFormats; symlinks excluded via lstatSync - Add SHEBANG_TO_FORMAT map and readShebangFormat() in packages/finder/src/files.ts - Introduce IEntry interface extending fast-glob Entry with detectedFormat? field - Add --formats-names CLI option to map specific filenames (e.g. Makefile, Dockerfile) to formats, independent of --formats-exts so neither disables built-in EXT_TO_FORMAT - Wire formatsNames through IOptions, getDefaultOptions, CLI parser, and both call sites (skipNotSupportedFormats, in-files-detector) - Add fixtures/shebang/ with 4 executable extensionless fixtures (bash + python) - 360 tests pass (277 tokenizer + 83 finder); README updated with new sections
42 lines
1.0 KiB
Python
Executable File
42 lines
1.0 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import sys
|
|
import logging
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def validate_path(path):
|
|
if not os.path.exists(path):
|
|
logger.error("Path does not exist: %s", path)
|
|
return False
|
|
return True
|
|
|
|
|
|
def read_config(config_path):
|
|
if not validate_path(config_path):
|
|
sys.exit(1)
|
|
with open(config_path) as f:
|
|
return f.read()
|
|
|
|
|
|
def setup_environment(base_dir):
|
|
os.makedirs(os.path.join(base_dir, "logs"), exist_ok=True)
|
|
os.makedirs(os.path.join(base_dir, "tmp"), exist_ok=True)
|
|
os.makedirs(os.path.join(base_dir, "output"), exist_ok=True)
|
|
logger.info("Environment set up under %s", base_dir)
|
|
|
|
|
|
def process_files(input_dir, output_dir):
|
|
setup_environment(output_dir)
|
|
for filename in os.listdir(input_dir):
|
|
src = os.path.join(input_dir, filename)
|
|
dst = os.path.join(output_dir, filename)
|
|
logger.info("Processing %s -> %s", src, dst)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
process_files(sys.argv[1], sys.argv[2])
|