@phila/cli 0.0.12 → 0.0.13

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 (102) hide show
  1. package/README.md +6 -6
  2. package/dist/commands/config.d.ts +2 -0
  3. package/dist/commands/config.d.ts.map +1 -1
  4. package/dist/commands/config.js.map +1 -1
  5. package/dist/commands/deploy.d.ts +8 -2
  6. package/dist/commands/deploy.d.ts.map +1 -1
  7. package/dist/commands/deploy.js +18 -7
  8. package/dist/commands/deploy.js.map +1 -1
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +30 -3
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/ship.js +2 -2
  13. package/dist/commands/ship.js.map +1 -1
  14. package/dist/commands/validate.d.ts.map +1 -1
  15. package/dist/commands/validate.js +17 -7
  16. package/dist/commands/validate.js.map +1 -1
  17. package/dist/templates/_shared/city.config.json.tmpl +1 -0
  18. package/dist/templates/_shared/webapp-cdk-package.json.tmpl +0 -3
  19. package/dist/templates/lambda-api-nodejs/README.md.tmpl +5 -5
  20. package/dist/templates/lambda-api-nodejs/apps/__lambdaName__/index.ts +1 -1
  21. package/dist/templates/lambda-api-nodejs/apps/__lambdaName__/package.json +2 -2
  22. package/dist/templates/lambda-api-nodejs/cdk/app.ts.tmpl +2 -2
  23. package/dist/templates/lambda-api-nodejs/cdk/cdk.json +1 -1
  24. package/dist/templates/lambda-api-nodejs/cdk/package.json +0 -3
  25. package/dist/templates/lambda-api-nodejs/package.json.tmpl +3 -0
  26. package/dist/templates/lambda-dynamo-api/README.md.tmpl +5 -5
  27. package/dist/templates/lambda-dynamo-api/apps/__lambdaName__/index.ts +1 -1
  28. package/dist/templates/lambda-dynamo-api/apps/__lambdaName__/package.json +2 -2
  29. package/dist/templates/lambda-dynamo-api/cdk/app.ts.tmpl +2 -2
  30. package/dist/templates/lambda-dynamo-api/cdk/cdk.json +3 -8
  31. package/dist/templates/lambda-dynamo-api/cdk/package.json +0 -3
  32. package/dist/templates/lambda-dynamo-api/package.json.tmpl +3 -0
  33. package/dist/templates/lambda-postgres-api/README.md.tmpl +6 -6
  34. package/dist/templates/lambda-postgres-api/apps/__lambdaName__/index.ts +1 -1
  35. package/dist/templates/lambda-postgres-api/apps/__lambdaName__/package.json +2 -2
  36. package/dist/templates/lambda-postgres-api/cdk/app.ts.tmpl +2 -2
  37. package/dist/templates/lambda-postgres-api/cdk/cdk.json +1 -1
  38. package/dist/templates/lambda-postgres-api/cdk/package.json +0 -3
  39. package/dist/templates/lambda-postgres-api/package.json.tmpl +3 -0
  40. package/dist/templates/static-site/README.md.tmpl +2 -2
  41. package/dist/templates/static-site/cdk/app.ts.tmpl +2 -2
  42. package/dist/templates/static-site/cdk/cdk.json +1 -1
  43. package/dist/templates/static-site/cdk/package.json +0 -3
  44. package/dist/templates/static-site/frontend/README.md +4 -4
  45. package/dist/templates/static-site/package.json.tmpl +4 -1
  46. package/dist/templates/webapp-ecs-dotnet/README.md.tmpl +4 -4
  47. package/dist/templates/webapp-ecs-dotnet/cdk/app.ts.tmpl +3 -4
  48. package/dist/templates/webapp-ecs-dotnet/cdk/cdk.json +1 -1
  49. package/dist/templates/webapp-ecs-dotnet/package.json.tmpl +6 -3
  50. package/dist/templates/webapp-ecs-node/README.md.tmpl +7 -7
  51. package/dist/templates/webapp-ecs-node/apps/api/Dockerfile +5 -5
  52. package/dist/templates/webapp-ecs-node/cdk/app.ts.tmpl +3 -4
  53. package/dist/templates/webapp-ecs-node/cdk/cdk.json +1 -1
  54. package/dist/templates/webapp-ecs-node/package.json.tmpl +7 -4
  55. package/dist/templates/webapp-ecs-postgres-dotnet/README.md.tmpl +5 -5
  56. package/dist/templates/webapp-ecs-postgres-dotnet/cdk/app.ts.tmpl +3 -4
  57. package/dist/templates/webapp-ecs-postgres-dotnet/cdk/cdk.json +1 -1
  58. package/dist/templates/webapp-ecs-postgres-dotnet/package.json.tmpl +6 -3
  59. package/dist/templates/webapp-ecs-postgres-node/README.md.tmpl +8 -8
  60. package/dist/templates/webapp-ecs-postgres-node/apps/api/Dockerfile +5 -5
  61. package/dist/templates/webapp-ecs-postgres-node/cdk/app.ts.tmpl +3 -4
  62. package/dist/templates/webapp-ecs-postgres-node/cdk/cdk.json +1 -1
  63. package/dist/templates/webapp-ecs-postgres-node/package.json.tmpl +7 -4
  64. package/dist/templates/webapp-lambda-dotnet/README.md.tmpl +4 -4
  65. package/dist/templates/webapp-lambda-dotnet/cdk/app.ts.tmpl +3 -4
  66. package/dist/templates/webapp-lambda-dotnet/cdk/cdk.json +1 -1
  67. package/dist/templates/webapp-lambda-dotnet/package.json.tmpl +6 -3
  68. package/dist/templates/webapp-lambda-dynamo-dotnet/README.md.tmpl +4 -4
  69. package/dist/templates/webapp-lambda-dynamo-dotnet/cdk/app.ts.tmpl +3 -4
  70. package/dist/templates/webapp-lambda-dynamo-dotnet/cdk/cdk.json +1 -1
  71. package/dist/templates/webapp-lambda-dynamo-dotnet/package.json.tmpl +6 -3
  72. package/dist/templates/webapp-lambda-dynamo-node/README.md.tmpl +6 -6
  73. package/dist/templates/webapp-lambda-dynamo-node/apps/api/index.ts +1 -1
  74. package/dist/templates/webapp-lambda-dynamo-node/cdk/app.ts.tmpl +3 -4
  75. package/dist/templates/webapp-lambda-dynamo-node/cdk/cdk.json +1 -1
  76. package/dist/templates/webapp-lambda-dynamo-node/package.json.tmpl +6 -3
  77. package/dist/templates/webapp-lambda-node/README.md.tmpl +5 -5
  78. package/dist/templates/webapp-lambda-node/apps/api/index.ts +1 -1
  79. package/dist/templates/webapp-lambda-node/cdk/app.ts.tmpl +3 -4
  80. package/dist/templates/webapp-lambda-node/cdk/cdk.json +1 -1
  81. package/dist/templates/webapp-lambda-node/package.json.tmpl +6 -3
  82. package/dist/templates/webapp-lambda-postgres-dotnet/README.md.tmpl +5 -5
  83. package/dist/templates/webapp-lambda-postgres-dotnet/cdk/app.ts.tmpl +3 -4
  84. package/dist/templates/webapp-lambda-postgres-dotnet/cdk/cdk.json +1 -1
  85. package/dist/templates/webapp-lambda-postgres-dotnet/package.json.tmpl +6 -3
  86. package/dist/templates/webapp-lambda-postgres-node/README.md.tmpl +7 -7
  87. package/dist/templates/webapp-lambda-postgres-node/apps/api/index.ts +1 -1
  88. package/dist/templates/webapp-lambda-postgres-node/cdk/app.ts.tmpl +3 -4
  89. package/dist/templates/webapp-lambda-postgres-node/cdk/cdk.json +1 -1
  90. package/dist/templates/webapp-lambda-postgres-node/package.json.tmpl +6 -3
  91. package/dist/utils/install-env.d.ts +1 -1
  92. package/dist/utils/install-env.js +6 -6
  93. package/dist/utils/install-env.js.map +1 -1
  94. package/dist/utils/package-manager.d.ts +34 -2
  95. package/dist/utils/package-manager.d.ts.map +1 -1
  96. package/dist/utils/package-manager.js +102 -15
  97. package/dist/utils/package-manager.js.map +1 -1
  98. package/dist/utils/template.d.ts +7 -0
  99. package/dist/utils/template.d.ts.map +1 -1
  100. package/dist/utils/template.js +8 -1
  101. package/dist/utils/template.js.map +1 -1
  102. package/package.json +1 -1
