Skip to content

Latest commit

 

History

History
58 lines (41 loc) · 3.55 KB

CLI.md

File metadata and controls

58 lines (41 loc) · 3.55 KB

Command line

Windows and Linux CLI packages are in Releases. The packages include the .NET runtime. The CLI reads UTF-8 CSV and TSV checklists. From source, use .NET SDK 9 and replace filechecklist below with dotnet run --project src/FileChecklist.Cli --.

Try the included files

From the project root or extracted CLI package:

filechecklist plan examples/checklist.csv --header --source examples/files --output delivery --task sample.fctask
filechecklist choose sample.fctask --row 2 --candidate 1
filechecklist copy sample.fctask --yes

On PowerShell, use ./filechecklist.exe for an executable in the current directory. The sample contains one missing file, so plan and copy return exit code 2. Candidate 1/2 is listed with its complete path; review the path before choosing. The copied source remains unchanged.

Add the missing sample file under examples/files, then run:

filechecklist scan sample.fctask
filechecklist copy sample.fctask --yes

Completed rows are rechecked and retained. Only newly ready rows are copied. Each copy operation produces a CSV report, including unresolved rows.

Matching modes

Mode Checklist key Files considered Selection
exact (default) A001_spec.txt That complete name Automatic only if unique
stem A001_spec A001_spec.txt, A001_spec.pdf Automatic only if unique
prefix A001 A001.txt, A001_spec.txt, A001-final.pdf Always requires choose

All name matching ignores case. Prefixes must start at the beginning of the filename stem and end at the end of the stem or before whitespace, _, -, ., (, [, (, or 【. Thus A001 never matches A0010_spec.txt or XA001_spec.txt. A key may itself contain separators: A-001 can match A-001_spec.txt.

filechecklist plan examples/ids.csv --header --source examples/files --output delivery-by-id --task ids.fctask --mode prefix

Options and exit codes

  • --source: repeat for several source folders. Subfolders are included; links are skipped.
  • --column 2: 1-based column containing the name or ID. Default 1.
  • --header: treat the first nonblank row as a header; otherwise all rows are data.
  • --delimiter comma|tab: .csv defaults to comma; other extensions default to tab. Input must be UTF-8, optionally with BOM.
  • --rename-conflicts: explicitly allow names such as file (2).txt. Existing files are never replaced.
  • --json: machine-readable rows, candidates, plans, scan errors and copy results. Structured keys and status identifiers stay English. Built-in diagnostics and CSV report labels follow the process UI culture (Chinese for Chinese locales, English otherwise); error output is plain text. Use JSON status identifiers for automation rather than localized CSV labels. Original request cells remain unchanged.
Exit Meaning
0 Plan ready, or requested operation completed with no unresolved rows
2 Missing / unconfirmed / changed rows, incomplete scan or target conflicts remain; partial delivery may have succeeded
1 File, task or operational error
64 Invalid command or options; copy without --yes

plan writes a new task file; it refuses to replace an existing task. scan, choose and copy update the supplied task. Candidate numbers refer to the last saved scan: newly appearing files cannot silently change the selected path. A changed or vanished candidate requires another review.

Task files and CSV reports include the selected file paths.