@pushto/cli 0.2.0 → 0.4.6

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 (188) hide show
  1. package/dist/commands/__tests__/deploy-domain.test.d.ts +2 -0
  2. package/dist/commands/__tests__/deploy-domain.test.d.ts.map +1 -0
  3. package/dist/commands/__tests__/deploy-domain.test.js +41 -0
  4. package/dist/commands/__tests__/deploy-domain.test.js.map +1 -0
  5. package/dist/commands/__tests__/headless-smoke.test.d.ts +2 -0
  6. package/dist/commands/__tests__/headless-smoke.test.d.ts.map +1 -0
  7. package/dist/commands/__tests__/headless-smoke.test.js +110 -0
  8. package/dist/commands/__tests__/headless-smoke.test.js.map +1 -0
  9. package/dist/commands/auth.d.ts +2 -0
  10. package/dist/commands/auth.d.ts.map +1 -0
  11. package/dist/commands/auth.js +77 -0
  12. package/dist/commands/auth.js.map +1 -0
  13. package/dist/commands/cron.d.ts +2 -0
  14. package/dist/commands/cron.d.ts.map +1 -0
  15. package/dist/commands/cron.js +157 -0
  16. package/dist/commands/cron.js.map +1 -0
  17. package/dist/commands/db.d.ts +4 -0
  18. package/dist/commands/db.d.ts.map +1 -0
  19. package/dist/commands/db.js +63 -0
  20. package/dist/commands/db.js.map +1 -0
  21. package/dist/commands/deploy.d.ts +16 -1
  22. package/dist/commands/deploy.d.ts.map +1 -1
  23. package/dist/commands/deploy.js +344 -68
  24. package/dist/commands/deploy.js.map +1 -1
  25. package/dist/commands/doctor.d.ts.map +1 -1
  26. package/dist/commands/doctor.js +401 -69
  27. package/dist/commands/doctor.js.map +1 -1
  28. package/dist/commands/domain.d.ts.map +1 -1
  29. package/dist/commands/domain.js +70 -18
  30. package/dist/commands/domain.js.map +1 -1
  31. package/dist/commands/echo.d.ts +2 -0
  32. package/dist/commands/echo.d.ts.map +1 -0
  33. package/dist/commands/echo.js +227 -0
  34. package/dist/commands/echo.js.map +1 -0
  35. package/dist/commands/env.d.ts +3 -1
  36. package/dist/commands/env.d.ts.map +1 -1
  37. package/dist/commands/env.js +76 -50
  38. package/dist/commands/env.js.map +1 -1
  39. package/dist/commands/init.d.ts +3 -1
  40. package/dist/commands/init.d.ts.map +1 -1
  41. package/dist/commands/init.js +58 -11
  42. package/dist/commands/init.js.map +1 -1
  43. package/dist/commands/login.d.ts.map +1 -1
  44. package/dist/commands/login.js +80 -39
  45. package/dist/commands/login.js.map +1 -1
  46. package/dist/commands/logs.d.ts +3 -1
  47. package/dist/commands/logs.d.ts.map +1 -1
  48. package/dist/commands/logs.js +77 -21
  49. package/dist/commands/logs.js.map +1 -1
  50. package/dist/commands/mail.d.ts +2 -0
  51. package/dist/commands/mail.d.ts.map +1 -0
  52. package/dist/commands/mail.js +105 -0
  53. package/dist/commands/mail.js.map +1 -0
  54. package/dist/commands/open.d.ts.map +1 -1
  55. package/dist/commands/open.js +32 -8
  56. package/dist/commands/open.js.map +1 -1
  57. package/dist/commands/preview.d.ts +22 -0
  58. package/dist/commands/preview.d.ts.map +1 -0
  59. package/dist/commands/preview.js +223 -0
  60. package/dist/commands/preview.js.map +1 -0
  61. package/dist/commands/status.d.ts +3 -1
  62. package/dist/commands/status.d.ts.map +1 -1
  63. package/dist/commands/status.js +62 -12
  64. package/dist/commands/status.js.map +1 -1
  65. package/dist/commands/upgrade.d.ts.map +1 -1
  66. package/dist/commands/upgrade.js +73 -10
  67. package/dist/commands/upgrade.js.map +1 -1
  68. package/dist/commands/use.d.ts +2 -0
  69. package/dist/commands/use.d.ts.map +1 -0
  70. package/dist/commands/use.js +108 -0
  71. package/dist/commands/use.js.map +1 -0
  72. package/dist/commands/vault.d.ts +2 -0
  73. package/dist/commands/vault.d.ts.map +1 -0
  74. package/dist/commands/vault.js +119 -0
  75. package/dist/commands/vault.js.map +1 -0
  76. package/dist/commands/whoami.d.ts.map +1 -1
  77. package/dist/commands/whoami.js +12 -1
  78. package/dist/commands/whoami.js.map +1 -1
  79. package/dist/index.js +123 -13
  80. package/dist/index.js.map +1 -1
  81. package/dist/lib/__tests__/build-runner.test.d.ts +2 -0
  82. package/dist/lib/__tests__/build-runner.test.d.ts.map +1 -0
  83. package/dist/lib/__tests__/build-runner.test.js +119 -0
  84. package/dist/lib/__tests__/build-runner.test.js.map +1 -0
  85. package/dist/lib/__tests__/cron-tail.test.d.ts +2 -0
  86. package/dist/lib/__tests__/cron-tail.test.d.ts.map +1 -0
  87. package/dist/lib/__tests__/cron-tail.test.js +27 -0
  88. package/dist/lib/__tests__/cron-tail.test.js.map +1 -0
  89. package/dist/lib/__tests__/detect-static-framework.test.d.ts +2 -0
  90. package/dist/lib/__tests__/detect-static-framework.test.d.ts.map +1 -0
  91. package/dist/lib/__tests__/detect-static-framework.test.js +146 -0
  92. package/dist/lib/__tests__/detect-static-framework.test.js.map +1 -0
  93. package/dist/lib/__tests__/errors.test.d.ts +2 -0
  94. package/dist/lib/__tests__/errors.test.d.ts.map +1 -0
  95. package/dist/lib/__tests__/errors.test.js +56 -0
  96. package/dist/lib/__tests__/errors.test.js.map +1 -0
  97. package/dist/lib/__tests__/interactive.test.d.ts +2 -0
  98. package/dist/lib/__tests__/interactive.test.d.ts.map +1 -0
  99. package/dist/lib/__tests__/interactive.test.js +79 -0
  100. package/dist/lib/__tests__/interactive.test.js.map +1 -0
  101. package/dist/lib/__tests__/output.test.d.ts +2 -0
  102. package/dist/lib/__tests__/output.test.d.ts.map +1 -0
  103. package/dist/lib/__tests__/output.test.js +144 -0
  104. package/dist/lib/__tests__/output.test.js.map +1 -0
  105. package/dist/lib/__tests__/prepare-artifact.test.d.ts +2 -0
  106. package/dist/lib/__tests__/prepare-artifact.test.d.ts.map +1 -0
  107. package/dist/lib/__tests__/prepare-artifact.test.js +55 -0
  108. package/dist/lib/__tests__/prepare-artifact.test.js.map +1 -0
  109. package/dist/lib/__tests__/preview-args.test.d.ts +2 -0
  110. package/dist/lib/__tests__/preview-args.test.d.ts.map +1 -0
  111. package/dist/lib/__tests__/preview-args.test.js +37 -0
  112. package/dist/lib/__tests__/preview-args.test.js.map +1 -0
  113. package/dist/lib/api.d.ts +2 -0
  114. package/dist/lib/api.d.ts.map +1 -1
  115. package/dist/lib/api.js +38 -5
  116. package/dist/lib/api.js.map +1 -1
  117. package/dist/lib/ask.d.ts +15 -0
  118. package/dist/lib/ask.d.ts.map +1 -0
  119. package/dist/lib/ask.js +24 -0
  120. package/dist/lib/ask.js.map +1 -0
  121. package/dist/lib/build-runner.d.ts +25 -0
  122. package/dist/lib/build-runner.d.ts.map +1 -0
  123. package/dist/lib/build-runner.js +141 -0
  124. package/dist/lib/build-runner.js.map +1 -0
  125. package/dist/lib/config.d.ts +6 -0
  126. package/dist/lib/config.d.ts.map +1 -1
  127. package/dist/lib/config.js +13 -2
  128. package/dist/lib/config.js.map +1 -1
  129. package/dist/lib/cron-tail.d.ts +10 -0
  130. package/dist/lib/cron-tail.d.ts.map +1 -0
  131. package/dist/lib/cron-tail.js +5 -0
  132. package/dist/lib/cron-tail.js.map +1 -0
  133. package/dist/lib/detect-static-framework.d.ts +31 -0
  134. package/dist/lib/detect-static-framework.d.ts.map +1 -0
  135. package/dist/lib/detect-static-framework.js +96 -0
  136. package/dist/lib/detect-static-framework.js.map +1 -0
  137. package/dist/lib/env-parse.d.ts +48 -0
  138. package/dist/lib/env-parse.d.ts.map +1 -0
  139. package/dist/lib/env-parse.js +91 -0
  140. package/dist/lib/env-parse.js.map +1 -0
  141. package/dist/lib/errors.d.ts +111 -0
  142. package/dist/lib/errors.d.ts.map +1 -0
  143. package/dist/lib/errors.js +64 -0
  144. package/dist/lib/errors.js.map +1 -0
  145. package/dist/lib/file-walker.d.ts +23 -0
  146. package/dist/lib/file-walker.d.ts.map +1 -0
  147. package/dist/lib/file-walker.js +114 -0
  148. package/dist/lib/file-walker.js.map +1 -0
  149. package/dist/lib/interactive.d.ts +13 -0
  150. package/dist/lib/interactive.d.ts.map +1 -0
  151. package/dist/lib/interactive.js +24 -0
  152. package/dist/lib/interactive.js.map +1 -0
  153. package/dist/lib/output.d.ts +24 -0
  154. package/dist/lib/output.d.ts.map +1 -0
  155. package/dist/lib/output.js +71 -0
  156. package/dist/lib/output.js.map +1 -0
  157. package/dist/lib/prepare-artifact.d.ts +22 -0
  158. package/dist/lib/prepare-artifact.d.ts.map +1 -0
  159. package/dist/lib/prepare-artifact.js +26 -0
  160. package/dist/lib/prepare-artifact.js.map +1 -0
  161. package/dist/lib/preview-args.d.ts +20 -0
  162. package/dist/lib/preview-args.d.ts.map +1 -0
  163. package/dist/lib/preview-args.js +19 -0
  164. package/dist/lib/preview-args.js.map +1 -0
  165. package/dist/lib/resolve-slug.d.ts.map +1 -1
  166. package/dist/lib/resolve-slug.js +9 -2
  167. package/dist/lib/resolve-slug.js.map +1 -1
  168. package/dist/lib/safe-json.d.ts +7 -2
  169. package/dist/lib/safe-json.d.ts.map +1 -1
  170. package/dist/lib/safe-json.js +23 -4
  171. package/dist/lib/safe-json.js.map +1 -1
  172. package/dist/lib/update-check.d.ts +17 -0
  173. package/dist/lib/update-check.d.ts.map +1 -0
  174. package/dist/lib/update-check.js +81 -0
  175. package/dist/lib/update-check.js.map +1 -0
  176. package/dist/lib/upload-limits.d.ts +17 -0
  177. package/dist/lib/upload-limits.d.ts.map +1 -0
  178. package/dist/lib/upload-limits.js +17 -0
  179. package/dist/lib/upload-limits.js.map +1 -0
  180. package/dist/lib/zip-project.d.ts +19 -0
  181. package/dist/lib/zip-project.d.ts.map +1 -0
  182. package/dist/lib/zip-project.js +39 -0
  183. package/dist/lib/zip-project.js.map +1 -0
  184. package/dist/version.d.ts +2 -0
  185. package/dist/version.d.ts.map +1 -0
  186. package/dist/version.js +16 -0
  187. package/dist/version.js.map +1 -0
  188. package/package.json +5 -8
