@powerhousedao/codegen 0.31.1 → 0.31.2

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.
@@ -6,8 +6,7 @@ import { parseArgs, promptDirectories } from '../utils/cli.js';
6
6
  import { getPackageManager } from './utils.js';
7
7
 
8
8
  const BOILERPLATE_REPO = "https://github.com/powerhouse-inc/document-model-boilerplate.git";
9
- const packageManager = getPackageManager(process.env.npm_config_user_agent);
10
- const isNpm = packageManager === "npm";
9
+ const envPackageManager = getPackageManager(process.env.npm_config_user_agent);
11
10
  const defaultDirectories = {
12
11
  documentModelsDir: "./document-models",
13
12
  editorsDir: "./editors"
@@ -20,7 +19,8 @@ const createCommandSpec = {
20
19
  "--dev": Boolean,
21
20
  "--staging": Boolean,
22
21
  "-p": "--name",
23
- "-v": "--version"
22
+ "-v": "--version",
23
+ "--package-manager": String
24
24
  };
25
25
  const { prompt } = enquirer;
26
26
  function buildPackageJson(appPath, projectName) {
@@ -132,9 +132,16 @@ async function init(options) {
132
132
  }
133
133
  process.exit(1);
134
134
  }
135
- createProject(projectName, documentModelsDir, editorsDir, options.version);
135
+ createProject(
136
+ projectName,
137
+ documentModelsDir,
138
+ editorsDir,
139
+ options.version,
140
+ options.packageManager
141
+ );
136
142
  }
137
- function createProject(projectName, documentModelsDir, editorsDir, version = "main") {
143
+ function createProject(projectName, documentModelsDir, editorsDir, version = "main", packageManager) {
144
+ packageManager = packageManager ?? envPackageManager;
138
145
  try {
139
146
  console.log("\x1B[33m", "Downloading the project structure...", "\x1B[0m");
140
147
  runCmd(
@@ -142,10 +149,14 @@ function createProject(projectName, documentModelsDir, editorsDir, version = "ma
142
149
  );
143
150
  const appPath = path.join(process.cwd(), projectName);
144
151
  process.chdir(appPath);
145
- console.log("\x1B[34m", "Installing dependencies...", "\x1B[0m");
146
- runCmd(`${packageManager} install`);
152
+ console.log(
153
+ "\x1B[34m",
154
+ `Installing dependencies with ${packageManager}...`,
155
+ "\x1B[0m"
156
+ );
157
+ runCmd(`${packageManager} install --loglevel error`);
147
158
  fs.rmSync(path.join(appPath, "./.git"), { recursive: true });
148
- runCmd("git init");
159
+ runCmd(`git init -b ${version}`);
149
160
  try {
150
161
  fs.mkdirSync(path.join(appPath, documentModelsDir));
151
162
  fs.writeFileSync(path.join(appPath, documentModelsDir, "index.ts"), "");
@@ -161,12 +172,6 @@ function createProject(projectName, documentModelsDir, editorsDir, version = "ma
161
172
  buildIndex(appPath, documentModelsDir, editorsDir);
162
173
  console.log("\x1B[32m", "The installation is done!", "\x1B[0m");
163
174
  console.log();
164
- console.log("\x1B[34m", "You can start by typing:");
165
- console.log(` cd ${projectName}`);
166
- console.log(
167
- isNpm ? " npm run generate" : ` ${packageManager} generate`,
168
- "\x1B[0m"
169
- );
170
175
  } catch (error) {
171
176
  console.log(error);
172
177
  }
@@ -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 { 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"]}
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 envPackageManager = getPackageManager(process.env.npm_config_user_agent);\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 \"--package-manager\": String,\n} as const;\n\nexport interface ICreateProjectOptions {\n name: string | undefined;\n version: string;\n interactive: boolean;\n packageManager?: string;\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(\n projectName,\n documentModelsDir,\n editorsDir,\n options.version,\n options.packageManager,\n );\n}\n\nfunction createProject(\n projectName: string,\n documentModelsDir: string,\n editorsDir: string,\n version = \"main\",\n packageManager?: string,\n) {\n packageManager = packageManager ?? envPackageManager;\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(\n \"\\x1b[34m\",\n `Installing dependencies with ${packageManager}...`,\n \"\\x1b[0m\",\n );\n runCmd(`${packageManager} install --loglevel error`);\n\n fs.rmSync(path.join(appPath, \"./.git\"), { recursive: true });\n runCmd(`git init -b ${version}`);\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 } catch (error) {\n console.log(error);\n }\n}\n"]}
package/dist/utils.d.ts CHANGED
@@ -37,11 +37,13 @@ declare const createCommandSpec: {
37
37
  readonly "--staging": BooleanConstructor;
38
38
  readonly "-p": "--name";
39
39
  readonly "-v": "--version";
40
+ readonly "--package-manager": StringConstructor;
40
41
  };
41
42
  interface ICreateProjectOptions {
42
43
  name: string | undefined;
43
44
  version: string;
44
45
  interactive: boolean;
46
+ packageManager?: string;
45
47
  }
46
48
  declare function parseVersion(args: {
47
49
  version?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/codegen",
3
- "version": "0.31.1",
3
+ "version": "0.31.2",
4
4
  "license": "AGPL-3.0-only",
5
5
  "private": false,
6
6
  "main": "dist/index.js",
@@ -41,7 +41,7 @@
41
41
  "esbuild-fix-imports-plugin": "^1.0.7",
42
42
  "graphql": "^16.8.1",
43
43
  "husky": "^8.0.3",
44
- "@powerhousedao/scalars": "1.18.0"
44
+ "@powerhousedao/scalars": "1.19.0"
45
45
  },
46
46
  "scripts": {
47
47
  "check-types": "tsc --build",