@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.
- package/dist/create-lib/init.js +19 -14
- package/dist/create-lib/init.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/package.json +2 -2
package/dist/create-lib/init.js
CHANGED
|
@@ -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
|
|
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(
|
|
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(
|
|
146
|
-
|
|
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(
|
|
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.
|
|
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.
|
|
44
|
+
"@powerhousedao/scalars": "1.19.0"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
47
|
"check-types": "tsc --build",
|