@emdzej/csfs-cli 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -9,22 +9,51 @@
9
9
  * which is how a backend bug becomes a failing command rather than a blank
10
10
  * page.
11
11
  */
12
- import { writeFile } from "node:fs/promises";
12
+ import { readFile, writeFile } from "node:fs/promises";
13
+ import { existsSync } from "node:fs";
14
+ import { resolve } from "node:path";
15
+ import { createRequire } from "node:module";
13
16
  import { Command } from "@commander-js/extra-typings";
14
17
  import chalk from "chalk";
18
+ import ignore from "ignore";
15
19
  import { walkFileSystem } from "@emdzej/csfs-core";
16
20
  import { httpFileSystem } from "@emdzej/csfs-http";
17
- import { buildManifest, formatManifest, MANIFEST_FILE } from "@emdzej/csfs-manifest";
21
+ import { buildManifest, formatManifest, ManifestIndex, MANIFEST_FILE, } from "@emdzej/csfs-manifest";
18
22
  import { nodeFileSystem } from "@emdzej/csfs-node";
19
23
  import { withArchives } from "@emdzej/csfs-zip";
24
+ /** Where `manifest` looks for ignore patterns when not told otherwise. */
25
+ const IGNORE_FILE = ".csfsignore";
20
26
  /** A URL means HTTP; anything else is a directory. */
