@factiii/stack 0.1.201 → 0.7.1

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 (61) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +95 -403
  3. package/bin/stack +334 -334
  4. package/dist/cli/dev-sync.js +16 -16
  5. package/dist/plugins/addons/auth/index.d.ts.map +1 -1
  6. package/dist/plugins/addons/auth/index.js +31 -12
  7. package/dist/plugins/addons/auth/index.js.map +1 -1
  8. package/dist/plugins/addons/auth/scanfix/secrets.d.ts +3 -0
  9. package/dist/plugins/addons/auth/scanfix/secrets.d.ts.map +1 -1
  10. package/dist/plugins/addons/auth/scanfix/secrets.js +54 -19
  11. package/dist/plugins/addons/auth/scanfix/secrets.js.map +1 -1
  12. package/dist/plugins/addons/auth/scanfix/validate.d.ts +3 -0
  13. package/dist/plugins/addons/auth/scanfix/validate.d.ts.map +1 -1
  14. package/dist/plugins/addons/auth/scanfix/validate.js +37 -18
  15. package/dist/plugins/addons/auth/scanfix/validate.js.map +1 -1
  16. package/dist/plugins/addons/vercel/index.js +9 -9
  17. package/dist/plugins/addons/vercel/scanfix/config.js +10 -10
  18. package/dist/plugins/addons/vercel/scanfix/token.js +15 -15
  19. package/dist/plugins/approved.json +13 -13
  20. package/dist/plugins/pipelines/aws/index.js +12 -12
  21. package/dist/plugins/pipelines/aws/policies/bootstrap-policy.json +135 -135
  22. package/dist/plugins/pipelines/aws/prod.js +1 -1
  23. package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
  24. package/dist/plugins/pipelines/factiii/index.js +2 -14
  25. package/dist/plugins/pipelines/factiii/index.js.map +1 -1
  26. package/dist/plugins/pipelines/factiii/prod.js +21 -21
  27. package/dist/plugins/pipelines/factiii/scanfix/port-convention.d.ts.map +1 -1
  28. package/dist/plugins/pipelines/factiii/scanfix/port-convention.js +2 -4
  29. package/dist/plugins/pipelines/factiii/scanfix/port-convention.js.map +1 -1
  30. package/dist/plugins/pipelines/factiii/staging.js +23 -23
  31. package/dist/plugins/pipelines/factiii/workflows/stack-ci.yml +75 -75
  32. package/dist/plugins/pipelines/factiii/workflows/stack-cicd-prod.yml +73 -73
  33. package/dist/plugins/servers/amazon-linux/index.js +16 -16
  34. package/dist/plugins/servers/mac/index.js +12 -12
  35. package/dist/plugins/servers/mac/staging.js +2 -2
  36. package/dist/plugins/servers/ubuntu/index.js +23 -23
  37. package/dist/plugins/servers/windows/index.js +15 -15
  38. package/dist/scanfix/commands/mac.d.ts.map +1 -1
  39. package/dist/scanfix/commands/mac.js +5 -4
  40. package/dist/scanfix/commands/mac.js.map +1 -1
  41. package/dist/scanfix/fixes/certbot.d.ts.map +1 -1
  42. package/dist/scanfix/fixes/certbot.js +4 -18
  43. package/dist/scanfix/fixes/certbot.js.map +1 -1
  44. package/dist/scanfix/fixes/docker.d.ts.map +1 -1
  45. package/dist/scanfix/fixes/docker.js +5 -14
  46. package/dist/scanfix/fixes/docker.js.map +1 -1
  47. package/dist/scanfix/ssl-cert-helper.d.ts.map +1 -1
  48. package/dist/scanfix/ssl-cert-helper.js +18 -4
  49. package/dist/scanfix/ssl-cert-helper.js.map +1 -1
  50. package/dist/scripts/generate-all.js +73 -73
  51. package/dist/utils/deployment-report.js +2 -2
  52. package/dist/utils/secret-prompts.js +34 -34
  53. package/dist/utils/ssh-helper.d.ts.map +1 -1
  54. package/dist/utils/ssh-helper.js +150 -142
  55. package/dist/utils/ssh-helper.js.map +1 -1
  56. package/dist/utils/template-generator.js +74 -74
  57. package/package.json +93 -114
  58. package/dist/plugins/pipelines/factiii/scanfix/docker.d.ts +0 -20
  59. package/dist/plugins/pipelines/factiii/scanfix/docker.d.ts.map +0 -1
  60. package/dist/plugins/pipelines/factiii/scanfix/docker.js +0 -131
  61. package/dist/plugins/pipelines/factiii/scanfix/docker.js.map +0 -1
