create-gitcms 0.1.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.
Files changed (86) hide show
  1. package/README.md +49 -0
  2. package/dist/args.d.ts +14 -0
  3. package/dist/args.d.ts.map +1 -0
  4. package/dist/args.js +119 -0
  5. package/dist/args.js.map +1 -0
  6. package/dist/cli.d.ts +4 -0
  7. package/dist/cli.d.ts.map +1 -0
  8. package/dist/cli.js +529 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/core/content-detection.d.ts +2 -0
  11. package/dist/core/content-detection.d.ts.map +1 -0
  12. package/dist/core/content-detection.js +2 -0
  13. package/dist/core/content-detection.js.map +1 -0
  14. package/dist/core/filesystem.d.ts +11 -0
  15. package/dist/core/filesystem.d.ts.map +1 -0
  16. package/dist/core/filesystem.js +93 -0
  17. package/dist/core/filesystem.js.map +1 -0
  18. package/dist/core/framework-detection.d.ts +17 -0
  19. package/dist/core/framework-detection.d.ts.map +1 -0
  20. package/dist/core/framework-detection.js +60 -0
  21. package/dist/core/framework-detection.js.map +1 -0
  22. package/dist/core/frontmatter-inference.d.ts +2 -0
  23. package/dist/core/frontmatter-inference.d.ts.map +1 -0
  24. package/dist/core/frontmatter-inference.js +2 -0
  25. package/dist/core/frontmatter-inference.js.map +1 -0
  26. package/dist/core/git.d.ts +4 -0
  27. package/dist/core/git.d.ts.map +1 -0
  28. package/dist/core/git.js +45 -0
  29. package/dist/core/git.js.map +1 -0
  30. package/dist/core/gitcms-config.d.ts +153 -0
  31. package/dist/core/gitcms-config.d.ts.map +1 -0
  32. package/dist/core/gitcms-config.js +436 -0
  33. package/dist/core/gitcms-config.js.map +1 -0
  34. package/dist/core/mode-resolution.d.ts +22 -0
  35. package/dist/core/mode-resolution.d.ts.map +1 -0
  36. package/dist/core/mode-resolution.js +136 -0
  37. package/dist/core/mode-resolution.js.map +1 -0
  38. package/dist/core/paths.d.ts +6 -0
  39. package/dist/core/paths.d.ts.map +1 -0
  40. package/dist/core/paths.js +19 -0
  41. package/dist/core/paths.js.map +1 -0
  42. package/dist/core/planner.d.ts +8 -0
  43. package/dist/core/planner.d.ts.map +1 -0
  44. package/dist/core/planner.js +295 -0
  45. package/dist/core/planner.js.map +1 -0
  46. package/dist/core/site-roots.d.ts +5 -0
  47. package/dist/core/site-roots.d.ts.map +1 -0
  48. package/dist/core/site-roots.js +32 -0
  49. package/dist/core/site-roots.js.map +1 -0
  50. package/dist/core/sitemap-discovery.d.ts +2 -0
  51. package/dist/core/sitemap-discovery.d.ts.map +1 -0
  52. package/dist/core/sitemap-discovery.js +2 -0
  53. package/dist/core/sitemap-discovery.js.map +1 -0
  54. package/dist/core/vendor/content-detection.d.ts +51 -0
  55. package/dist/core/vendor/content-detection.d.ts.map +1 -0
  56. package/dist/core/vendor/content-detection.js +462 -0
  57. package/dist/core/vendor/content-detection.js.map +1 -0
  58. package/dist/core/vendor/frontmatter-inference.d.ts +5 -0
  59. package/dist/core/vendor/frontmatter-inference.d.ts.map +1 -0
  60. package/dist/core/vendor/frontmatter-inference.js +234 -0
  61. package/dist/core/vendor/frontmatter-inference.js.map +1 -0
  62. package/dist/core/vendor/paths.d.ts +3 -0
  63. package/dist/core/vendor/paths.d.ts.map +1 -0
  64. package/dist/core/vendor/paths.js +23 -0
  65. package/dist/core/vendor/paths.js.map +1 -0
  66. package/dist/core/vendor/sitemap.d.ts +10 -0
  67. package/dist/core/vendor/sitemap.d.ts.map +1 -0
  68. package/dist/core/vendor/sitemap.js +162 -0
  69. package/dist/core/vendor/sitemap.js.map +1 -0
  70. package/dist/core/writer.d.ts +4 -0
  71. package/dist/core/writer.d.ts.map +1 -0
  72. package/dist/core/writer.js +45 -0
  73. package/dist/core/writer.js.map +1 -0
  74. package/dist/index.d.ts +5 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +5 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/prompts.d.ts +12 -0
  79. package/dist/prompts.d.ts.map +1 -0
  80. package/dist/prompts.js +41 -0
  81. package/dist/prompts.js.map +1 -0
  82. package/dist/types.d.ts +74 -0
  83. package/dist/types.d.ts.map +1 -0
  84. package/dist/types.js +2 -0
  85. package/dist/types.js.map +1 -0
  86. package/package.json +54 -0
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # create-gitcms
2
+
3
+ Bootstrap [`gitcms.md`](https://gitcms.dev/docs/getting-started/configuration) for a GitCMS project.
4
+
5
+ `create-gitcms` helps you detect site roots, infer Markdown collections, and generate the initial config for single-site repos and monorepos.
6
+
7
+ GitCMS is a Git-powered CMS with a Notion-like editor. Every save becomes a real Git commit. Learn more at [gitcms.dev](https://gitcms.dev).
8
+
9
+ ## Usage
10
+
11
+ The intended entrypoint is:
12
+
13
+ ```bash
14
+ npm init gitcms
15
+ ```
16
+
17
+ You can also run it directly:
18
+
19
+ ```bash
20
+ npx create-gitcms@latest
21
+ ```
22
+
23
+ Examples:
24
+
25
+ ```bash
26
+ npm init gitcms
27
+ npm init gitcms -- --yes
28
+ npm init gitcms -- --website-url https://example.com
29
+ npm init gitcms -- --mode monorepo --site-root apps/docs --site-root apps/blog
30
+ ```
31
+
32
+ ## What it does
33
+
34
+ - Detects whether the repo looks like a single-site setup or a monorepo
35
+ - Finds likely Markdown or MDX collections
36
+ - Infers frontmatter shape from sample content
37
+ - Suggests framework-aware defaults for media and content paths
38
+ - Writes `gitcms.md` in the correct location
39
+
40
+ ## Product Links
41
+
42
+ - App: [gitcms.dev](https://gitcms.dev)
43
+ - Docs: [gitcms.dev/docs](https://gitcms.dev/docs)
44
+ - Quick Start: [gitcms.dev/docs/getting-started/quick-start](https://gitcms.dev/docs/getting-started/quick-start)
45
+
46
+ ## Notes
47
+
48
+ - `gitcms.md` is meant to be generated by GitCMS tooling, not hand-written.
49
+ - For product setup after config generation, continue in the GitCMS web app.
package/dist/args.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { InitMode } from './types.js';
2
+ export interface CliFlags {
3
+ repoPath: string;
4
+ mode: InitMode;
5
+ siteRoots: Array<string>;
6
+ websiteUrls: Array<string>;
7
+ yes: boolean;
8
+ dryRun: boolean;
9
+ force: boolean;
10
+ help: boolean;
11
+ }
12
+ export declare function parseCliFlags(argv: Array<string>): CliFlags;
13
+ export declare function usageText(): string;
14
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACxB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC1B,GAAG,EAAE,OAAO,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;CACd;AA8BD,wBAAgB,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,YAqFhD;AAED,wBAAgB,SAAS,WAqBxB"}
package/dist/args.js ADDED
@@ -0,0 +1,119 @@
1
+ function takeValue(arg, argv, index) {
2
+ const eqIndex = arg.indexOf('=');
3
+ if (eqIndex !== -1) {
4
+ return {
5
+ value: arg.slice(eqIndex + 1),
6
+ nextIndex: index,
7
+ };
8
+ }
9
+ const next = argv[index + 1];
10
+ if (!next || next.startsWith('-')) {
11
+ throw new Error(`Missing value for ${arg}`);
12
+ }
13
+ return {
14
+ value: next,
15
+ nextIndex: index + 1,
16
+ };
17
+ }
18
+ function parseMode(raw) {
19
+ if (raw === 'auto' || raw === 'single' || raw === 'monorepo') {
20
+ return raw;
21
+ }
22
+ throw new Error(`Invalid mode: ${raw}. Expected auto, single, or monorepo.`);
23
+ }
24
+ export function parseCliFlags(argv) {
25
+ const flags = {
26
+ repoPath: '.',
27
+ mode: 'auto',
28
+ siteRoots: [],
29
+ websiteUrls: [],
30
+ yes: false,
31
+ dryRun: false,
32
+ force: false,
33
+ help: false,
34
+ };
35
+ let repoPathWasSet = false;
36
+ let index = 0;
37
+ while (index < argv.length) {
38
+ const arg = argv[index];
39
+ if (!arg) {
40
+ index += 1;
41
+ continue;
42
+ }
43
+ if (arg === 'init') {
44
+ index += 1;
45
+ continue;
46
+ }
47
+ if (arg === '--help' || arg === '-h') {
48
+ flags.help = true;
49
+ index += 1;
50
+ continue;
51
+ }
52
+ if (arg === '--yes') {
53
+ flags.yes = true;
54
+ index += 1;
55
+ continue;
56
+ }
57
+ if (arg === '--dry-run') {
58
+ flags.dryRun = true;
59
+ index += 1;
60
+ continue;
61
+ }
62
+ if (arg === '--force') {
63
+ flags.force = true;
64
+ index += 1;
65
+ continue;
66
+ }
67
+ if (arg === '--mode' || arg.startsWith('--mode=')) {
68
+ const parsed = takeValue(arg, argv, index);
69
+ flags.mode = parseMode(parsed.value);
70
+ index = parsed.nextIndex + 1;
71
+ continue;
72
+ }
73
+ if (arg === '--site-root' || arg.startsWith('--site-root=')) {
74
+ const parsed = takeValue(arg, argv, index);
75
+ flags.siteRoots.push(parsed.value);
76
+ index = parsed.nextIndex + 1;
77
+ continue;
78
+ }
79
+ if (arg === '--website-url' || arg.startsWith('--website-url=')) {
80
+ const parsed = takeValue(arg, argv, index);
81
+ flags.websiteUrls.push(parsed.value);
82
+ index = parsed.nextIndex + 1;
83
+ continue;
84
+ }
85
+ if (arg.startsWith('-')) {
86
+ throw new Error(`Unknown flag: ${arg}`);
87
+ }
88
+ if (flags.repoPath !== '.' || repoPathWasSet) {
89
+ throw new Error('Only one repository path argument is supported');
90
+ }
91
+ repoPathWasSet = true;
92
+ flags.repoPath = arg;
93
+ index += 1;
94
+ }
95
+ return flags;
96
+ }
97
+ export function usageText() {
98
+ return [
99
+ 'Usage: create-gitcms [repoPath] [options]',
100
+ '',
101
+ 'Options:',
102
+ ' --mode <auto|single|monorepo> Initialization mode (default: auto)',
103
+ ' --site-root <path> Site root path (repeatable for monorepo)',
104
+ ' --website-url <value> Repeatable: <url> global, multi-url by order, or <siteRoot>=<url>',
105
+ ' --yes Non-interactive mode, accept inferred defaults',
106
+ ' --dry-run Preview inferred config paths without writing files',
107
+ ' --force Overwrite existing gitcms.md files',
108
+ ' --help, -h Show help',
109
+ '',
110
+ 'Examples:',
111
+ ' npm init gitcms',
112
+ ' npm init gitcms -- --yes',
113
+ ' npm init gitcms -- --website-url https://example.com',
114
+ ' npm init gitcms -- --mode monorepo --site-root apps/v4 --site-root deprecated/www --website-url https://v4.example.com --website-url https://legacy.example.com',
115
+ ' npm init gitcms -- --mode monorepo --website-url apps/v4=https://v4.example.com --website-url deprecated/www=https://legacy.example.com',
116
+ ' npm init gitcms -- --mode monorepo --site-root apps/docs --site-root apps/blog',
117
+ ].join('\n');
118
+ }
119
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAaA,SAAS,SAAS,CAAC,GAAW,EAAE,IAAmB,EAAE,KAAa;IAChE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;YAC7B,SAAS,EAAE,KAAK;SACjB,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,KAAK,GAAG,CAAC;KACrB,CAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QAC7D,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,uCAAuC,CAAC,CAAA;AAC9E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAmB;IAC/C,MAAM,KAAK,GAAa;QACtB,QAAQ,EAAE,GAAG;QACb,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK;KACZ,CAAA;IACD,IAAI,cAAc,GAAG,KAAK,CAAA;IAE1B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAA;YACjB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAA;YAChB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;YACnB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;YAClB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpC,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;YAC5B,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClC,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;YAC5B,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;YAC1C,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACpC,KAAK,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAA;YAC5B,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAA;QACzC,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,KAAK,GAAG,IAAI,cAAc,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACnE,CAAC;QAED,cAAc,GAAG,IAAI,CAAA;QACrB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAA;QACpB,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,2CAA2C;QAC3C,EAAE;QACF,UAAU;QACV,uEAAuE;QACvE,6EAA6E;QAC7E,sGAAsG;QACtG,mFAAmF;QACnF,wFAAwF;QACxF,uEAAuE;QACvE,8CAA8C;QAC9C,EAAE;QACF,WAAW;QACX,mBAAmB;QACnB,4BAA4B;QAC5B,wDAAwD;QACxD,mKAAmK;QACnK,2IAA2I;QAC3I,kFAAkF;KACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ declare function run(): Promise<void>;
3
+ export { run };
4
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8dA,iBAAe,GAAG,kBA6PjB;AAaD,OAAO,EAAE,GAAG,EAAE,CAAA"}