21
- function open(source) {
27
+ function open(source, opts = {}) {
22
28
  const remote = source.startsWith("http://") || source.startsWith("https://");
23
- return withArchives(remote ? httpFileSystem(source) : nodeFileSystem(source));
29
+ const caseInsensitive = opts.caseInsensitive ?? false;
30
+ return withArchives(remote ? httpFileSystem(source, { caseInsensitive }) : nodeFileSystem(source), { caseInsensitive });
24
31
  }
32
+ /**
33
+ * A gitignore-style matcher over csfs paths.
34
+ *
35
+ * `ignore` wants a repo-relative path with no leading slash, and a trailing
36
+ * slash to mean "this is a directory" — csfs paths are rooted and carry
37
+ * neither, so the translation happens here rather than at three call sites.
38
+ */
39
+ function matcher(patterns) {
40
+ const ig = ignore().add(patterns);
41
+ return (path, isDir) => {
42
+ const rel = path.replace(/^\/+/, "");
43
+ if (rel === "")
44
+ return false;
45
+ return ig.ignores(isDir ? `${rel}/` : rel);
46
+ };
47
+ }
48
+ /*
49
+ * Read from package.json rather than written here. The literal had drifted a
50
+ * release behind, which is the only thing a hand-maintained version string
51
+ * reliably does.
52
+ */
53
+ const { version } = createRequire(import.meta.url)("../package.json");
25
54
  const program = new Command("csfs")
26
55
  .description("Client-side file system tooling")
27
- .version("0.1.0");
56
+ .version(version);
28
57
  program
29
58
  .command("manifest")
30
59
  .description("describe a directory so it can be served over static HTTP")
@@ -34,6 +63,7 @@ program
34
63
  .option("--pretty", "indent the JSON — larger, but readable in a diff", false)
35
64
  .option("--archive <spec...>", "an archive to read in place: <archive>:<serves>[:basename]. " +
36
65
  "Repeatable. Without this an archive is just a file.")
66
+ .option("--ignore <file>", `gitignore-style patterns to leave out (default: <dir>/${IGNORE_FILE} if present)`)
37
67
  .option("-n, --dry-run", "print the summary and stop", false)
38
68
  .action(async (dir, opts) => {
39
69
  const fs = nodeFileSystem(dir);
@@ -42,6 +72,24 @@ program
42
72
  process.exitCode = 1;
43
73
  return;
44
74
  }
75
+ let ignoreFile = opts.ignore;
76
+ if (!ignoreFile) {
77
+ const candidate = resolve(dir, IGNORE_FILE);
78
+ if (existsSync(candidate))
79
+ ignoreFile = candidate;
80
+ }
81
+ else if (!existsSync(ignoreFile)) {
82
+ console.error(chalk.red(`${ignoreFile}: no such file`));
83
+ process.exitCode = 1;
84
+ return;
85
+ }
86
+ // csfs's own two metadata files are never described. A manifest that
87
+ // carries its own size is wrong the moment it is written, and an ignore
88
+ // file is an instruction to the builder rather than part of the tree.
89
+ const patterns = [`${MANIFEST_FILE}\n${IGNORE_FILE}\n`];
90
+ if (ignoreFile)
91
+ patterns.push(await readFile(ignoreFile, "utf8"));
92
+ const ignored = matcher(patterns.join("\n"));
45
93
  const archives = (opts.archive ?? []).map((spec) => {
46
94
  const [archive, serves, entry] = spec.split(":");
47
95
  if (!archive || !serves) {
@@ -58,9 +106,8 @@ program
58
106
  ...(opts.label !== undefined ? { label: opts.label } : {}),
59
107
  builtAt: new Date().toISOString(),
60
108
  ...(archives.length > 0 ? { archives } : {}),
61
- // A manifest that describes itself carries a size that is wrong the
62
- // moment it is written, which is worse than its absence.
63
- filter: (path) => !path.endsWith(`/${MANIFEST_FILE}`),
109
+ filter: (path) => !ignored(path, false),
110
+ prune: (path) => ignored(path, true),
64
111
  onProgress: (found, path) => {
65
112
  if (Date.now() - last < 250)
66
113
  return;
@@ -79,6 +126,24 @@ program
79
126
  for (const a of archives) {
80
127
  console.log(chalk.dim(` archive ${a.archive} serves ${a.serves} (${a.entry ?? "relative"})`));
81
128
  }
129
+ if (ignoreFile)
130
+ console.log(chalk.dim(` ignoring per ${ignoreFile}`));
131
+ // Reported whether or not anyone asked, because the hazard is not visible
132
+ // from here: a consumer opening this tree with `caseInsensitive` can reach
133
+ // only the first of each group, and a tree that quietly hides a file looks
134
+ // exactly like one that does not contain it.
135
+ const collisions = new ManifestIndex(manifest, { caseInsensitive: true }).caseCollisions;
136
+ if (collisions.length > 0) {
137
+ console.warn(chalk.yellow(`\n${collisions.length} path${collisions.length === 1 ? "" : "s"} differ only in case. ` +
138
+ `Read case-insensitively, only the first of each group is reachable:`));
139
+ for (const group of collisions.slice(0, 10)) {
140
+ console.warn(chalk.yellow(` ${group[0]}`) + chalk.dim(` ← ${group.slice(1).join(", ")}`));
141
+ }
142
+ if (collisions.length > 10) {
143
+ console.warn(chalk.dim(` … and ${collisions.length - 10} more`));
144
+ }
145
+ console.warn("");
146
+ }
82
147
  if (opts.dryRun) {
83
148
  console.log(chalk.dim("--dry-run: nothing written."));
84
149
  return;
@@ -86,7 +151,8 @@ program
86
151
  const out = opts.out ?? `${dir.replace(/\/+$/, "")}/${MANIFEST_FILE}`;
87
152
  await writeFile(out, text);
88
153
  console.log(`written to ${chalk.bold(out)}`);
89
- console.log(chalk.dim("\nServe the directory with Range support and point a client at its URL."));
154
+ console.log(chalk.dim("\nServe the directory and point a client at its URL. A host that honours " +
155
+ "`Range` is read a slice at a time; one that does not is read whole files."));
90
156
  });
91
157
  program
92
158
  .command("ls")
@@ -94,8 +160,9 @@ program
94
160
  .argument("<source>", "a directory, or an http(s) URL")
95
161
  .argument("[path]", "path within the tree", "/")
96
162
  .option("-R, --recursive", "walk the whole subtree", false)
163
+ .option("-i, --case-insensitive", "match names without regard to case", false)
97
164
  .action(async (source, path, opts) => {
98
- const fs = open(source);
165
+ const fs = open(source, { caseInsensitive: opts.caseInsensitive });
99
166
  if (opts.recursive) {
100
167
  let files = 0;
101
168
  let bytes = 0;
@@ -131,8 +198,9 @@ program
131
198
  .description("write a file to stdout, including one inside an archive")
132
199
  .argument("<source>", "a directory, or an http(s) URL")
133
200
  .argument("<path>", "path within the tree; may use archive.zip#/inner")
134
- .action(async (source, path) => {
135
- const file = await open(source).file(path);
201
+ .option("-i, --case-insensitive", "match names without regard to case", false)
202
+ .action(async (source, path, opts) => {
203
+ const file = await open(source, { caseInsensitive: opts.caseInsensitive }).file(path);
136
204
  if (!file) {
137
205
  console.error(chalk.red(`${path}: not found`));
138
206
  process.exitCode = 1;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emdzej/csfs-cli",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Build csfs manifests, and inspect a tree through any backend",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,11 +33,12 @@
33
33
  "@commander-js/extra-typings": "^15.0.0",
34
34
  "chalk": "^6.0.0",
35
35
  "commander": "^15.0.0",
36
- "@emdzej/csfs-http": "0.1.1",
37
- "@emdzej/csfs-core": "0.1.1",
38
- "@emdzej/csfs-manifest": "0.1.1",
39
- "@emdzej/csfs-node": "0.1.1",
40
- "@emdzej/csfs-zip": "0.1.1"
36
+ "ignore": "^7.0.9",
37
+ "@emdzej/csfs-http": "0.2.0",
38
+ "@emdzej/csfs-manifest": "0.2.0",
39
+ "@emdzej/csfs-core": "0.2.0",
40
+ "@emdzej/csfs-zip": "0.2.0",
41
+ "@emdzej/csfs-node": "0.2.0"
41
42
  },
42
43
  "devDependencies": {
43
44
  "@types/node": "^22.13.1"