@@ -146,27 +146,27 @@ async function ensureDockerRunning(envConfig, isOnServer) {
146
146
  const checkCmd = 'export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && docker info > /dev/null 2>&1 && echo "running" || echo "stopped"';
147
147
  // Start Docker and wait up to 60 seconds for it to be ready
148
148
  // Use headless binary start over SSH since `open -a Docker` requires a GUI session
149
- const startCmd = `
150
- export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
151
- if ! docker info > /dev/null 2>&1; then
152
- echo "Starting Docker Desktop..." && \
153
- if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
154
- nohup /Applications/Docker.app/Contents/MacOS/Docker --unattended > /dev/null 2>&1 &
155
- else
156
- open -a Docker
157
- fi && \
158
- for i in {1..60}; do
159
- sleep 1
160
- if docker info > /dev/null 2>&1; then
161
- echo "Docker is ready"
162
- exit 0
163
- fi
164
- done
165
- echo "Docker failed to start within 60 seconds"
166
- exit 1
167
- else
168
- echo "Docker is already running"
169
- fi
149
+ const startCmd = `
150
+ export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
151
+ if ! docker info > /dev/null 2>&1; then
152
+ echo "Starting Docker Desktop..." && \
153
+ if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
154
+ nohup /Applications/Docker.app/Contents/MacOS/Docker --unattended > /dev/null 2>&1 &
155
+ else
156
+ open -a Docker
157
+ fi && \
158
+ for i in {1..60}; do
159
+ sleep 1
160
+ if docker info > /dev/null 2>&1; then
161
+ echo "Docker is ready"
162
+ exit 0
163
+ fi
164
+ done
165
+ echo "Docker failed to start within 60 seconds"
166
+ exit 1
167
+ else
168
+ echo "Docker is already running"
169
+ fi
170
170
  `;
171
171
  if (isOnServer) {
172
172
  // We're on the server - run commands directly
@@ -1 +1 @@
1
- {"version":3,"file":"port-convention.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/port-convention.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAwErE,eAAO,MAAM,mBAAmB,EAAE,GAAG,EA4OpC,CAAC"}
1
+ {"version":3,"file":"port-convention.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/port-convention.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAiB,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAuErE,eAAO,MAAM,mBAAmB,EAAE,GAAG,EA4OpC,CAAC"}
@@ -77,8 +77,6 @@ function isUrlKey(key) {
77
77
  * Returns null if not a recognizable pattern.
78
78
  */
79
79
  function fullPortToSlot(port) {
80
- if (port === 3000 || port === 5000)
81
- return 0;
82
80
  if (port >= 3001 && port <= 3009)
83
81
  return port - 3000;
84
82
  if (port >= 5001 && port <= 5009)
@@ -144,7 +142,7 @@ exports.portConventionFixes = [
144
142
  if (port) {
145
143
  const num = parseInt(port, 10);
146
144
  const slot = fullPortToSlot(num);
147
- if (slot !== null) {
145
+ if (slot) {
148
146
  return '🔌 PORT=' + port + ' in .env.example should be slot number ' + slot + ' (not a full port)';
149
147
  }
150
148
  return '🔌 PORT=' + port + ' in .env.example should be a slot number (0-5), not a full port';
@@ -176,7 +174,7 @@ exports.portConventionFixes = [
176
174
  return false;
177
175
  const portVal = parseInt(vars.PORT ?? '', 10);
178
176
  const slot = fullPortToSlot(portVal);
179
- if (slot === null)
177
+ if (!slot)
180
178
  return false; // Can't auto-convert, needs manual
181
179
  // Replace PORT value in the file
182
180
  const content = fs.readFileSync(envPath, 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"port-convention.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/port-convention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"port-convention.js","sourceRoot":"","sources":["../../../../../src/plugins/pipelines/factiii/scanfix/port-convention.ts"],"names":[],"mappings":"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"}
@@ -90,27 +90,27 @@ async function ensureDockerRunning(envConfig, isOnServer) {
90
90
  const checkCmd = 'export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && docker info > /dev/null 2>&1 && echo "running" || echo "stopped"';
91
91
  // Start Docker and wait up to 60 seconds for it to be ready
92
92
  // Use headless binary start over SSH since `open -a Docker` requires a GUI session
93
- const startCmd = `
94
- export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
95
- if ! docker info > /dev/null 2>&1; then
96
- echo "Starting Docker Desktop..." && \
97
- if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
98
- nohup /Applications/Docker.app/Contents/MacOS/Docker --unattended > /dev/null 2>&1 &
99
- else
100
- open -a Docker
101
- fi && \
102
- for i in {1..60}; do
103
- sleep 1
104
- if docker info > /dev/null 2>&1; then
105
- echo "Docker is ready"
106
- exit 0
107
- fi
108
- done
109
- echo "Docker failed to start within 60 seconds"
110
- exit 1
111
- else
112
- echo "Docker is already running"
113
- fi
93
+ const startCmd = `
94
+ export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
95
+ if ! docker info > /dev/null 2>&1; then
96
+ echo "Starting Docker Desktop..." && \
97
+ if [ -n "$SSH_CONNECTION" ] || [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
98
+ nohup /Applications/Docker.app/Contents/MacOS/Docker --unattended > /dev/null 2>&1 &
99
+ else
100
+ open -a Docker
101
+ fi && \
102
+ for i in {1..60}; do
103
+ sleep 1
104
+ if docker info > /dev/null 2>&1; then
105
+ echo "Docker is ready"
106
+ exit 0
107
+ fi
108
+ done
109
+ echo "Docker failed to start within 60 seconds"
110
+ exit 1
111
+ else
112
+ echo "Docker is already running"
113
+ fi
114
114
  `;
115
115
  if (isOnServer) {
116
116
  // We're on the server - run commands directly
@@ -225,8 +225,8 @@ async function buildStagingImage(config, envConfig) {
225
225
  // Build Docker image explicitly with arm64 platform on remote staging server
226
226
  console.log(` 🔨 Building Docker image (arm64) on staging server: ${imageTag}...`);
227
227
  console.log(` 📍 Building on: ${envConfig.domain}`);
228
- await sshExecCommand(envConfig, `export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
229
- cd ${repoDir} && \
228
+ await sshExecCommand(envConfig, `export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH" && \
229
+ cd ${repoDir} && \
230
230
  docker build --platform linux/arm64 -t ${imageTag} -f ${dockerfile} .`);
231
231
  console.log(` ✅ Image built successfully on staging server: ${imageTag}`);
232
232
  }
@@ -1,75 +1,75 @@
1
- name: Stack CI
2
-
3
- # Generated by @factiii/stack v{VERSION}
4
- # Runs builds and tests on push/PR to main.
5
- # No deployment - deploy via SSH from dev machine.
6
-
7
- on:
8
- push:
9
- branches: [main]
10
- pull_request:
11
- branches: [main]
12
-
13
- jobs:
14
- ci:
15
- runs-on: ubuntu-latest
16
- env:
17
- CI: true
18
- ENV: test
19
- NODE_ENV: test
20
- DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
21
- TEST_DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
22
- TEST_ADMIN_IP: "::ffff:127.0.0.1"
23
- SITE_URL: http://localhost:3000
24
- ALLOWED_ORIGINS: http://localhost:3000,http://localhost:5001
25
- ACCESS_TOKEN_SECRET: test-secret-key
26
- GOOGLE_CLIENT_ID: test-google-id
27
- APPLE_CLIENT_ID: com.factiii.test
28
- NEXT_PUBLIC_SITE_URL: http://localhost:3000
29
- NEXT_PUBLIC_API_URL: http://localhost:5001
30
-
31
- steps:
32
- - name: Checkout
33
- uses: actions/checkout@v4
34
-
35
- - name: Setup pnpm
36
- uses: pnpm/action-setup@v4
37
-
38
- - name: Setup Node.js
39
- uses: actions/setup-node@v4
40
- with:
41
- node-version: '24'
42
- cache: 'pnpm'
43
-
44
- - name: Install dependencies
45
- run: pnpm install
46
-
47
- - name: Build server
48
- run: pnpm build
49
- working-directory: apps/server
50
-
51
- - name: Build client
52
- run: pnpm build
53
- working-directory: client
54
- if: hashFiles('client/package.json') != ''
55
-
56
- - name: Setup Java (for Android)
57
- uses: actions/setup-java@v4
58
- with:
59
- distribution: 'temurin'
60
- java-version: '17'
61
- if: hashFiles('apps/mobile/android/build.gradle') != ''
62
-
63
- - name: Build Android
64
- run: |
65
- cd apps/mobile/android
66
- ./gradlew assembleRelease
67
- if: hashFiles('apps/mobile/android/build.gradle') != ''
68
-
69
- - name: Start Docker containers
70
- run: |
71
- chmod +x ./start.sh
72
- ./start.sh
73
-
74
- - name: Run tests
75
- run: pnpm test:server
1
+ name: Stack CI
2
+
3
+ # Generated by @factiii/stack v{VERSION}
4
+ # Runs builds and tests on push/PR to main.
5
+ # No deployment - deploy via SSH from dev machine.
6
+
7
+ on:
8
+ push:
9
+ branches: [main]
10
+ pull_request:
11
+ branches: [main]
12
+
13
+ jobs:
14
+ ci:
15
+ runs-on: ubuntu-latest
16
+ env:
17
+ CI: true
18
+ ENV: test
19
+ NODE_ENV: test
20
+ DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
21
+ TEST_DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
22
+ TEST_ADMIN_IP: "::ffff:127.0.0.1"
23
+ SITE_URL: http://localhost:3000
24
+ ALLOWED_ORIGINS: http://localhost:3000,http://localhost:5001
25
+ ACCESS_TOKEN_SECRET: test-secret-key
26
+ GOOGLE_CLIENT_ID: test-google-id
27
+ APPLE_CLIENT_ID: com.factiii.test
28
+ NEXT_PUBLIC_SITE_URL: http://localhost:3000
29
+ NEXT_PUBLIC_API_URL: http://localhost:5001
30
+
31
+ steps:
32
+ - name: Checkout
33
+ uses: actions/checkout@v4
34
+
35
+ - name: Setup pnpm
36
+ uses: pnpm/action-setup@v4
37
+
38
+ - name: Setup Node.js
39
+ uses: actions/setup-node@v4
40
+ with:
41
+ node-version: '24'
42
+ cache: 'pnpm'
43
+
44
+ - name: Install dependencies
45
+ run: pnpm install
46
+
47
+ - name: Build server
48
+ run: pnpm build
49
+ working-directory: apps/server
50
+
51
+ - name: Build client
52
+ run: pnpm build
53
+ working-directory: client
54
+ if: hashFiles('client/package.json') != ''
55
+
56
+ - name: Setup Java (for Android)
57
+ uses: actions/setup-java@v4
58
+ with:
59
+ distribution: 'temurin'
60
+ java-version: '17'
61
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
62
+
63
+ - name: Build Android
64
+ run: |
65
+ cd apps/mobile/android
66
+ ./gradlew assembleRelease
67
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
68
+
69
+ - name: Start Docker containers
70
+ run: |
71
+ chmod +x ./start.sh
72
+ ./start.sh
73
+
74
+ - name: Run tests
75
+ run: pnpm test:server
@@ -1,73 +1,73 @@
1
- name: Stack CI Prod
2
-
3
- # Generated by @factiii/stack v{VERSION}
4
- # Runs builds and tests on push to prod branch.
5
- # No deployment - deploy via SSH from dev machine.
6
-
7
- on:
8
- push:
9
- branches: [prod]
10
-
11
- jobs:
12
- ci:
13
- runs-on: ubuntu-latest
14
- env:
15
- CI: true
16
- ENV: test
17
- NODE_ENV: test
18
- DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
19
- TEST_DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
20
- TEST_ADMIN_IP: "::ffff:127.0.0.1"
21
- SITE_URL: http://localhost:3000
22
- ALLOWED_ORIGINS: http://localhost:3000,http://localhost:5001
23
- ACCESS_TOKEN_SECRET: test-secret-key
24
- GOOGLE_CLIENT_ID: test-google-id
25
- APPLE_CLIENT_ID: com.factiii.test
26
- NEXT_PUBLIC_SITE_URL: http://localhost:3000
27
- NEXT_PUBLIC_API_URL: http://localhost:5001
28
-
29
- steps:
30
- - name: Checkout
31
- uses: actions/checkout@v4
32
-
33
- - name: Setup pnpm
34
- uses: pnpm/action-setup@v4
35
-
36
- - name: Setup Node.js
37
- uses: actions/setup-node@v4
38
- with:
39
- node-version: '24'
40
- cache: 'pnpm'
41
-
42
- - name: Install dependencies
43
- run: pnpm install
44
-
45
- - name: Build server
46
- run: pnpm build
47
- working-directory: apps/server
48
-
49
- - name: Build client
50
- run: pnpm build
51
- working-directory: client
52
- if: hashFiles('client/package.json') != ''
53
-
54
- - name: Setup Java (for Android)
55
- uses: actions/setup-java@v4
56
- with:
57
- distribution: 'temurin'
58
- java-version: '17'
59
- if: hashFiles('apps/mobile/android/build.gradle') != ''
60
-
61
- - name: Build Android
62
- run: |
63
- cd apps/mobile/android
64
- ./gradlew assembleRelease
65
- if: hashFiles('apps/mobile/android/build.gradle') != ''
66
-
67
- - name: Start Docker containers
68
- run: |
69
- chmod +x ./start.sh
70
- ./start.sh
71
-
72
- - name: Run tests
73
- run: pnpm test:server
1
+ name: Stack CI Prod
2
+
3
+ # Generated by @factiii/stack v{VERSION}
4
+ # Runs builds and tests on push to prod branch.
5
+ # No deployment - deploy via SSH from dev machine.
6
+
7
+ on:
8
+ push:
9
+ branches: [prod]
10
+
11
+ jobs:
12
+ ci:
13
+ runs-on: ubuntu-latest
14
+ env:
15
+ CI: true
16
+ ENV: test
17
+ NODE_ENV: test
18
+ DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
19
+ TEST_DATABASE_URL: "postgresql://postgres:password@localhost:5440/factiii-test?connect_timeout=300"
20
+ TEST_ADMIN_IP: "::ffff:127.0.0.1"
21
+ SITE_URL: http://localhost:3000
22
+ ALLOWED_ORIGINS: http://localhost:3000,http://localhost:5001
23
+ ACCESS_TOKEN_SECRET: test-secret-key
24
+ GOOGLE_CLIENT_ID: test-google-id
25
+ APPLE_CLIENT_ID: com.factiii.test
26
+ NEXT_PUBLIC_SITE_URL: http://localhost:3000
27
+ NEXT_PUBLIC_API_URL: http://localhost:5001
28
+
29
+ steps:
30
+ - name: Checkout
31
+ uses: actions/checkout@v4
32
+
33
+ - name: Setup pnpm
34
+ uses: pnpm/action-setup@v4
35
+
36
+ - name: Setup Node.js
37
+ uses: actions/setup-node@v4
38
+ with:
39
+ node-version: '24'
40
+ cache: 'pnpm'
41
+
42
+ - name: Install dependencies
43
+ run: pnpm install
44
+
45
+ - name: Build server
46
+ run: pnpm build
47
+ working-directory: apps/server
48
+
49
+ - name: Build client
50
+ run: pnpm build
51
+ working-directory: client
52
+ if: hashFiles('client/package.json') != ''
53
+
54
+ - name: Setup Java (for Android)
55
+ uses: actions/setup-java@v4
56
+ with:
57
+ distribution: 'temurin'
58
+ java-version: '17'
59
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
60
+
61
+ - name: Build Android
62
+ run: |
63
+ cd apps/mobile/android
64
+ ./gradlew assembleRelease
65
+ if: hashFiles('apps/mobile/android/build.gradle') != ''
66
+
67
+ - name: Start Docker containers
68
+ run: |
69
+ chmod +x ./start.sh
70
+ ./start.sh
71
+
72
+ - name: Run tests
73
+ run: pnpm test:server
@@ -99,13 +99,13 @@ class AmazonLinuxPlugin {
99
99
  return false;
100
100
  }
101
101
  static helpText = {
102
- SSH: `
103
- SSH private key for accessing the Amazon Linux server.
104
-
105
- For AWS EC2:
106
- - Use the key pair you created when launching the instance
107
- - Download the .pem file from AWS Console
108
-
102
+ SSH: `
103
+ SSH private key for accessing the Amazon Linux server.
104
+
105
+ For AWS EC2:
106
+ - Use the key pair you created when launching the instance
107
+ - Download the .pem file from AWS Console
108
+
109
109
  Default user for Amazon Linux: ec2-user`,
110
110
  };
111
111
  // ============================================================
@@ -152,21 +152,21 @@ class AmazonLinuxPlugin {
152
152
  * Get the command to install Docker on Amazon Linux 2023
153
153
  */
154
154
  static getDockerInstallCommand() {
155
- return `
156
- sudo dnf update -y && \
157
- sudo dnf install -y docker && \
158
- sudo systemctl start docker && \
159
- sudo systemctl enable docker && \
160
- sudo usermod -aG docker $USER
155
+ return `
156
+ sudo dnf update -y && \
157
+ sudo dnf install -y docker && \
158
+ sudo systemctl start docker && \
159
+ sudo systemctl enable docker && \
160
+ sudo usermod -aG docker $USER
161
161
  `;
162
162
  }
163
163
  /**
164
164
  * Get the command to install Node.js on Amazon Linux
165
165
  */
166
166
  static getNodeInstallCommand() {
167
- return `
168
- curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - && \
169
- sudo dnf install -y nodejs
167
+ return `
168
+ curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash - && \
169
+ sudo dnf install -y nodejs
170
170
  `;
171
171
  }
172
172
  /**
@@ -138,16 +138,16 @@ class MacPlugin {
138
138
  return Object.keys(config).length === 0;
139
139
  }
140
140
  static helpText = {
141
- SSH: `
142
- SSH private key for accessing the server.
143
-
144
- Step 1: Generate a new SSH key pair (if needed):
145
- ssh-keygen -t ed25519 -C "deploy-key" -f ~/.ssh/deploy_key
146
-
147
- Step 2: Add PUBLIC key to server:
148
- ssh-copy-id -i ~/.ssh/deploy_key.pub ubuntu@YOUR_HOST
149
-
150
- Step 3: Paste the PRIVATE key below (multi-line, end with blank line):
141
+ SSH: `
142
+ SSH private key for accessing the server.
143
+
144
+ Step 1: Generate a new SSH key pair (if needed):
145
+ ssh-keygen -t ed25519 -C "deploy-key" -f ~/.ssh/deploy_key
146
+
147
+ Step 2: Add PUBLIC key to server:
148
+ ssh-copy-id -i ~/.ssh/deploy_key.pub ubuntu@YOUR_HOST
149
+
150
+ Step 3: Paste the PRIVATE key below (multi-line, end with blank line):
151
151
  cat ~/.ssh/deploy_key`,
152
152
  };
153
153
  // ============================================================
@@ -238,8 +238,8 @@ class MacPlugin {
238
238
  }
239
239
  try {
240
240
  const repoName = config.name ?? 'app';
241
- await MacPlugin.sshExec(envConfig, `
242
- cd ~/.factiii && docker compose stop ${repoName}-staging
241
+ await MacPlugin.sshExec(envConfig, `
242
+ cd ~/.factiii && docker compose stop ${repoName}-staging
243
243
  `);
244
244
  return { success: true, message: 'Staging containers stopped' };
245
245
  }
@@ -291,7 +291,7 @@ async function writeEnvFile(envConfig, repoDir, environment, envVarsString) {
291
291
  const escapedContent = envFileContent
292
292
  .replace(/'/g, "'\\''")
293
293
  .replace(/\n/g, '\\n');
294
- await sshExecCommand(envConfig, `cat > ${repoDir}/${envFileName} << 'ENVEOF'
294
+ await sshExecCommand(envConfig, `cat > ${repoDir}/${envFileName} << 'ENVEOF'
295
295
  ${envFileContent}ENVEOF`);
296
296
  }
297
297
  }
@@ -347,7 +347,7 @@ async function createEnvFromStaging(envConfig, repoDir) {
347
347
  console.log(' 📝 Created .env from .env.staging (with host port replacement)');
348
348
  }
349
349
  else {
350
- await sshExecCommand(envConfig, `cat > ${envPath} << 'ENVEOF'
350
+ await sshExecCommand(envConfig, `cat > ${envPath} << 'ENVEOF'
351
351
  ${updatedContent}ENVEOF`);
352
352
  console.log(' 📝 Created .env from .env.staging on remote server (with host port replacement)');
353
353
  }