@@ -22,23 +22,23 @@ View the [architecture diagram](https://github.com/CityOfPhiladelphia/phila-ctl/
22
22
 
23
23
  ```bash
24
24
  # Install dependencies
25
- npm install
25
+ {{installCommand}}
26
26
 
27
27
  # Build all packages
28
- npm run build
28
+ {{runScriptPrefix}} build
29
29
  ```
30
30
 
31
31
  ### Development
32
32
 
33
33
  ```bash
34
34
  # Run frontend dev server
35
- npm run dev
35
+ {{runScriptPrefix}} dev
36
36
 
37
37
  # Build frontend for production
38
- npm run build:frontend
38
+ {{runScriptPrefix}} build:frontend
39
39
 
40
40
  # Build API
41
- npm run build:api
41
+ {{runScriptPrefix}} build:api
42
42
  ```
43
43
 
44
44
  ### Deployment
@@ -115,7 +115,7 @@ The API uses [@phila/philaroute](https://www.npmjs.com/package/@phila/philaroute
115
115
  1. Install a PostgreSQL client:
116
116
  ```bash
117
117
  cd apps/api
118
- npm install pg @types/pg @aws-sdk/client-secrets-manager
118
+ {{addCommand}} pg @types/pg @aws-sdk/client-secrets-manager
119
119
  ```
120
120
 
121
121
  2. The template includes example connection code in `apps/api/index.ts`
@@ -141,7 +141,7 @@ Credentials are stored in AWS Secrets Manager. The secret contains:
141
141
  To use serverless Aurora instead of provisioned RDS, update `cdk/app.ts`:
142
142
 
143
143
  ```typescript
144
- new LambdaPostgresApi(stack, '{{appName}}Api', {
144
+ new LambdaPostgresApi(stack as any, '{{appName}}Api', {
145
145
  ...context,
146
146
  serverless: true, // Enable serverless Aurora
147
147
  });
@@ -12,7 +12,7 @@
12
12
  * by the CDK construct.
13
13
  */
14
14
 
15
- import type { APIGWV1Payload } from '@phila/philaroute/dist/types';
15
+ import type { APIGWV1Payload } from '@phila/philaroute/dist/aws';
16
16
  import type { RestAccumulator } from '@phila/philaroute/dist/types';
17
17
  import { Router, http, validate } from '@phila/philaroute';
18
18
  import { getPool } from '@phila/db-postgres';
@@ -37,14 +37,13 @@ const stack = new Stack(app, '{{appName}}-' + environment, {
37
37
  stackName: '{{appName}}-' + environment,
38
38
  });
39
39
 
40
- // Create the StaticSite construct for the Nuxt frontend
41
- new StaticSite(stack, '{{appName}}Site', {
40
+ // Scope as any so linked @phila/constructs resolves to a single Construct type at runtime.
41
+ new StaticSite(stack as any, '{{appName}}Site', {
42
42
  ...context,
43
43
  assetDir: '../frontend/dist',
44
44
  });
45
45
 
46
- // Create the LambdaPostgresApi construct for the API backend with PostgreSQL
47
- new LambdaPostgresApi(stack, '{{appName}}Api', {
46
+ new LambdaPostgresApi(stack as any, '{{appName}}Api', {
48
47
  ...context,
49
48
  apiId: 'api',
50
49
  runtime: 'nodejs20',
@@ -1,5 +1,5 @@
1
1
  {
2
- "app": "npx ts-node --prefer-ts-exts app.ts",
2
+ "app": "{{execCommand}} ts-node --prefer-ts-exts app.ts",
3
3
  "watch": {
4
4
  "include": ["**"],
5
5
  "exclude": [
@@ -5,9 +5,9 @@
5
5
  "private": true,
6
6
  "scripts": {
7
7
  "build": "{{buildCommand}}",
8
- "build:frontend": "cd frontend && npm run build",
9
- "build:api": "cd apps/api && npm run build",
10
- "dev": "cd frontend && npm run dev",
8
+ "build:frontend": "cd frontend && {{runScriptPrefix}} build",
9
+ "build:api": "cd apps/api && {{runScriptPrefix}} build",
10
+ "dev": "cd frontend && {{runScriptPrefix}} dev",
11
11
  "test": "{{testCommand}}",
12
12
  "synth": "cd cdk && cdk synth",
13
13
  "deploy": "cd cdk && cdk deploy",
@@ -21,5 +21,8 @@
21
21
  "devDependencies": {
22
22
  "@types/node": "^20.10.0",
23
23
  "typescript": "^5.3.0"
24
+ },
25
+ "overrides": {
26
+ "constructs": "10.4.4"
24
27
  }
25
28
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Returns env for running install in a project. If frontend/.npmrc exists,
2
+ * Returns env for running install in a project. If project root .npmrc exists,
3
3
  * sets NPM_CONFIG_USERCONFIG. If that file references NPM_FONTAWESOME_TOKEN
4
4
  * and the token is not in the environment, prompts for it.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // ABOUTME: Prepares env for project install (frontend .npmrc and Font Awesome token)
2
+ // ABOUTME: Prepares env for project install (root .npmrc and Font Awesome token)
3
3
  // ABOUTME: Used by validate, init, and deploy when running install
4
4
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
5
  if (k2 === undefined) k2 = k;
@@ -43,17 +43,17 @@ const fs = __importStar(require("fs"));
43
43
  const path = __importStar(require("path"));
44
44
  const inquirer_1 = __importDefault(require("inquirer"));
45
45
  /**
46
- * Returns env for running install in a project. If frontend/.npmrc exists,
46
+ * Returns env for running install in a project. If project root .npmrc exists,
47
47
  * sets NPM_CONFIG_USERCONFIG. If that file references NPM_FONTAWESOME_TOKEN
48
48
  * and the token is not in the environment, prompts for it.
49
49
  */
50
50
  async function prepareInstallEnv(projectDir) {
51
- const frontendNpmrc = path.join(projectDir, 'frontend', '.npmrc');
52
- if (!fs.existsSync(frontendNpmrc)) {
51
+ const rootNpmrc = path.join(projectDir, '.npmrc');
52
+ if (!fs.existsSync(rootNpmrc)) {
53
53
  return process.env;
54
54
  }
55
- let installEnv = { ...process.env, NPM_CONFIG_USERCONFIG: frontendNpmrc };
56
- const npmrcContent = fs.readFileSync(frontendNpmrc, 'utf-8');
55
+ let installEnv = { ...process.env, NPM_CONFIG_USERCONFIG: rootNpmrc };
56
+ const npmrcContent = fs.readFileSync(rootNpmrc, 'utf-8');
57
57
  if (npmrcContent.includes('NPM_FONTAWESOME_TOKEN') && !process.env.NPM_FONTAWESOME_TOKEN) {
58
58
  const { token } = await inquirer_1.default.prompt([
59
59
  {
@@ -1 +1 @@
1
- {"version":3,"file":"install-env.js","sourceRoot":"","sources":["../../src/utils/install-env.ts"],"names":[],"mappings":";AAAA,qFAAqF;AACrF,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWnE,8CAoBC;AA7BD,uCAAyB;AACzB,2CAA6B;AAC7B,wDAAgC;AAEhC;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,aAAa,EAAE,CAAC;IAC7F,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACzF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAoB;YACzD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,+EAA+E;gBACxF,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CACtB,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,8CAA8C;aACvF;SACF,CAAC,CAAC;QACH,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,qBAAqB,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"install-env.js","sourceRoot":"","sources":["../../src/utils/install-env.ts"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,mEAAmE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWnE,8CAoBC;AA7BD,uCAAyB;AACzB,2CAA6B;AAC7B,wDAAgC;AAEhC;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC;IACrB,CAAC;IACD,IAAI,UAAU,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,SAAS,EAAE,CAAC;IACzF,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzD,IAAI,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACzF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAoB;YACzD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,+EAA+E;gBACxF,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CACtB,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,8CAA8C;aACvF;SACF,CAAC,CAAC;QACH,UAAU,GAAG,EAAE,GAAG,UAAU,EAAE,qBAAqB,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,9 +1,17 @@
1
1
  export type PackageManager = 'npm' | 'pnpm' | 'yarn';
2
2
  /**
3
- * Detects which package manager is being used in a directory
4
- * by checking for lock files. Priority: pnpm > yarn > npm
3
+ * Detects which package manager is being used in a directory.
4
+ * Lock files take precedence (they indicate which manager was used to install).
5
+ * pnpm-workspace.yaml is only used when no lock file exists (e.g. template default).
5
6
  */
6
7
  export declare function detectPackageManager(dir: string): PackageManager;
8
+ /**
9
+ * Resolves package manager: uses config.packageManager when set and valid,
10
+ * otherwise detects from lock files in dir.
11
+ */
12
+ export declare function resolvePackageManager(config: {
13
+ packageManager?: string;
14
+ } | null, dir: string): PackageManager;
7
15
  /**
8
16
  * Gets the install command for a package manager
9
17
  */
@@ -26,6 +34,30 @@ export declare function getWorkspaceBuildCommand(pm: PackageManager, script?: st
26
34
  * (runs test script across all workspaces, with --if-present support for npm)
27
35
  */
28
36
  export declare function getWorkspaceTestCommand(pm: PackageManager, ifPresent?: boolean): string;
37
+ /**
38
+ * Gets the command to run a local binary (exec equivalent).
39
+ * Use for e.g. tsc, ts-node: getExecCommand(pm) + ' tsc'
40
+ */
41
+ export declare function getExecCommand(pm: PackageManager): string;
42
+ /**
43
+ * Gets the prefix to run a script (e.g. "pnpm run") for use in shell commands.
44
+ * Use for e.g. "cd frontend && " + getRunScriptPrefix(pm) + " build"
45
+ */
46
+ export declare function getRunScriptPrefix(pm: PackageManager): string;
47
+ /**
48
+ * Gets the CI install command (frozen lockfile, no update).
49
+ * Use in Dockerfiles and CI for reproducible installs.
50
+ */
51
+ export declare function getCiCommand(pm: PackageManager): string;
52
+ /**
53
+ * Gets the CI install command for production dependencies only.
54
+ */
55
+ export declare function getCiProdCommand(pm: PackageManager): string;
56
+ /**
57
+ * Gets the lockfile name for the package manager.
58
+ * Use in Dockerfile COPY so the right lockfile is included.
59
+ */
60
+ export declare function getLockfileName(pm: PackageManager): string;
29
61
  /**
30
62
  * Gets the CDK command for a package manager
31
63
  * Returns the command to run CDK from the local node_modules
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAsBhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAUxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAW3E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAUvF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAUxD"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAYhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC1C,GAAG,EAAE,MAAM,GACV,cAAc,CAMhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAU5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAUxD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAW3E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpF;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAUvF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAUzD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAU7D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAUvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAU3D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAU1D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM,CAUxD"}
@@ -36,38 +36,51 @@ var __importStar = (this && this.__importStar) || (function () {
36
36
  })();
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.detectPackageManager = detectPackageManager;
39
+ exports.resolvePackageManager = resolvePackageManager;
39
40
  exports.getInstallCommand = getInstallCommand;
40
41
  exports.getAddCommand = getAddCommand;
41
42
  exports.getBuildCommand = getBuildCommand;
42
43
  exports.getWorkspaceBuildCommand = getWorkspaceBuildCommand;
43
44
  exports.getWorkspaceTestCommand = getWorkspaceTestCommand;
45
+ exports.getExecCommand = getExecCommand;
46
+ exports.getRunScriptPrefix = getRunScriptPrefix;
47
+ exports.getCiCommand = getCiCommand;
48
+ exports.getCiProdCommand = getCiProdCommand;
49
+ exports.getLockfileName = getLockfileName;
44
50
  exports.getCdkCommand = getCdkCommand;
45
51
  const path = __importStar(require("path"));
46
52
  const fs = __importStar(require("fs-extra"));
47
53
  /**
48
- * Detects which package manager is being used in a directory
49
- * by checking for lock files. Priority: pnpm > yarn > npm
54
+ * Detects which package manager is being used in a directory.
55
+ * Lock files take precedence (they indicate which manager was used to install).
56
+ * pnpm-workspace.yaml is only used when no lock file exists (e.g. template default).
50
57
  */
51
58
  function detectPackageManager(dir) {
52
- // Check for pnpm lock files (highest priority)
59
+ const npmLock = path.join(dir, 'package-lock.json');
53
60
  const pnpmLock = path.join(dir, 'pnpm-lock.yaml');
61
+ const yarnLock = path.join(dir, 'yarn.lock');
54
62
  const pnpmWorkspace = path.join(dir, 'pnpm-workspace.yaml');
55
- if (fs.existsSync(pnpmLock) || fs.existsSync(pnpmWorkspace)) {
63
+ if (fs.existsSync(npmLock))
64
+ return 'npm';
65
+ if (fs.existsSync(pnpmLock))
56
66
  return 'pnpm';
57
- }
58
- // Check for yarn lock file
59
- const yarnLock = path.join(dir, 'yarn.lock');
60
- if (fs.existsSync(yarnLock)) {
67
+ if (fs.existsSync(yarnLock))
61
68
  return 'yarn';
62
- }
63
- // Check for npm lock file
64
- const npmLock = path.join(dir, 'package-lock.json');
65
- if (fs.existsSync(npmLock)) {
66
- return 'npm';
67
- }
68
- // Default to npm if no lock file found
69
+ if (fs.existsSync(pnpmWorkspace))
70
+ return 'pnpm';
69
71
  return 'npm';
70
72
  }
73
+ /**
74
+ * Resolves package manager: uses config.packageManager when set and valid,
75
+ * otherwise detects from lock files in dir.
76
+ */
77
+ function resolvePackageManager(config, dir) {
78
+ const configured = config?.packageManager;
79
+ if (configured === 'npm' || configured === 'pnpm' || configured === 'yarn') {
80
+ return configured;
81
+ }
82
+ return detectPackageManager(dir);
83
+ }
71
84
  /**
72
85
  * Gets the install command for a package manager
73
86
  */
@@ -142,6 +155,80 @@ function getWorkspaceTestCommand(pm, ifPresent) {
142
155
  return `npm test --workspaces${ifPresent ? ' --if-present' : ''}`;
143
156
  }
144
157
  }
158
+ /**
159
+ * Gets the command to run a local binary (exec equivalent).
160
+ * Use for e.g. tsc, ts-node: getExecCommand(pm) + ' tsc'
161
+ */
162
+ function getExecCommand(pm) {
163
+ switch (pm) {
164
+ case 'pnpm':
165
+ return 'pnpm exec';
166
+ case 'yarn':
167
+ return 'yarn exec';
168
+ case 'npm':
169
+ default:
170
+ return 'npx';
171
+ }
172
+ }
173
+ /**
174
+ * Gets the prefix to run a script (e.g. "pnpm run") for use in shell commands.
175
+ * Use for e.g. "cd frontend && " + getRunScriptPrefix(pm) + " build"
176
+ */
177
+ function getRunScriptPrefix(pm) {
178
+ switch (pm) {
179
+ case 'pnpm':
180
+ return 'pnpm run';
181
+ case 'yarn':
182
+ return 'yarn run';
183
+ case 'npm':
184
+ default:
185
+ return 'npm run';
186
+ }
187
+ }
188
+ /**
189
+ * Gets the CI install command (frozen lockfile, no update).
190
+ * Use in Dockerfiles and CI for reproducible installs.
191
+ */
192
+ function getCiCommand(pm) {
193
+ switch (pm) {
194
+ case 'pnpm':
195
+ return 'pnpm install --frozen-lockfile';
196
+ case 'yarn':
197
+ return 'yarn install --frozen-lockfile';
198
+ case 'npm':
199
+ default:
200
+ return 'npm ci';
201
+ }
202
+ }
203
+ /**
204
+ * Gets the CI install command for production dependencies only.
205
+ */
206
+ function getCiProdCommand(pm) {
207
+ switch (pm) {
208
+ case 'pnpm':
209
+ return 'pnpm install --frozen-lockfile --prod';
210
+ case 'yarn':
211
+ return 'yarn install --frozen-lockfile --production';
212
+ case 'npm':
213
+ default:
214
+ return 'npm ci --omit=dev';
215
+ }
216
+ }
217
+ /**
218
+ * Gets the lockfile name for the package manager.
219
+ * Use in Dockerfile COPY so the right lockfile is included.
220
+ */
221
+ function getLockfileName(pm) {
222
+ switch (pm) {
223
+ case 'pnpm':
224
+ return 'pnpm-lock.yaml';
225
+ case 'yarn':
226
+ return 'yarn.lock';
227
+ case 'npm':
228
+ default:
229
+ return 'package-lock.json';
230
+ }
231
+ }
145
232
  /**
146
233
  * Gets the CDK command for a package manager
147
234
  * Returns the command to run CDK from the local node_modules
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/utils/package-manager.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,13 @@ export interface TemplateVariables {
19
19
  packageManager: string;
20
20
  buildCommand: string;
21
21
  testCommand: string;
22
+ execCommand: string;
23
+ runScriptPrefix: string;
24
+ installCommand: string;
25
+ addCommand: string;
26
+ ciCommand: string;
27
+ ciProdCommand: string;
28
+ lockfileName: string;
22
29
  }
23
30
  /**
24
31
  * Copy a template file or directory to a destination, applying variable substitutions
@@ -1 +1 @@
1
- {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf"}
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -121,7 +121,14 @@ function applyVariables(content, variables) {
121
121
  .replace(/\{\{prodVpc\}\}/g, variables.prodVpc)
122
122
  .replace(/\{\{packageManager\}\}/g, variables.packageManager)
123
123
  .replace(/\{\{buildCommand\}\}/g, variables.buildCommand)
124
- .replace(/\{\{testCommand\}\}/g, variables.testCommand);
124
+ .replace(/\{\{testCommand\}\}/g, variables.testCommand)
125
+ .replace(/\{\{execCommand\}\}/g, variables.execCommand)
126
+ .replace(/\{\{runScriptPrefix\}\}/g, variables.runScriptPrefix)
127
+ .replace(/\{\{installCommand\}\}/g, variables.installCommand)
128
+ .replace(/\{\{addCommand\}\}/g, variables.addCommand)
129
+ .replace(/\{\{ciCommand\}\}/g, variables.ciCommand)
130
+ .replace(/\{\{ciProdCommand\}\}/g, variables.ciProdCommand)
131
+ .replace(/\{\{lockfileName\}\}/g, variables.lockfileName);
125
132
  }
126
133
  /**
127
134
  * Replace __variable__ patterns in paths (for directory names)
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,qEAAqE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BrE,oCAiBC;AA9CD,6CAA+B;AAC/B,2CAA6B;AAyB7B;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,YAAoB,EACpB,QAAgB,EAChB,SAA4B;IAE5B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,MAAM,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,iDAAiD;QACjD,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7B,MAAM,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,MAAc,EACd,OAAe,EACf,SAA4B;IAE5B,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE3D,wBAAwB;QACxB,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,QAAgB,EAChB,SAA4B;IAE5B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,SAA4B;IACnE,IAAI,MAAM,GAAG,OAAO;SACjB,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC;SAC9C,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,eAAe,CAAC;SAC9D,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAExD,+GAA+G;IAC/G,mFAAmF;IACnF,IAAI,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE,IAAI,SAAS,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAChG,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrF,CAAC;IAED,+GAA+G;IAC/G,mFAAmF;IACnF,IAAI,SAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE,IAAI,SAAS,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAChG,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACrF,CAAC;IAED,OAAO,MAAM;SACV,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,UAAU,CAAC;SACpD,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,CAAC;SACxC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC;SAC9C,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,UAAU,CAAC;SACpD,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC,cAAc,CAAC;SAC5D,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,eAAe,CAAC;SAC9D,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;SAClE,OAAO,CAAC,0BAA0B,EAAE,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;SAC5E,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,UAAU,CAAC;SACpD,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC;SAC5C,OAAO,CAAC,sBAAsB,EAAE,SAAS,CAAC,WAAW,CAAC;SACtD,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC;SAC9C,OAAO,CAAC,sBAAsB,EAAE,SAAS,CAAC,WAAW,CAAC;SACtD,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,OAAO,CAAC;SAC9C,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC,cAAc,CAAC;SAC5D,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC,YAAY,CAAC;SACxD,OAAO,CAAC,sBAAsB,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,SAA4B;IACtE,OAAO,IAAI;SACR,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC;SAC1C,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@phila/cli",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "CLI tool for City of Philadelphia AWS infrastructure",
5
5
  "main": "dist/index.js",
6
6
  "bin": {