@@ -2,91 +2,196 @@ import chalk from 'chalk';
2
2
  import ora from 'ora';
3
3
  import fs from 'node:fs';
4
4
  import path from 'node:path';
5
- import { execSync } from 'node:child_process';
6
- import archiver from 'archiver';
7
5
  import { getToken } from '../lib/config.js';
8
- import { api } from '../lib/api.js';
6
+ import { api, deploySignal } from '../lib/api.js';
9
7
  import { resolveSlug } from '../lib/resolve-slug.js';
10
8
  import { safeJson } from '../lib/safe-json.js';
11
- const IGNORE = [
12
- 'node_modules',
13
- '.git',
14
- '.next',
15
- '.vercel',
16
- '.turbo',
17
- 'dist',
18
- '.pushto',
19
- '.env',
20
- '.env.local',
21
- '.DS_Store',
22
- ];
23
- const getGitInfo = () => {
24
- try {
25
- const hash = execSync('git rev-parse --short HEAD', { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim();
26
- const message = execSync('git log -1 --pretty=%s', { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim();
27
- const branch = execSync('git rev-parse --abbrev-ref HEAD', { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim();
28
- return { hash, message, branch };
29
- }
30
- catch {
31
- return { hash: null, message: null, branch: 'main' };
32
- }
9
+ import { getGitInfo, zipDirectory } from '../lib/zip-project.js';
10
+ import { SERVER_UPLOAD_CAP_BYTES, fmtMB } from '../lib/upload-limits.js';
11
+ import { parseEnvFile } from '../lib/env-parse.js';
12
+ import { prepareArtifact } from '../lib/prepare-artifact.js';
13
+ import { canPrompt } from '../lib/interactive.js';
14
+ import { ask } from '../lib/ask.js';
15
+ import { fail } from '../lib/output.js';
16
+ /**
17
+ * Decide whether to ask for a custom domain, and never reach for stdin when
18
+ * the answer is no. Pre-fix this logic was inline and called ask()
19
+ * unconditionally, which hung every headless caller on their first deploy:
20
+ * readline's callback never fires on EOF, so the promise never settled and
21
+ * the enclosing try/catch was inert, because hanging is not throwing.
22
+ */
23
+ export const resolveCustomDomain = async (args) => {
24
+ if (args.current)
25
+ return null;
26
+ if (!args.canPrompt)
27
+ return null;
28
+ const answer = await args.ask(chalk.dim(' custom domain? (enter to skip): '));
29
+ return answer ? answer : null;
33
30
  };
34
- const zipDirectory = (dir) => {
35
- return new Promise((resolve, reject) => {
36
- const archive = archiver('zip', { zlib: { level: 9 } });
37
- const chunks = [];
38
- archive.on('data', (chunk) => chunks.push(chunk));
39
- archive.on('end', () => resolve(Buffer.concat(chunks)));
40
- archive.on('error', reject);
41
- // Add files, respecting ignores
42
- const addDir = (dirPath, prefix) => {
43
- const entries = fs.readdirSync(dirPath, { withFileTypes: true });
44
- for (const entry of entries) {
45
- if (IGNORE.includes(entry.name))
46
- continue;
47
- if (entry.name.startsWith('.') && entry.name !== '.htaccess')
48
- continue;
49
- const fullPath = path.join(dirPath, entry.name);
50
- const archivePath = prefix ? `${prefix}/${entry.name}` : entry.name;
51
- if (entry.isFile()) {
52
- archive.file(fullPath, { name: archivePath });
53
- }
54
- else if (entry.isDirectory()) {
55
- addDir(fullPath, archivePath);
56
- }
57
- }
58
- };
59
- addDir(dir, '');
60
- archive.finalize();
61
- });
62
- };
63
- export const deploy = async () => {
31
+ export const deploy = async (opts = {}) => {
64
32
  const token = getToken();
65
33
  if (!token) {
66
- console.log(chalk.red('> not logged in.'));
67
- console.log(chalk.dim(' run ') + chalk.cyan('pushto login') + chalk.dim(' first.'));
68
- process.exit(1);
34
+ fail('NOT_AUTHENTICATED', 'not logged in.', opts, {
35
+ stage: 'auth',
36
+ fix: { label: 'sign in', cmd: 'pushto login', prose: 'run {cmd} first.' },
37
+ });
69
38
  }
70
39
  const slug = resolveSlug();
71
40
  if (!slug) {
72
- console.log(chalk.red('> no project here.'));
73
- console.log(chalk.dim(' run ') + chalk.cyan('pushto init <name>') + chalk.dim(' to get started.'));
41
+ fail('NO_PROJECT', 'no project here.', opts, {
42
+ fix: { label: 'get started', cmd: 'pushto init <name>', prose: 'run {cmd} to get started.' },
43
+ });
44
+ }
45
+ // Echo the slug + cwd up front so users in the wrong directory (stale
46
+ // .pushto from a project they forgot, or `pushto` accidentally run from
47
+ // a parent dir that has its own .pushto) catch the mistake BEFORE we
48
+ // zip and upload. Pre-fix the slug only surfaced in the success box at
49
+ // the end — by which point the wrong project had already been deployed.
50
+ console.log(chalk.dim('> deploying ') + chalk.cyan(slug) + chalk.dim(' from ') + chalk.dim(process.cwd()));
51
+ // Auto-import env vars before deploying. Prefer .env.production so users
52
+ // can keep local-only vars (e.g. ADMIN_PASSWORD that gates dev too) in .env
53
+ // without them silently leaking to remote on every push.
54
+ const envFiles = ['.env.production', '.env'];
55
+ for (const envFile of envFiles) {
56
+ const envPath = path.join(process.cwd(), envFile);
57
+ if (fs.existsSync(envPath)) {
58
+ const envContent = fs.readFileSync(envPath, 'utf-8');
59
+ const vars = parseEnvFile(envContent);
60
+ const count = Object.keys(vars).length;
61
+ if (count > 0) {
62
+ const envSpinner = ora(`found ${count} env vars in ${envFile} — importing...`).start();
63
+ try {
64
+ const envRes = await api(`/cli/projects/${slug}/env`, {
65
+ method: 'PUT',
66
+ headers: { 'Content-Type': 'application/json' },
67
+ body: JSON.stringify({ vars }),
68
+ });
69
+ if (envRes.ok) {
70
+ const envData = await safeJson(envRes);
71
+ const imported = envData.imported ?? count;
72
+ const skipped = envData.skipped ?? [];
73
+ envSpinner.succeed(chalk.green(`> ${imported} env vars imported from ${envFile}`));
74
+ // Surface skipped keys so the user knows their app may be
75
+ // missing config — pre-fix the bulk PUT silently dropped
76
+ // anything that failed validation (key not [A-Z_], value
77
+ // > 10KB, value contained newlines).
78
+ if (skipped.length > 0) {
79
+ console.log(chalk.yellow(` ${skipped.length} skipped:`));
80
+ for (const s of skipped) {
81
+ console.log(chalk.dim(` ${s.key} → ${s.reason}`));
82
+ }
83
+ }
84
+ }
85
+ else {
86
+ envSpinner.warn(chalk.yellow(`> couldn't import env vars (non-blocking)`));
87
+ }
88
+ }
89
+ catch {
90
+ envSpinner.warn(chalk.yellow(`> couldn't import env vars (non-blocking)`));
91
+ }
92
+ }
93
+ break; // only import from the first .env file found
94
+ }
95
+ }
96
+ // Check if custom domain is set — prompt on first deploy only
97
+ try {
98
+ const projectRes = await api(`/cli/projects/${slug}`);
99
+ if (projectRes.ok) {
100
+ const projectData = await safeJson(projectRes);
101
+ const domain = await resolveCustomDomain({
102
+ current: projectData.customDomain,
103
+ canPrompt: canPrompt(opts),
104
+ ask,
105
+ });
106
+ if (domain) {
107
+ const domainSpinner = ora(`setting up ${domain}...`).start();
108
+ try {
109
+ const domRes = await api(`/cli/projects/${slug}/domain`, {
110
+ method: 'POST',
111
+ headers: { 'Content-Type': 'application/json' },
112
+ body: JSON.stringify({ domain }),
113
+ });
114
+ if (domRes.ok) {
115
+ const domData = await safeJson(domRes);
116
+ domainSpinner.succeed(chalk.green(`> ${domain} configured`));
117
+ if (domData.nameservers?.length) {
118
+ console.log(chalk.dim(' update your nameservers to:'));
119
+ for (const ns of domData.nameservers) {
120
+ console.log(chalk.cyan(` ${ns}`));
121
+ }
122
+ console.log('');
123
+ }
124
+ }
125
+ else {
126
+ const errData = await safeJson(domRes);
127
+ domainSpinner.warn(chalk.yellow(`> ${errData.error ?? 'could not set up domain'}`));
128
+ }
129
+ }
130
+ catch {
131
+ domainSpinner.warn(chalk.yellow('> domain setup skipped'));
132
+ }
133
+ }
134
+ }
135
+ }
136
+ catch { /* project check failed — continue with deploy */ }
137
+ // Static-output frameworks (vite, astro, gatsby, angular, cra, eleventy)
138
+ // build HERE, on this machine, and only the output ships. Everything
139
+ // else zips the cwd exactly as before.
140
+ const buildSpinner = ora('checking project...').start();
141
+ const prep = await prepareArtifact(process.cwd(), (line) => { buildSpinner.text = line; });
142
+ if (prep.kind === 'failed') {
143
+ buildSpinner.fail(chalk.red('> build failed.'));
144
+ console.log('');
145
+ console.log(chalk.red(' reason: ') + chalk.dim(prep.message));
146
+ if (prep.buildOutput.trim()) {
147
+ const tail = prep.buildOutput.trim().split('\n').slice(-40).join('\n');
148
+ console.log(chalk.dim(tail.replace(/^/gm, ' ')));
149
+ }
74
150
  process.exit(1);
75
151
  }
152
+ if (prep.kind === 'artifact') {
153
+ buildSpinner.succeed(chalk.green(`> built with ${prep.framework}`));
154
+ }
155
+ else {
156
+ buildSpinner.stop();
157
+ }
76
158
  const spinner = ora('zipping project...').start();
77
159
  try {
78
160
  const git = getGitInfo();
79
- // Zip the current directory
80
- const zipBuffer = await zipDirectory(process.cwd());
81
- const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(1);
161
+ const { buffer: zipBuffer, fileCount: zippedCount } = await zipDirectory(prep.zipDir);
162
+ const sizeBytes = zipBuffer.length;
163
+ const sizeMB = (sizeBytes / 1024 / 1024).toFixed(1);
164
+ // Catch empty uploads before we waste a roundtrip. A user in the wrong
165
+ // directory, or with everything gitignored, would otherwise get a
166
+ // server-side 400 ~30s later. Tell them up front + point them at the
167
+ // doctor command for diagnosis.
168
+ if (zippedCount === 0) {
169
+ spinner.fail(chalk.red('> no files found in this directory.'));
170
+ console.log(chalk.dim(' is your entire project in .gitignore? are you in the wrong directory?'));
171
+ console.log(chalk.dim(' run ') + chalk.cyan('pushto doctor') + chalk.dim(' to see what would be uploaded.'));
172
+ process.exit(1);
173
+ }
174
+ // Match the server cap exactly so we fail FAST (locally, instantly)
175
+ // instead of slow (after a 30-second upload that the server then 413s).
176
+ // Pre-fix the local cap was 500MB but the server cap is 50MB — uploads
177
+ // between 50MB and 500MB went up the wire and got rejected after the
178
+ // long upload finished, with a confusing "upload too large" error
179
+ // long after the user had walked away thinking it was working.
180
+ if (sizeBytes > SERVER_UPLOAD_CAP_BYTES) {
181
+ spinner.fail(chalk.red(`> deploy is ${fmtMB(sizeBytes)} — server cap is ${fmtMB(SERVER_UPLOAD_CAP_BYTES)}.`));
182
+ console.log(chalk.dim(' add large files (videos, datasets, build artifacts) to .gitignore or .pushtoignore.'));
183
+ console.log(chalk.dim(' run ') + chalk.cyan('pushto doctor') + chalk.dim(' to see the biggest files.'));
184
+ process.exit(1);
185
+ }
82
186
  spinner.text = `uploading ${sizeMB}MB...`;
83
- // Upload to the deploy endpoint
187
+ // Upload to the deploy endpoint (extended timeout for large projects)
84
188
  const res = await api(`/cli/projects/${slug}/upload`, {
85
189
  method: 'POST',
86
190
  headers: {
87
191
  'Content-Type': 'application/zip',
88
192
  },
89
193
  body: new Uint8Array(zipBuffer),
194
+ signal: deploySignal(),
90
195
  });
91
196
  if (!res.ok) {
92
197
  const data = await safeJson(res);
@@ -94,17 +199,147 @@ export const deploy = async () => {
94
199
  process.exit(1);
95
200
  }
96
201
  const data = await safeJson(res);
97
- spinner.succeed(chalk.green(`> ${data.message}`));
98
- // Build the summary box
202
+ // Don't trust the server's `data.message` here — it currently says
203
+ // "v1 live" even though for container apps, the build hasn't run yet.
204
+ // What we know for sure at this point is: the bundle uploaded.
205
+ spinner.succeed(chalk.green(`> v${data.deployment.version} uploaded (${data.deployment.fileCount} files)`));
206
+ if (prep.kind === 'artifact') {
207
+ prep.cleanup();
208
+ if (prep.typeWarnings) {
209
+ console.log('');
210
+ console.log(chalk.yellow(' heads up: your types have errors. the site is live and runs exactly like dev mode.'));
211
+ const tail = prep.typeWarnings.trim().split('\n').slice(-15).join('\n');
212
+ console.log(chalk.dim(tail.replace(/^/gm, ' ')));
213
+ console.log(chalk.dim(' fix them when you are ready. npm run build shows the full list.'));
214
+ }
215
+ }
216
+ let outcome = data.container ? 'container' : 'failed';
217
+ let failureDetail = null;
218
+ let finalUrl = data.url;
219
+ let containerDeployed = data.container != null;
220
+ // The deploy route's build duration — the upload response's number is
221
+ // just the upload time, and the summary box printing "deployed in 2s"
222
+ // for a 90-second container build was a lie by omission.
223
+ let containerBuildDuration = null;
224
+ if (!data.container) {
225
+ // Try dynamic deploy — server will return 403 if it's a free tier
226
+ // user (static-only) or 200 with no container if it's a static site.
227
+ const deploySpinner = ora('detecting framework...').start();
228
+ try {
229
+ const deployRes = await api(`/cli/projects/${slug}/deploy`, {
230
+ method: 'POST',
231
+ headers: { 'Content-Type': 'application/json' },
232
+ body: JSON.stringify({
233
+ commitHash: git.hash,
234
+ commitMessage: git.message,
235
+ branch: git.branch,
236
+ builtFramework: prep.kind === 'artifact' ? prep.framework : undefined,
237
+ }),
238
+ signal: deploySignal(),
239
+ });
240
+ if (deployRes.ok) {
241
+ const deployData = await safeJson(deployRes);
242
+ if (deployData.container) {
243
+ outcome = 'container';
244
+ containerDeployed = true;
245
+ finalUrl = deployData.url ?? finalUrl;
246
+ const fw = deployData.deployment?.framework ?? 'dynamic';
247
+ const dur = deployData.deployment?.buildDuration ?? 0;
248
+ containerBuildDuration = deployData.deployment?.buildDuration ?? null;
249
+ deploySpinner.succeed(chalk.green(`> deployed as ${fw} (${dur}s)`));
250
+ }
251
+ else {
252
+ outcome = 'static';
253
+ const label = prep.kind === 'artifact' ? `${prep.framework} build` : 'static site';
254
+ deploySpinner.succeed(chalk.green(`> ${label} live`));
255
+ if (deployData.message && deployData.message.includes('container was stopped')) {
256
+ console.log(chalk.yellow(` ${deployData.message}`));
257
+ }
258
+ }
259
+ }
260
+ else if (deployRes.status === 403) {
261
+ // After the server's detect-before-gate reorder, 403 means one
262
+ // thing: genuinely dynamic project, free tier. Printing static
263
+ // success here was a lie (raw server source served as files).
264
+ const gateData = await safeJson(deployRes);
265
+ outcome = 'failed';
266
+ failureDetail = gateData.error ?? 'dynamic deploys are a paid feature.';
267
+ deploySpinner.fail(chalk.red('> this project needs a server'));
268
+ }
269
+ else if (deployRes.status === 504) {
270
+ // Server gave up waiting after 10 minutes, but the deploy-agent
271
+ // is still processing the build. Show a non-failure message and
272
+ // exit 0 — the user can poll the dashboard for completion.
273
+ outcome = 'still-building';
274
+ deploySpinner.warn(chalk.yellow('> still building — taking longer than usual'));
275
+ }
276
+ else if (deployRes.status === 409) {
277
+ // Server refused to start a second concurrent build for the same
278
+ // version (another `pushto deploy` is already mid-build). Treat
279
+ // as a non-failure — the previous build will land any moment.
280
+ // Server includes `stillBuilding: true` for parity with 504.
281
+ const conflictData = await safeJson(deployRes);
282
+ outcome = 'still-building';
283
+ deploySpinner.warn(chalk.yellow(`> ${conflictData.error ?? 'a build for this version is already in progress'}`));
284
+ }
285
+ else {
286
+ // Real failure (build failed, container crashed, etc.)
287
+ const errData = await safeJson(deployRes);
288
+ outcome = 'failed';
289
+ failureDetail = errData.error ?? `server returned ${deployRes.status}`;
290
+ deploySpinner.fail(chalk.red(`> deploy failed`));
291
+ }
292
+ }
293
+ catch (err) {
294
+ outcome = 'failed';
295
+ failureDetail = err instanceof Error ? err.message : 'network error during deploy';
296
+ deploySpinner.fail(chalk.red(`> deploy failed`));
297
+ }
298
+ }
299
+ // Surface failures honestly — no success box for a broken deploy.
300
+ if (outcome === 'failed') {
301
+ console.log('');
302
+ if (failureDetail) {
303
+ console.log(chalk.red(' reason: ') + chalk.dim(failureDetail));
304
+ }
305
+ console.log('');
306
+ console.log(chalk.dim(' see what went wrong:'));
307
+ console.log(` ${chalk.cyan('pushto logs')}`);
308
+ console.log(` ${chalk.cyan(`https://pushto.host/dashboard/projects/${slug}`)}`);
309
+ console.log('');
310
+ process.exit(1);
311
+ }
312
+ // Build's still going — exit 0 with a clear "check the dashboard" hint.
313
+ // This isn't a failure path: the bundle uploaded, the agent claimed it,
314
+ // and the build is just slower than the route's poll budget. The
315
+ // dashboard will reflect LIVE/FAILED whenever the agent finishes.
316
+ if (outcome === 'still-building') {
317
+ console.log('');
318
+ console.log(chalk.yellow(' your deploy is taking a while.'));
319
+ console.log(chalk.dim(' the build is still running — we just stopped waiting on it.'));
320
+ console.log('');
321
+ console.log(chalk.dim(' watch it finish:'));
322
+ console.log(` ${chalk.cyan(`pushto logs`)}`);
323
+ console.log(` ${chalk.cyan(`https://pushto.host/dashboard/projects/${slug}`)}`);
324
+ console.log('');
325
+ // Exit 0 — the deploy isn't broken; we just timed out the wait.
326
+ // CI scripts that check exit code shouldn't treat this as a failure.
327
+ return;
328
+ }
329
+ // Build the summary box. Container deploys report the build step's real
330
+ // duration; the upload response's number only covers the upload.
99
331
  const version = `v${data.deployment.version}`;
100
- const duration = `${data.deployment.buildDuration}s`;
332
+ const duration = `${containerBuildDuration ?? data.deployment.buildDuration}s`;
101
333
  const fileCount = data.deployment.fileCount;
102
- const url = data.url;
334
+ const url = finalUrl;
103
335
  const commitLine = git.hash ? `${git.hash} ${git.message ?? ''}` : null;
104
336
  const lines = [
105
337
  `${chalk.green(version)} deployed in ${chalk.cyan(duration)}`,
106
338
  `${chalk.dim(String(fileCount) + ' files')} ${chalk.dim('•')} ${chalk.cyan(url)}`,
107
339
  ];
340
+ if (containerDeployed) {
341
+ lines.push(chalk.dim('container running'));
342
+ }
108
343
  if (commitLine) {
109
344
  lines.push(chalk.dim(commitLine));
110
345
  }
@@ -129,8 +364,49 @@ export const deploy = async () => {
129
364
  }
130
365
  console.log(bot);
131
366
  console.log('');
367
+ // Auto-configure cron jobs from .pushto file
368
+ const pushtoPath = path.join(process.cwd(), '.pushto');
369
+ if (fs.existsSync(pushtoPath)) {
370
+ try {
371
+ const pushtoConfig = JSON.parse(fs.readFileSync(pushtoPath, 'utf-8'));
372
+ const cronJobs = pushtoConfig.cron;
373
+ if (Array.isArray(cronJobs) && cronJobs.length > 0) {
374
+ for (const job of cronJobs) {
375
+ if (!job.name || !job.url || !job.schedule)
376
+ continue;
377
+ const cronSpinner = ora(`setting up cron: ${job.name}...`).start();
378
+ try {
379
+ const cronRes = await api(`/cli/projects/${slug}/cron`, {
380
+ method: 'PUT',
381
+ headers: { 'Content-Type': 'application/json' },
382
+ body: JSON.stringify({
383
+ name: job.name,
384
+ url: job.url,
385
+ schedule: job.schedule,
386
+ method: job.method ?? 'POST',
387
+ ...(typeof job.secret === 'string' && job.secret ? { secret: job.secret } : {}),
388
+ }),
389
+ });
390
+ if (cronRes.ok) {
391
+ const cronData = await safeJson(cronRes);
392
+ cronSpinner.succeed(chalk.green(`> cron "${job.name}" ${cronData.action ?? 'configured'} (${job.schedule})`));
393
+ }
394
+ else {
395
+ cronSpinner.warn(chalk.yellow(`> cron "${job.name}" skipped (non-blocking)`));
396
+ }
397
+ }
398
+ catch {
399
+ cronSpinner.warn(chalk.yellow(`> cron "${job.name}" skipped (non-blocking)`));
400
+ }
401
+ }
402
+ }
403
+ }
404
+ catch { /* .pushto parse failed — ignore */ }
405
+ }
132
406
  }
133
407
  catch (err) {
408
+ if (prep.kind === 'artifact')
409
+ prep.cleanup();
134
410
  const msg = err instanceof Error ? err.message : 'unknown error';
135
411
  spinner.fail(chalk.red(`> deploy failed: ${msg}`));
136
412
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM,QAAa,OAAO,CAAC,IAAI,CAkJ3C,CAAC"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,MAAM,QAAa,OAAO,CAAC,IAAI,CA2c3C,CAAC"}