@powerhousedao/codegen 0.28.1 → 0.29.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.
@@ -1,7 +1,7 @@
1
1
  #! /usr/bin/env node
2
- import { init } from './init.js';
2
+ import { initCli } from './init.js';
3
3
 
4
- init().catch((e) => {
4
+ initCli().catch((e) => {
5
5
  throw e;
6
6
  });
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/create-lib/index.ts"],"names":[],"mappings":";;;AAIA,IAAK,EAAA,CAAE,KAAM,CAAA,CAAC,CAAe,KAAA;AAC3B,EAAM,MAAA,CAAA;AACR,CAAC,CAAA","file":"index.js","sourcesContent":["#! /usr/bin/env node\n\nimport { init } from \"./init\";\n\ninit().catch((e: unknown) => {\n throw e;\n});\n"]}
1
+ {"version":3,"sources":["../../src/create-lib/index.ts"],"names":[],"mappings":";;;AAIA,OAAQ,EAAA,CAAE,KAAM,CAAA,CAAC,CAAe,KAAA;AAC9B,EAAM,MAAA,CAAA;AACR,CAAC,CAAA","file":"index.js","sourcesContent":["#! /usr/bin/env node\n\nimport { initCli } from \"./init\";\n\ninitCli().catch((e: unknown) => {\n throw e;\n});\n"]}
@@ -2,13 +2,26 @@ import { execSync } from 'child_process';
2
2
  import enquirer from 'enquirer';
3
3
  import fs from 'node:fs';
4
4
  import path from 'path';
5
- import { parseArgs, configSpec, promptDirectories } from '../utils/cli.js';
6
- import { getPackageManager } from './command.js';
7
- import { DEFAULT_CONFIG } from '@powerhousedao/config/powerhouse';
5
+ import { parseArgs, promptDirectories } from '../utils/cli.js';
6
+ import { getPackageManager } from './utils.js';
8
7
 
9
8
  const BOILERPLATE_REPO = "https://github.com/powerhouse-inc/document-model-boilerplate.git";
10
9
  const packageManager = getPackageManager(process.env.npm_config_user_agent);
11
10
  const isNpm = packageManager === "npm";
11
+ const defaultDirectories = {
12
+ documentModelsDir: "./document-models",
13
+ editorsDir: "./editors"
14
+ };
15
+ const createCommandSpec = {
16
+ "--name": String,
17
+ "--project-name": "--name",
18
+ "--version": String,
19
+ "--interactive": Boolean,
20
+ "--dev": Boolean,
21
+ "--staging": Boolean,
22
+ "-p": "--name",
23
+ "-v": "--version"
24
+ };
12
25
  const { prompt } = enquirer;
13
26
  function buildPackageJson(appPath, projectName) {
14
27
  const packageJson = JSON.parse(
@@ -54,9 +67,36 @@ function runCmd(command) {
54
67
  console.log("\x1B[31m", error, "\x1B[0m");
55
68
  }
56
69
  }
57
- async function init(_args) {
58
- const args = _args || parseArgs(process.argv.slice(2), configSpec);
59
- let projectName = args._.shift();
70
+ function parseVersion(args) {
71
+ if (args.version) {
72
+ return args.version;
73
+ }
74
+ if (args.dev) {
75
+ return "dev";
76
+ } else if (args.staging) {
77
+ return "staging";
78
+ } else {
79
+ return "main";
80
+ }
81
+ }
82
+ function parseVersionArgs(args) {
83
+ return parseVersion({
84
+ version: args["--version"],
85
+ dev: args["--dev"],
86
+ staging: args["--staging"]
87
+ });
88
+ }
89
+ function initCli() {
90
+ const args = parseArgs(process.argv.slice(2), createCommandSpec);
91
+ const options = {
92
+ name: args["--name"] ?? args._.shift(),
93
+ interactive: args["--interactive"] ?? false,
94
+ version: parseVersionArgs(args)
95
+ };
96
+ return init(options);
97
+ }
98
+ async function init(options) {
99
+ let projectName = options.name;
60
100
  if (!projectName) {
61
101
  const result = await prompt([
62
102
  {
@@ -73,7 +113,10 @@ async function init(_args) {
73
113
  }
74
114
  projectName = result.projectName;
75
115
  }
76
- const { documentModelsDir, editorsDir } = args["--interactive"] ? await promptDirectories() : DEFAULT_CONFIG;
116
+ const {
117
+ documentModelsDir,
118
+ editorsDir
119
+ } = options.interactive ? await promptDirectories(defaultDirectories) : defaultDirectories;
77
120
  const appPath = path.join(process.cwd(), projectName);
78
121
  try {
79
122
  fs.mkdirSync(appPath);
@@ -89,12 +132,14 @@ async function init(_args) {
89
132
  }
90
133
  process.exit(1);
91
134
  }
92
- createProject(projectName, documentModelsDir, editorsDir);
135
+ createProject(projectName, documentModelsDir, editorsDir, options.version);
93
136
  }
94
- function createProject(projectName, documentModelsDir, editorsDir) {
137
+ function createProject(projectName, documentModelsDir, editorsDir, version = "main") {
95
138
  try {
96
139
  console.log("\x1B[33m", "Downloading the project structure...", "\x1B[0m");
97
- runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);
140
+ runCmd(
141
+ `git clone --depth 1 -b ${version} ${BOILERPLATE_REPO} ${projectName}`
142
+ );
98
143
  const appPath = path.join(process.cwd(), projectName);
99
144
  process.chdir(appPath);
100
145
  console.log("\x1B[34m", "Installing dependencies...", "\x1B[0m");
@@ -127,6 +172,6 @@ function createProject(projectName, documentModelsDir, editorsDir) {
127
172
  }
128
173
  }
129
174
 
130
- export { init };
175
+ export { createCommandSpec, init, initCli, parseVersion };
131
176
  //# sourceMappingURL=init.js.map
132
177
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/create-lib/init.ts"],"names":[],"mappings":"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","file":"init.js","sourcesContent":["import arg from \"arg\";\nimport { execSync } from \"child_process\";\nimport enquirer from \"enquirer\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport { configSpec, parseArgs, promptDirectories } from \"../utils/cli\";\nimport { getPackageManager } from \"./command\";\n// eslint-disable-next-line\n// @ts-ignore-error\nimport { DEFAULT_CONFIG } from \"@powerhousedao/config/powerhouse\";\n\nconst BOILERPLATE_REPO =\n \"https://github.com/powerhouse-inc/document-model-boilerplate.git\";\n\nconst packageManager = getPackageManager(process.env.npm_config_user_agent);\nconst isNpm = packageManager === \"npm\";\n\nconst { prompt } = enquirer;\n\nfunction buildPackageJson(appPath: string, projectName: string) {\n const packageJson = JSON.parse(\n fs.readFileSync(path.join(appPath, \"package.json\"), \"utf-8\"),\n ) as Record<string, any>;\n const newPackage = {\n ...packageJson,\n name: projectName,\n version: \"1.0.0\",\n description: \"\",\n };\n\n fs.writeFileSync(\n path.join(appPath, \"package.json\"),\n JSON.stringify(newPackage, null, 2),\n \"utf8\",\n );\n}\n\nfunction buildPowerhouseConfig(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n const filePath = path.join(appPath, \"powerhouse.config.json\");\n const packageJson = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as Record<\n string,\n any\n >;\n const newPackage = {\n ...packageJson,\n documentModelsDir,\n editorsDir,\n };\n\n fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), \"utf8\");\n}\n\nfunction buildIndex(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n fs.writeFileSync(\n path.join(appPath, \"index.ts\"),\n `import * as documentModelsExports from '${documentModelsDir}';\n import * as editorsExports from '${editorsDir}';\n\n export const documentModels = Object.values(documentModelsExports);\n export const editors = Object.values(editorsExports);`,\n \"utf8\",\n );\n}\n\nfunction runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n }\n}\n\nexport async function init(_args?: arg.Result<typeof configSpec>) {\n const args = _args || parseArgs(process.argv.slice(2), configSpec);\n\n // checks if a project name was provided\n let projectName = args._.shift();\n if (!projectName) {\n const result = await prompt<{ projectName: string }>([\n {\n type: \"input\",\n name: \"projectName\",\n message: \"What is the project name?\",\n required: true,\n result: (value) => value.toLowerCase().trim().replace(/\\s+/g, \"-\"),\n },\n ]);\n if (!result.projectName) {\n console.log(\"\\x1b[31m\", \"You have to provide name to your app.\");\n process.exit(1);\n }\n projectName = result.projectName;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { documentModelsDir, editorsDir } = args[\"--interactive\"]\n ? await promptDirectories()\n : DEFAULT_CONFIG;\n\n const appPath = path.join(process.cwd(), projectName);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.log(\n \"\\x1b[31m\",\n `The folder ${projectName} already exists in the current directory, please give it another name.`,\n \"\\x1b[0m\",\n );\n } else {\n console.log(err);\n }\n process.exit(1);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n createProject(projectName, documentModelsDir, editorsDir);\n}\n\nfunction createProject(\n projectName: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n try {\n console.log(\"\\x1b[33m\", \"Downloading the project structure...\", \"\\x1b[0m\");\n runCmd(`git clone --depth 1 ${BOILERPLATE_REPO} ${projectName}`);\n\n const appPath = path.join(process.cwd(), projectName);\n process.chdir(appPath);\n\n console.log(\"\\x1b[34m\", \"Installing dependencies...\", \"\\x1b[0m\");\n runCmd(`${packageManager} install`);\n\n fs.rmSync(path.join(appPath, \"./.git\"), { recursive: true });\n runCmd(\"git init\");\n\n try {\n fs.mkdirSync(path.join(appPath, documentModelsDir));\n fs.writeFileSync(path.join(appPath, documentModelsDir, \"index.ts\"), \"\");\n fs.mkdirSync(path.join(appPath, editorsDir));\n fs.writeFileSync(path.join(appPath, editorsDir, \"index.ts\"), \"\");\n } catch (error) {\n if (!(error as Error).message.includes(\"EEXIST\")) {\n throw error;\n }\n }\n buildPackageJson(appPath, projectName);\n buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);\n buildIndex(appPath, documentModelsDir, editorsDir);\n\n console.log(\"\\x1b[32m\", \"The installation is done!\", \"\\x1b[0m\");\n console.log();\n\n console.log(\"\\x1b[34m\", \"You can start by typing:\");\n console.log(` cd ${projectName}`);\n console.log(\n isNpm ? \" npm run generate\" : ` ${packageManager} generate`,\n \"\\x1b[0m\",\n );\n } catch (error) {\n console.log(error);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/create-lib/init.ts"],"names":[],"mappings":"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","file":"init.js","sourcesContent":["import arg from \"arg\";\nimport { execSync } from \"child_process\";\nimport enquirer from \"enquirer\";\nimport fs from \"node:fs\";\nimport path from \"path\";\nimport { parseArgs, promptDirectories } from \"../utils/cli\";\nimport { getPackageManager } from \"./utils\";\n\nconst BOILERPLATE_REPO =\n \"https://github.com/powerhouse-inc/document-model-boilerplate.git\";\n\nconst packageManager = getPackageManager(process.env.npm_config_user_agent);\nconst isNpm = packageManager === \"npm\";\n\nconst defaultDirectories = {\n documentModelsDir: \"./document-models\",\n editorsDir: \"./editors\",\n};\n\nexport const createCommandSpec = {\n \"--name\": String,\n \"--project-name\": \"--name\",\n \"--version\": String,\n \"--interactive\": Boolean,\n \"--dev\": Boolean,\n \"--staging\": Boolean,\n \"-p\": \"--name\",\n \"-v\": \"--version\",\n} as const;\n\nexport interface ICreateProjectOptions {\n name: string | undefined;\n version: string;\n interactive: boolean;\n}\n\nconst { prompt } = enquirer;\n\nfunction buildPackageJson(appPath: string, projectName: string) {\n const packageJson = JSON.parse(\n fs.readFileSync(path.join(appPath, \"package.json\"), \"utf-8\"),\n ) as Record<string, any>;\n const newPackage = {\n ...packageJson,\n name: projectName,\n version: \"1.0.0\",\n description: \"\",\n };\n\n fs.writeFileSync(\n path.join(appPath, \"package.json\"),\n JSON.stringify(newPackage, null, 2),\n \"utf8\",\n );\n}\n\nfunction buildPowerhouseConfig(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n const filePath = path.join(appPath, \"powerhouse.config.json\");\n const packageJson = JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as Record<\n string,\n any\n >;\n const newPackage = {\n ...packageJson,\n documentModelsDir,\n editorsDir,\n };\n\n fs.writeFileSync(filePath, JSON.stringify(newPackage, null, 2), \"utf8\");\n}\n\nfunction buildIndex(\n appPath: string,\n documentModelsDir: string,\n editorsDir: string,\n) {\n fs.writeFileSync(\n path.join(appPath, \"index.ts\"),\n `import * as documentModelsExports from '${documentModelsDir}';\n import * as editorsExports from '${editorsDir}';\n\n export const documentModels = Object.values(documentModelsExports);\n export const editors = Object.values(editorsExports);`,\n \"utf8\",\n );\n}\n\nfunction runCmd(command: string) {\n try {\n execSync(command, { stdio: \"inherit\" });\n } catch (error) {\n console.log(\"\\x1b[31m\", error, \"\\x1b[0m\");\n }\n}\n\nexport function parseVersion(args: {\n version?: string;\n dev?: boolean;\n staging?: boolean;\n}) {\n if (args.version) {\n return args.version;\n }\n if (args.dev) {\n return \"dev\";\n } else if (args.staging) {\n return \"staging\";\n } else {\n return \"main\";\n }\n}\n\nfunction parseVersionArgs(args: arg.Result<typeof createCommandSpec>) {\n return parseVersion({\n version: args[\"--version\"],\n dev: args[\"--dev\"],\n staging: args[\"--staging\"],\n });\n}\n\nexport function initCli() {\n const args = parseArgs(process.argv.slice(2), createCommandSpec);\n const options: ICreateProjectOptions = {\n name: args[\"--name\"] ?? args._.shift(),\n interactive: args[\"--interactive\"] ?? false,\n version: parseVersionArgs(args),\n };\n return init(options);\n}\n\nexport async function init(options: ICreateProjectOptions) {\n // checks if a project name was provided\n let projectName = options.name;\n if (!projectName) {\n const result = await prompt<{ projectName: string }>([\n {\n type: \"input\",\n name: \"projectName\",\n message: \"What is the project name?\",\n required: true,\n result: (value) => value.toLowerCase().trim().replace(/\\s+/g, \"-\"),\n },\n ]);\n if (!result.projectName) {\n console.log(\"\\x1b[31m\", \"You have to provide name to your app.\");\n process.exit(1);\n }\n projectName = result.projectName;\n }\n\n const {\n documentModelsDir,\n editorsDir,\n }: { documentModelsDir: string; editorsDir: string } = options.interactive\n ? await promptDirectories(defaultDirectories)\n : defaultDirectories;\n\n const appPath = path.join(process.cwd(), projectName);\n\n try {\n fs.mkdirSync(appPath);\n } catch (err) {\n if ((err as { code: string }).code === \"EEXIST\") {\n console.log(\n \"\\x1b[31m\",\n `The folder ${projectName} already exists in the current directory, please give it another name.`,\n \"\\x1b[0m\",\n );\n } else {\n console.log(err);\n }\n process.exit(1);\n }\n\n createProject(projectName, documentModelsDir, editorsDir, options.version);\n}\n\nfunction createProject(\n projectName: string,\n documentModelsDir: string,\n editorsDir: string,\n version = \"main\",\n) {\n try {\n console.log(\"\\x1b[33m\", \"Downloading the project structure...\", \"\\x1b[0m\");\n runCmd(\n `git clone --depth 1 -b ${version} ${BOILERPLATE_REPO} ${projectName}`,\n );\n\n const appPath = path.join(process.cwd(), projectName);\n process.chdir(appPath);\n\n console.log(\"\\x1b[34m\", \"Installing dependencies...\", \"\\x1b[0m\");\n runCmd(`${packageManager} install`);\n\n fs.rmSync(path.join(appPath, \"./.git\"), { recursive: true });\n runCmd(\"git init\");\n\n try {\n fs.mkdirSync(path.join(appPath, documentModelsDir));\n fs.writeFileSync(path.join(appPath, documentModelsDir, \"index.ts\"), \"\");\n fs.mkdirSync(path.join(appPath, editorsDir));\n fs.writeFileSync(path.join(appPath, editorsDir, \"index.ts\"), \"\");\n } catch (error) {\n if (!(error as Error).message.includes(\"EEXIST\")) {\n throw error;\n }\n }\n buildPackageJson(appPath, projectName);\n buildPowerhouseConfig(appPath, documentModelsDir, editorsDir);\n buildIndex(appPath, documentModelsDir, editorsDir);\n\n console.log(\"\\x1b[32m\", \"The installation is done!\", \"\\x1b[0m\");\n console.log();\n\n console.log(\"\\x1b[34m\", \"You can start by typing:\");\n console.log(` cd ${projectName}`);\n console.log(\n isNpm ? \" npm run generate\" : ` ${packageManager} generate`,\n \"\\x1b[0m\",\n );\n } catch (error) {\n console.log(error);\n }\n}\n"]}
@@ -15,5 +15,5 @@ function getPackageManager(userAgent) {
15
15
  }
16
16
 
17
17
  export { getPackageManager };
18
- //# sourceMappingURL=command.js.map
19
- //# sourceMappingURL=command.js.map
18
+ //# sourceMappingURL=utils.js.map
19
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/create-lib/utils.ts"],"names":[],"mappings":"AAAA,MAAM,eAAkB,GAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,KAAK,CAAA;AACrD,MAAM,qBAAwB,GAAA,KAAA;AAIvB,SAAS,kBAAkB,SAAoC,EAAA;AACpE,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,qBAAA;AAAA;AAGT,EAAA,MAAM,OAAU,GAAA,SAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AACtC,EAAM,MAAA,UAAA,GAAa,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA;AACpC,EAAM,MAAA,IAAA,GAAO,WAAW,CAAC,CAAA;AAEzB,EAAI,IAAA,eAAA,CAAgB,QAAS,CAAA,IAAsB,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,qBAAA;AAAA;AAEX","file":"utils.js","sourcesContent":["const packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"] as const;\nconst defaultPackageManager = \"npm\";\n\nexport type PackageManager = (typeof packageManagers)[number];\n\nexport function getPackageManager(userAgent?: string): PackageManager {\n if (!userAgent) {\n return defaultPackageManager;\n }\n\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n const name = pkgSpecArr[0];\n\n if (packageManagers.includes(name as PackageManager)) {\n return name as PackageManager;\n } else {\n return defaultPackageManager;\n }\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { D as DocumentTypesMap, g as generate, b as generateEditor, a as generateFromFile, c as generateProcessor, d as generateSubgraph } from './index-CINLSROn.js';
2
- export { configSpec, createProject, generateMock, generateMockTypeFn, getPackageManager, parseArgs, parseConfig, promptDirectories } from './utils.js';
2
+ export { ICreateProjectOptions, configSpec, createProject, createProjectSpec, generateMock, generateMockTypeFn, getPackageManager, parseArgs, parseConfig, parseVersion, promptDirectories } from './utils.js';
3
3
  import 'document-model/document';
4
4
  import '@powerhousedao/config/powerhouse';
5
5
  import 'arg';
package/dist/utils/cli.js CHANGED
@@ -1,4 +1,3 @@
1
- import { DEFAULT_CONFIG } from '@powerhousedao/config/powerhouse';
2
1
  import arg from 'arg';
3
2
  import enquirer from 'enquirer';
4
3
 
@@ -40,19 +39,19 @@ function parseConfig(argv) {
40
39
  }
41
40
  return config;
42
41
  }
43
- async function promptDirectories(config = DEFAULT_CONFIG) {
42
+ async function promptDirectories(defaultDirs) {
44
43
  return prompt([
45
44
  {
46
45
  type: "input",
47
46
  name: "documentModelsDir",
48
47
  message: "Where to place the Document Models?",
49
- initial: config.documentModelsDir
48
+ initial: defaultDirs.documentModelsDir
50
49
  },
51
50
  {
52
51
  type: "input",
53
52
  name: "editorsDir",
54
53
  message: "Where to place the Editors?",
55
- initial: config.editorsDir
54
+ initial: defaultDirs.editorsDir
56
55
  }
57
56
  ]);
58
57
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/cli.ts"],"names":[],"mappings":";;;;AAOA,MAAM,EAAE,QAAW,GAAA,QAAA;AAEZ,MAAM,UAAa,GAAA;AAAA,EACxB,mBAAqB,EAAA,MAAA;AAAA,EACrB,WAAa,EAAA,MAAA;AAAA,EACb,eAAiB,EAAA,OAAA;AAAA,EACjB,eAAiB,EAAA,OAAA;AAAA,EACjB,SAAW,EAAA,OAAA;AAAA,EACX,IAAM,EAAA,eAAA;AAAA,EACN,KAAO,EAAA,eAAA;AAAA,EACP,IAAM,EAAA;AACR;AAEO,SAAS,SAAA,CAA8B,MAAgB,IAAS,EAAA;AACrE,EAAM,MAAA,IAAA,GAAO,IAAI,IAAM,EAAA;AAAA,IACrB,UAAY,EAAA,IAAA;AAAA,IACZ;AAAA,GACD,CAAA;AAED,EAAO,OAAA,IAAA;AACT;AAEO,SAAS,YAAY,IAAgB,EAAA;AAC1C,EAAA,MAAM,SAAoC,EAAC;AAC3C,EAAM,MAAA,IAAA,GAAO,SAAU,CAAA,IAAA,EAAM,UAAU,CAAA;AAEvC,EAAA,IAAI,uBAAuB,IAAM,EAAA;AAC/B,IAAO,MAAA,CAAA,iBAAA,GAAoB,KAAK,mBAAmB,CAAA;AAAA;AAGrD,EAAA,IAAI,eAAe,IAAM,EAAA;AACvB,IAAO,MAAA,CAAA,UAAA,GAAa,KAAK,WAAW,CAAA;AAAA;AAGtC,EAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,UAAa,GAAA,IAAA;AAAA;AAEtB,EAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,WAAc,GAAA,IAAA;AAAA;AAEvB,EAAA,IAAI,aAAa,IAAM,EAAA;AACrB,IAAA,MAAA,CAAO,KAAQ,GAAA,IAAA;AAAA;AAGjB,EAAO,OAAA,MAAA;AACT;AAEA,eAAsB,iBAAA,CACpB,SAA2B,cAC3B,EAAA;AACA,EAAA,OAAO,MAAmE,CAAA;AAAA,IACxE;AAAA,MACE,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,mBAAA;AAAA,MACN,OAAS,EAAA,qCAAA;AAAA,MACT,SAAS,MAAO,CAAA;AAAA,KAClB;AAAA,IACA;AAAA,MACE,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,YAAA;AAAA,MACN,OAAS,EAAA,6BAAA;AAAA,MACT,SAAS,MAAO,CAAA;AAAA;AAClB,GACD,CAAA;AACH","file":"cli.js","sourcesContent":["import {\n DEFAULT_CONFIG,\n PowerhouseConfig,\n} from \"@powerhousedao/config/powerhouse\";\nimport arg from \"arg\";\nimport enquirer from \"enquirer\";\n\nconst { prompt } = enquirer;\n\nexport const configSpec = {\n \"--document-models\": String,\n \"--editors\": String,\n \"--interactive\": Boolean,\n \"--skip-format\": Boolean,\n \"--watch\": Boolean,\n \"-i\": \"--interactive\",\n \"-sf\": \"--skip-format\",\n \"-w\": \"--watch\",\n} as const;\n\nexport function parseArgs<T extends arg.Spec>(argv: string[], spec: T) {\n const args = arg(spec, {\n permissive: true,\n argv,\n });\n\n return args;\n}\n\nexport function parseConfig(argv: string[]) {\n const config: Partial<PowerhouseConfig> = {};\n const args = parseArgs(argv, configSpec);\n\n if (\"--document-models\" in args) {\n config.documentModelsDir = args[\"--document-models\"];\n }\n\n if (\"--editors\" in args) {\n config.editorsDir = args[\"--editors\"];\n }\n\n if (\"--skip-format\" in args) {\n config.skipFormat = true;\n }\n if (\"--interactive\" in args) {\n config.interactive = true;\n }\n if (\"--watch\" in args) {\n config.watch = true;\n }\n\n return config;\n}\n\nexport async function promptDirectories(\n config: PowerhouseConfig = DEFAULT_CONFIG,\n) {\n return prompt<Pick<PowerhouseConfig, \"documentModelsDir\" | \"editorsDir\">>([\n {\n type: \"input\",\n name: \"documentModelsDir\",\n message: \"Where to place the Document Models?\",\n initial: config.documentModelsDir,\n },\n {\n type: \"input\",\n name: \"editorsDir\",\n message: \"Where to place the Editors?\",\n initial: config.editorsDir,\n },\n ]);\n}\n"]}
1
+ {"version":3,"sources":["../../src/utils/cli.ts"],"names":[],"mappings":";;;AAGA,MAAM,EAAE,QAAW,GAAA,QAAA;AAEZ,MAAM,UAAa,GAAA;AAAA,EACxB,mBAAqB,EAAA,MAAA;AAAA,EACrB,WAAa,EAAA,MAAA;AAAA,EACb,eAAiB,EAAA,OAAA;AAAA,EACjB,eAAiB,EAAA,OAAA;AAAA,EACjB,SAAW,EAAA,OAAA;AAAA,EACX,IAAM,EAAA,eAAA;AAAA,EACN,KAAO,EAAA,eAAA;AAAA,EACP,IAAM,EAAA;AACR;AAEO,SAAS,SAAA,CAA8B,MAAgB,IAAS,EAAA;AACrE,EAAM,MAAA,IAAA,GAAO,IAAI,IAAM,EAAA;AAAA,IACrB,UAAY,EAAA,IAAA;AAAA,IACZ;AAAA,GACD,CAAA;AAED,EAAO,OAAA,IAAA;AACT;AAEO,SAAS,YAAY,IAAgB,EAAA;AAC1C,EAAA,MAAM,SAMD,EAAC;AACN,EAAM,MAAA,IAAA,GAAO,SAAU,CAAA,IAAA,EAAM,UAAU,CAAA;AAEvC,EAAA,IAAI,uBAAuB,IAAM,EAAA;AAC/B,IAAO,MAAA,CAAA,iBAAA,GAAoB,KAAK,mBAAmB,CAAA;AAAA;AAGrD,EAAA,IAAI,eAAe,IAAM,EAAA;AACvB,IAAO,MAAA,CAAA,UAAA,GAAa,KAAK,WAAW,CAAA;AAAA;AAGtC,EAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,UAAa,GAAA,IAAA;AAAA;AAEtB,EAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,IAAA,MAAA,CAAO,WAAc,GAAA,IAAA;AAAA;AAEvB,EAAA,IAAI,aAAa,IAAM,EAAA;AACrB,IAAA,MAAA,CAAO,KAAQ,GAAA,IAAA;AAAA;AAGjB,EAAO,OAAA,MAAA;AACT;AAOA,eAAsB,kBAAkB,WAAiC,EAAA;AACvE,EAAA,OAAO,MAA2B,CAAA;AAAA,IAChC;AAAA,MACE,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,mBAAA;AAAA,MACN,OAAS,EAAA,qCAAA;AAAA,MACT,SAAS,WAAY,CAAA;AAAA,KACvB;AAAA,IACA;AAAA,MACE,IAAM,EAAA,OAAA;AAAA,MACN,IAAM,EAAA,YAAA;AAAA,MACN,OAAS,EAAA,6BAAA;AAAA,MACT,SAAS,WAAY,CAAA;AAAA;AACvB,GACD,CAAA;AACH","file":"cli.js","sourcesContent":["import arg from \"arg\";\nimport enquirer from \"enquirer\";\n\nconst { prompt } = enquirer;\n\nexport const configSpec = {\n \"--document-models\": String,\n \"--editors\": String,\n \"--interactive\": Boolean,\n \"--skip-format\": Boolean,\n \"--watch\": Boolean,\n \"-i\": \"--interactive\",\n \"-sf\": \"--skip-format\",\n \"-w\": \"--watch\",\n} as const;\n\nexport function parseArgs<T extends arg.Spec>(argv: string[], spec: T) {\n const args = arg(spec, {\n permissive: true,\n argv,\n });\n\n return args;\n}\n\nexport function parseConfig(argv: string[]) {\n const config: Partial<{\n documentModelsDir?: string;\n editorsDir?: string;\n skipFormat?: boolean;\n interactive?: boolean;\n watch?: boolean;\n }> = {};\n const args = parseArgs(argv, configSpec);\n\n if (\"--document-models\" in args) {\n config.documentModelsDir = args[\"--document-models\"];\n }\n\n if (\"--editors\" in args) {\n config.editorsDir = args[\"--editors\"];\n }\n\n if (\"--skip-format\" in args) {\n config.skipFormat = true;\n }\n if (\"--interactive\" in args) {\n config.interactive = true;\n }\n if (\"--watch\" in args) {\n config.watch = true;\n }\n\n return config;\n}\n\ntype DefaultDirectories = {\n documentModelsDir: string;\n editorsDir: string;\n};\n\nexport async function promptDirectories(defaultDirs: DefaultDirectories) {\n return prompt<DefaultDirectories>([\n {\n type: \"input\",\n name: \"documentModelsDir\",\n message: \"Where to place the Document Models?\",\n initial: defaultDirs.documentModelsDir,\n },\n {\n type: \"input\",\n name: \"editorsDir\",\n message: \"Where to place the Editors?\",\n initial: defaultDirs.editorsDir,\n },\n ]);\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  export * from './cli.js';
2
2
  export * from './mock.js';
3
- export { init as createProject } from '../create-lib/init.js';
4
- export { getPackageManager } from '../create-lib/command.js';
3
+ export { init as createProject, createCommandSpec as createProjectSpec, parseVersion } from '../create-lib/init.js';
4
+ export { getPackageManager } from '../create-lib/utils.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
package/dist/utils.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { PowerhouseConfig } from '@powerhousedao/config/powerhouse';
2
1
  import arg from 'arg';
3
2
  import { generateMock as generateMock$1 } from '@anatine/zod-mock';
4
3
 
@@ -13,16 +12,46 @@ declare const configSpec: {
13
12
  readonly "-w": "--watch";
14
13
  };
15
14
  declare function parseArgs<T extends arg.Spec>(argv: string[], spec: T): arg.Result<T>;
16
- declare function parseConfig(argv: string[]): Partial<PowerhouseConfig>;
17
- declare function promptDirectories(config?: PowerhouseConfig): Promise<Pick<PowerhouseConfig, "documentModelsDir" | "editorsDir">>;
15
+ declare function parseConfig(argv: string[]): Partial<{
16
+ documentModelsDir?: string;
17
+ editorsDir?: string;
18
+ skipFormat?: boolean;
19
+ interactive?: boolean;
20
+ watch?: boolean;
21
+ }>;
22
+ type DefaultDirectories = {
23
+ documentModelsDir: string;
24
+ editorsDir: string;
25
+ };
26
+ declare function promptDirectories(defaultDirs: DefaultDirectories): Promise<DefaultDirectories>;
18
27
 
19
28
  type generateMockTypeFn = typeof generateMock$1;
20
29
  declare const generateMock: generateMockTypeFn;
21
30
 
22
- declare function init(_args?: arg.Result<typeof configSpec>): Promise<void>;
31
+ declare const createCommandSpec: {
32
+ readonly "--name": StringConstructor;
33
+ readonly "--project-name": "--name";
34
+ readonly "--version": StringConstructor;
35
+ readonly "--interactive": BooleanConstructor;
36
+ readonly "--dev": BooleanConstructor;
37
+ readonly "--staging": BooleanConstructor;
38
+ readonly "-p": "--name";
39
+ readonly "-v": "--version";
40
+ };
41
+ interface ICreateProjectOptions {
42
+ name: string | undefined;
43
+ version: string;
44
+ interactive: boolean;
45
+ }
46
+ declare function parseVersion(args: {
47
+ version?: string;
48
+ dev?: boolean;
49
+ staging?: boolean;
50
+ }): string;
51
+ declare function init(options: ICreateProjectOptions): Promise<void>;
23
52
 
24
53
  declare const packageManagers: readonly ["npm", "yarn", "pnpm", "bun"];
25
54
  type PackageManager = (typeof packageManagers)[number];
26
55
  declare function getPackageManager(userAgent?: string): PackageManager;
27
56
 
28
- export { configSpec, init as createProject, generateMock, type generateMockTypeFn, getPackageManager, parseArgs, parseConfig, promptDirectories };
57
+ export { type ICreateProjectOptions, configSpec, init as createProject, createCommandSpec as createProjectSpec, generateMock, type generateMockTypeFn, getPackageManager, parseArgs, parseConfig, parseVersion, promptDirectories };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/codegen",
3
- "version": "0.28.1",
3
+ "version": "0.29.0",
4
4
  "license": "AGPL-3.0-only",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -33,7 +33,7 @@
33
33
  "execa": "^8.0.1",
34
34
  "hygen": "^6.2.11",
35
35
  "prettier": "^3.4.2",
36
- "@powerhousedao/config": "1.5.0",
36
+ "@powerhousedao/config": "1.6.0",
37
37
  "document-model": "2.15.0"
38
38
  },
39
39
  "devDependencies": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/create-lib/command.ts"],"names":[],"mappings":"AAAA,MAAM,eAAkB,GAAA,CAAC,KAAO,EAAA,MAAA,EAAQ,QAAQ,KAAK,CAAA;AACrD,MAAM,qBAAwB,GAAA,KAAA;AAIvB,SAAS,kBAAkB,SAAoC,EAAA;AACpE,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAO,OAAA,qBAAA;AAAA;AAGT,EAAA,MAAM,OAAU,GAAA,SAAA,CAAU,KAAM,CAAA,GAAG,EAAE,CAAC,CAAA;AACtC,EAAM,MAAA,UAAA,GAAa,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA;AACpC,EAAM,MAAA,IAAA,GAAO,WAAW,CAAC,CAAA;AAEzB,EAAI,IAAA,eAAA,CAAgB,QAAS,CAAA,IAAsB,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA;AAAA,GACF,MAAA;AACL,IAAO,OAAA,qBAAA;AAAA;AAEX","file":"command.js","sourcesContent":["const packageManagers = [\"npm\", \"yarn\", \"pnpm\", \"bun\"] as const;\nconst defaultPackageManager = \"npm\";\n\nexport type PackageManager = (typeof packageManagers)[number];\n\nexport function getPackageManager(userAgent?: string): PackageManager {\n if (!userAgent) {\n return defaultPackageManager;\n }\n\n const pkgSpec = userAgent.split(\" \")[0];\n const pkgSpecArr = pkgSpec.split(\"/\");\n const name = pkgSpecArr[0];\n\n if (packageManagers.includes(name as PackageManager)) {\n return name as PackageManager;\n } else {\n return defaultPackageManager;\n }\n}\n"]}