@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.
- package/dist/commands/__tests__/deploy-domain.test.d.ts +2 -0
- package/dist/commands/__tests__/deploy-domain.test.d.ts.map +1 -0
- package/dist/commands/__tests__/deploy-domain.test.js +41 -0
- package/dist/commands/__tests__/deploy-domain.test.js.map +1 -0
- package/dist/commands/__tests__/headless-smoke.test.d.ts +2 -0
- package/dist/commands/__tests__/headless-smoke.test.d.ts.map +1 -0
- package/dist/commands/__tests__/headless-smoke.test.js +110 -0
- package/dist/commands/__tests__/headless-smoke.test.js.map +1 -0
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +77 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/cron.d.ts +2 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +157 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/db.d.ts +4 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +63 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/deploy.d.ts +16 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +344 -68
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +401 -69
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/domain.d.ts.map +1 -1
- package/dist/commands/domain.js +70 -18
- package/dist/commands/domain.js.map +1 -1
- package/dist/commands/echo.d.ts +2 -0
- package/dist/commands/echo.d.ts.map +1 -0
- package/dist/commands/echo.js +227 -0
- package/dist/commands/echo.js.map +1 -0
- package/dist/commands/env.d.ts +3 -1
- package/dist/commands/env.d.ts.map +1 -1
- package/dist/commands/env.js +76 -50
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/init.d.ts +3 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +58 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +80 -39
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +77 -21
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/mail.d.ts +2 -0
- package/dist/commands/mail.d.ts.map +1 -0
- package/dist/commands/mail.js +105 -0
- package/dist/commands/mail.js.map +1 -0
- package/dist/commands/open.d.ts.map +1 -1
- package/dist/commands/open.js +32 -8
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/preview.d.ts +22 -0
- package/dist/commands/preview.d.ts.map +1 -0
- package/dist/commands/preview.js +223 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/status.d.ts +3 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +62 -12
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +73 -10
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/use.d.ts +2 -0
- package/dist/commands/use.d.ts.map +1 -0
- package/dist/commands/use.js +108 -0
- package/dist/commands/use.js.map +1 -0
- package/dist/commands/vault.d.ts +2 -0
- package/dist/commands/vault.d.ts.map +1 -0
- package/dist/commands/vault.js +119 -0
- package/dist/commands/vault.js.map +1 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +12 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +123 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/build-runner.test.d.ts +2 -0
- package/dist/lib/__tests__/build-runner.test.d.ts.map +1 -0
- package/dist/lib/__tests__/build-runner.test.js +119 -0
- package/dist/lib/__tests__/build-runner.test.js.map +1 -0
- package/dist/lib/__tests__/cron-tail.test.d.ts +2 -0
- package/dist/lib/__tests__/cron-tail.test.d.ts.map +1 -0
- package/dist/lib/__tests__/cron-tail.test.js +27 -0
- package/dist/lib/__tests__/cron-tail.test.js.map +1 -0
- package/dist/lib/__tests__/detect-static-framework.test.d.ts +2 -0
- package/dist/lib/__tests__/detect-static-framework.test.d.ts.map +1 -0
- package/dist/lib/__tests__/detect-static-framework.test.js +146 -0
- package/dist/lib/__tests__/detect-static-framework.test.js.map +1 -0
- package/dist/lib/__tests__/errors.test.d.ts +2 -0
- package/dist/lib/__tests__/errors.test.d.ts.map +1 -0
- package/dist/lib/__tests__/errors.test.js +56 -0
- package/dist/lib/__tests__/errors.test.js.map +1 -0
- package/dist/lib/__tests__/interactive.test.d.ts +2 -0
- package/dist/lib/__tests__/interactive.test.d.ts.map +1 -0
- package/dist/lib/__tests__/interactive.test.js +79 -0
- package/dist/lib/__tests__/interactive.test.js.map +1 -0
- package/dist/lib/__tests__/output.test.d.ts +2 -0
- package/dist/lib/__tests__/output.test.d.ts.map +1 -0
- package/dist/lib/__tests__/output.test.js +144 -0
- package/dist/lib/__tests__/output.test.js.map +1 -0
- package/dist/lib/__tests__/prepare-artifact.test.d.ts +2 -0
- package/dist/lib/__tests__/prepare-artifact.test.d.ts.map +1 -0
- package/dist/lib/__tests__/prepare-artifact.test.js +55 -0
- package/dist/lib/__tests__/prepare-artifact.test.js.map +1 -0
- package/dist/lib/__tests__/preview-args.test.d.ts +2 -0
- package/dist/lib/__tests__/preview-args.test.d.ts.map +1 -0
- package/dist/lib/__tests__/preview-args.test.js +37 -0
- package/dist/lib/__tests__/preview-args.test.js.map +1 -0
- package/dist/lib/api.d.ts +2 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +38 -5
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/ask.d.ts +15 -0
- package/dist/lib/ask.d.ts.map +1 -0
- package/dist/lib/ask.js +24 -0
- package/dist/lib/ask.js.map +1 -0
- package/dist/lib/build-runner.d.ts +25 -0
- package/dist/lib/build-runner.d.ts.map +1 -0
- package/dist/lib/build-runner.js +141 -0
- package/dist/lib/build-runner.js.map +1 -0
- package/dist/lib/config.d.ts +6 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +13 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/cron-tail.d.ts +10 -0
- package/dist/lib/cron-tail.d.ts.map +1 -0
- package/dist/lib/cron-tail.js +5 -0
- package/dist/lib/cron-tail.js.map +1 -0
- package/dist/lib/detect-static-framework.d.ts +31 -0
- package/dist/lib/detect-static-framework.d.ts.map +1 -0
- package/dist/lib/detect-static-framework.js +96 -0
- package/dist/lib/detect-static-framework.js.map +1 -0
- package/dist/lib/env-parse.d.ts +48 -0
- package/dist/lib/env-parse.d.ts.map +1 -0
- package/dist/lib/env-parse.js +91 -0
- package/dist/lib/env-parse.js.map +1 -0
- package/dist/lib/errors.d.ts +111 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +64 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/file-walker.d.ts +23 -0
- package/dist/lib/file-walker.d.ts.map +1 -0
- package/dist/lib/file-walker.js +114 -0
- package/dist/lib/file-walker.js.map +1 -0
- package/dist/lib/interactive.d.ts +13 -0
- package/dist/lib/interactive.d.ts.map +1 -0
- package/dist/lib/interactive.js +24 -0
- package/dist/lib/interactive.js.map +1 -0
- package/dist/lib/output.d.ts +24 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +71 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/prepare-artifact.d.ts +22 -0
- package/dist/lib/prepare-artifact.d.ts.map +1 -0
- package/dist/lib/prepare-artifact.js +26 -0
- package/dist/lib/prepare-artifact.js.map +1 -0
- package/dist/lib/preview-args.d.ts +20 -0
- package/dist/lib/preview-args.d.ts.map +1 -0
- package/dist/lib/preview-args.js +19 -0
- package/dist/lib/preview-args.js.map +1 -0
- package/dist/lib/resolve-slug.d.ts.map +1 -1
- package/dist/lib/resolve-slug.js +9 -2
- package/dist/lib/resolve-slug.js.map +1 -1
- package/dist/lib/safe-json.d.ts +7 -2
- package/dist/lib/safe-json.d.ts.map +1 -1
- package/dist/lib/safe-json.js +23 -4
- package/dist/lib/safe-json.js.map +1 -1
- package/dist/lib/update-check.d.ts +17 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +81 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/upload-limits.d.ts +17 -0
- package/dist/lib/upload-limits.d.ts.map +1 -0
- package/dist/lib/upload-limits.js +17 -0
- package/dist/lib/upload-limits.js.map +1 -0
- package/dist/lib/zip-project.d.ts +19 -0
- package/dist/lib/zip-project.d.ts.map +1 -0
- package/dist/lib/zip-project.js +39 -0
- package/dist/lib/zip-project.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -8
package/dist/commands/doctor.js
CHANGED
|
@@ -1,83 +1,412 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
+
import { execSync } from 'node:child_process';
|
|
4
5
|
import { getToken } from '../lib/config.js';
|
|
5
6
|
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
6
7
|
import { api } from '../lib/api.js';
|
|
8
|
+
import { safeJson } from '../lib/safe-json.js';
|
|
9
|
+
import { checkForUpdate, getCurrentVersion } from '../lib/update-check.js';
|
|
10
|
+
import { walkProject } from '../lib/file-walker.js';
|
|
11
|
+
import { SERVER_UPLOAD_CAP_BYTES, fmtMB } from '../lib/upload-limits.js';
|
|
12
|
+
import { detectStaticFramework } from '../lib/detect-static-framework.js';
|
|
7
13
|
export const doctor = async () => {
|
|
8
14
|
console.log(chalk.green('> pushto doctor\n'));
|
|
9
15
|
const checks = [];
|
|
10
16
|
const cwd = process.cwd();
|
|
11
|
-
//
|
|
17
|
+
// ── 0. CLI health ──
|
|
18
|
+
// Detect the most common CLI-side support tickets up front: stale brew
|
|
19
|
+
// binaries, outdated installs, and version mismatches between what brew
|
|
20
|
+
// thinks is installed and what the binary actually reports. (We hit all
|
|
21
|
+
// three of these ourselves while shipping 0.4.x — the user sees a
|
|
22
|
+
// mysterious "0.0.0-dev" and can't tell if their fix worked.)
|
|
23
|
+
const installedVersion = getCurrentVersion();
|
|
24
|
+
if (installedVersion === '0.0.0-dev') {
|
|
25
|
+
checks.push({
|
|
26
|
+
name: 'cli version',
|
|
27
|
+
status: 'fail',
|
|
28
|
+
message: 'binary reports 0.0.0-dev — version not embedded. reinstall: brew uninstall pushto && brew install mydude-industries/tap/pushto',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
checks.push({ name: 'cli version', status: 'pass', message: installedVersion });
|
|
33
|
+
}
|
|
34
|
+
// Brew/binary mismatch: if you installed via brew, what brew thinks the
|
|
35
|
+
// version is should match what the binary reports. Mismatch usually means
|
|
36
|
+
// a stale shell hash, multiple pushto installs, or a partial brew upgrade.
|
|
37
|
+
if (process.execPath.includes('/Cellar/') || process.execPath.startsWith('/opt/homebrew/') || process.execPath.includes('linuxbrew')) {
|
|
38
|
+
try {
|
|
39
|
+
const brewVersion = execSync('brew list --versions pushto 2>/dev/null', { encoding: 'utf-8' })
|
|
40
|
+
.trim().split(/\s+/)[1] ?? '';
|
|
41
|
+
if (brewVersion && brewVersion !== installedVersion && installedVersion !== '0.0.0-dev') {
|
|
42
|
+
checks.push({
|
|
43
|
+
name: 'brew sync',
|
|
44
|
+
status: 'warn',
|
|
45
|
+
message: `brew has ${brewVersion} but binary reports ${installedVersion}. try: hash -r && pushto --version`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch { /* brew not on PATH or pushto not installed via brew — skip */ }
|
|
50
|
+
}
|
|
51
|
+
// Update available?
|
|
52
|
+
try {
|
|
53
|
+
const updateInfo = await checkForUpdate(false);
|
|
54
|
+
if (updateInfo?.needsUpdate) {
|
|
55
|
+
checks.push({
|
|
56
|
+
name: 'update',
|
|
57
|
+
status: 'warn',
|
|
58
|
+
message: `${updateInfo.current} → ${updateInfo.latest} available. run: pushto upgrade`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch { /* offline or registry down — skip */ }
|
|
63
|
+
// ── 1. Auth ──
|
|
12
64
|
const token = getToken();
|
|
13
65
|
checks.push(token
|
|
14
66
|
? { name: 'auth', status: 'pass', message: 'logged in' }
|
|
15
67
|
: { name: 'auth', status: 'fail', message: 'not logged in. run pushto login' });
|
|
16
|
-
// 2. Project linked
|
|
68
|
+
// ── 2. Project linked ──
|
|
17
69
|
const slug = resolveSlug();
|
|
18
70
|
checks.push(slug
|
|
19
71
|
? { name: 'project', status: 'pass', message: `linked to ${slug}` }
|
|
20
72
|
: { name: 'project', status: 'fail', message: 'no .pushto file. run pushto init <name>' });
|
|
21
|
-
// 3.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
73
|
+
// ── 3. Framework detection (Node + Python + Go + Rust + Ruby) ──
|
|
74
|
+
// The Python branch checks all three install-target files, matching what
|
|
75
|
+
// detect.ts handles in production (pip / pipenv / poetry / PEP 621). Pre-fix
|
|
76
|
+
// doctor only checked requirements.txt — Pipfile-only or pyproject-only
|
|
77
|
+
// projects got "no known project files found" and the user thought their
|
|
78
|
+
// project wasn't supported, even though deploy would work fine.
|
|
79
|
+
const hasPkg = fs.existsSync(path.join(cwd, 'package.json'));
|
|
80
|
+
const hasRequirements = fs.existsSync(path.join(cwd, 'requirements.txt'));
|
|
81
|
+
const hasPipfile = fs.existsSync(path.join(cwd, 'Pipfile'));
|
|
82
|
+
const hasPyproject = fs.existsSync(path.join(cwd, 'pyproject.toml'));
|
|
83
|
+
const hasPython = hasRequirements || hasPipfile || hasPyproject;
|
|
84
|
+
const hasGoMod = fs.existsSync(path.join(cwd, 'go.mod'));
|
|
85
|
+
const hasCargo = fs.existsSync(path.join(cwd, 'Cargo.toml'));
|
|
86
|
+
const hasGemfile = fs.existsSync(path.join(cwd, 'Gemfile'));
|
|
87
|
+
const hasHtml = fs.existsSync(path.join(cwd, 'index.html'));
|
|
88
|
+
let detectedFramework = null;
|
|
89
|
+
let detectedRuntime = null;
|
|
28
90
|
if (hasPkg) {
|
|
29
91
|
try {
|
|
30
|
-
const pkg = JSON.parse(fs.readFileSync(
|
|
92
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(cwd, 'package.json'), 'utf-8'));
|
|
31
93
|
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
94
|
+
detectedRuntime = 'node';
|
|
95
|
+
// Static-output frameworks (vite, astro, gatsby, angular, cra, eleventy)
|
|
96
|
+
// build HERE, on this machine, and ship their output dir — they never
|
|
97
|
+
// need `scripts.start`, so the missing-start-script check below would
|
|
98
|
+
// be a false "fail" for a project that deploys just fine. Check this
|
|
99
|
+
// FIRST and skip the container-shaped checks entirely when it hits.
|
|
100
|
+
const staticFw = detectStaticFramework(cwd);
|
|
101
|
+
if (staticFw) {
|
|
102
|
+
detectedFramework = staticFw.framework;
|
|
103
|
+
checks.push({
|
|
104
|
+
name: 'framework',
|
|
105
|
+
status: 'pass',
|
|
106
|
+
message: `detected ${staticFw.framework}. pushto builds it on this machine and ships ${staticFw.outputDirs[0]}/ as a static site.`,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
detectedFramework =
|
|
111
|
+
deps['next'] ? 'Next.js' :
|
|
112
|
+
deps['vue'] ? 'Vue' :
|
|
113
|
+
deps['svelte'] ? 'Svelte' :
|
|
114
|
+
deps['express'] ? 'Express' :
|
|
115
|
+
deps['fastify'] ? 'Fastify' :
|
|
116
|
+
deps['hono'] ? 'Hono' :
|
|
117
|
+
'Node.js';
|
|
118
|
+
checks.push({ name: 'framework', status: 'pass', message: `detected ${detectedFramework}` });
|
|
119
|
+
if (pkg.scripts?.build) {
|
|
120
|
+
checks.push({ name: 'build script', status: 'pass', message: `"${pkg.scripts.build}"` });
|
|
121
|
+
}
|
|
122
|
+
// The generated Dockerfile's CMD runs `npm start` for every Node
|
|
123
|
+
// framework. If `scripts.start` is missing, the container fails on
|
|
124
|
+
// first run with `npm ERR! Missing script: "start"` — the deploy
|
|
125
|
+
// shows LIVE briefly, then container alive verification flips it
|
|
126
|
+
// to FAILED. doctor catches this up front so the user fixes
|
|
127
|
+
// package.json before they hit the loop.
|
|
128
|
+
if (!pkg.scripts?.start) {
|
|
129
|
+
checks.push({
|
|
130
|
+
name: 'start script',
|
|
131
|
+
status: 'fail',
|
|
132
|
+
message: 'no `scripts.start` in package.json. add `"start": "node <your-entry-file>"` or the container will crash on boot.',
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
checks.push({ name: 'start script', status: 'pass', message: `"${pkg.scripts.start}"` });
|
|
137
|
+
}
|
|
138
|
+
// Node workspace recognition (mirrors detect.ts:detectNodeWorkspace).
|
|
139
|
+
// Without surfacing this, a user with a pnpm/yarn/npm workspace can't
|
|
140
|
+
// tell if pushto's install step will pick up workspace deps — they
|
|
141
|
+
// sometimes pre-emptively flatten the repo for fear of broken builds.
|
|
142
|
+
if (fs.existsSync(path.join(cwd, 'pnpm-workspace.yaml'))) {
|
|
143
|
+
checks.push({
|
|
144
|
+
name: 'workspace',
|
|
145
|
+
status: 'pass',
|
|
146
|
+
message: 'pnpm-workspace.yaml detected. workspace member packages will be installed.',
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
else if (Array.isArray(pkg.workspaces) || (pkg.workspaces && typeof pkg.workspaces === 'object')) {
|
|
150
|
+
checks.push({
|
|
151
|
+
name: 'workspace',
|
|
152
|
+
status: 'pass',
|
|
153
|
+
message: 'npm/yarn workspaces detected. member packages will be installed.',
|
|
154
|
+
});
|
|
155
|
+
}
|
|
55
156
|
}
|
|
56
157
|
}
|
|
57
158
|
catch {
|
|
58
|
-
checks.push({ name: 'package.json', status: 'warn', message: 'could not parse
|
|
159
|
+
checks.push({ name: 'package.json', status: 'warn', message: 'could not parse' });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else if (hasPython) {
|
|
163
|
+
detectedRuntime = 'python';
|
|
164
|
+
// Read whichever target file exists — the framework hint comes from
|
|
165
|
+
// any of pip/pipenv/poetry's dep listings. Pipfile + pyproject.toml
|
|
166
|
+
// both look enough like requirements.txt for the substring sniff to
|
|
167
|
+
// work for the common cases (flask/django/fastapi).
|
|
168
|
+
let depHints = '';
|
|
169
|
+
const installer = hasRequirements ? 'pip'
|
|
170
|
+
: hasPipfile ? 'pipenv'
|
|
171
|
+
: 'poetry/pyproject';
|
|
172
|
+
try {
|
|
173
|
+
if (hasRequirements) {
|
|
174
|
+
depHints = fs.readFileSync(path.join(cwd, 'requirements.txt'), 'utf-8');
|
|
175
|
+
}
|
|
176
|
+
else if (hasPipfile) {
|
|
177
|
+
depHints = fs.readFileSync(path.join(cwd, 'Pipfile'), 'utf-8');
|
|
178
|
+
}
|
|
179
|
+
else if (hasPyproject) {
|
|
180
|
+
depHints = fs.readFileSync(path.join(cwd, 'pyproject.toml'), 'utf-8');
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch { /* unreadable — leave depHints empty, fall through to generic */ }
|
|
184
|
+
const lower = depHints.toLowerCase();
|
|
185
|
+
detectedFramework =
|
|
186
|
+
lower.includes('flask') ? 'Flask' :
|
|
187
|
+
lower.includes('django') ? 'Django' :
|
|
188
|
+
lower.includes('fastapi') ? 'FastAPI' :
|
|
189
|
+
'Python';
|
|
190
|
+
checks.push({ name: 'framework', status: 'pass', message: `detected ${detectedFramework} (${installer})` });
|
|
191
|
+
// Frontend builder recognition (mirrors detect.ts:detectFrontendBuild).
|
|
192
|
+
// Python projects with a sibling JS frontend at frontend/ get a Node
|
|
193
|
+
// builder stage prepended to the Dockerfile that runs install + build,
|
|
194
|
+
// then COPYs the resulting frontend/dist into the Python runtime image.
|
|
195
|
+
// Surface this so users with a Flask+Vite or Django+Vite project know
|
|
196
|
+
// their frontend will actually be built — pre-fix doctor was silent
|
|
197
|
+
// and users would skip pushto thinking JS frontends weren't supported.
|
|
198
|
+
if (fs.existsSync(path.join(cwd, 'frontend/package.json'))) {
|
|
199
|
+
try {
|
|
200
|
+
const fePkg = JSON.parse(fs.readFileSync(path.join(cwd, 'frontend/package.json'), 'utf-8'));
|
|
201
|
+
if (fePkg.scripts?.build) {
|
|
202
|
+
checks.push({
|
|
203
|
+
name: 'frontend',
|
|
204
|
+
status: 'pass',
|
|
205
|
+
message: `frontend/package.json detected with build script — JS frontend will build before backend starts.`,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
checks.push({
|
|
210
|
+
name: 'frontend',
|
|
211
|
+
status: 'warn',
|
|
212
|
+
message: 'frontend/package.json found but no `scripts.build` — frontend stage will be skipped.',
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
checks.push({ name: 'frontend', status: 'warn', message: 'frontend/package.json found but could not parse.' });
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (hasGoMod) {
|
|
222
|
+
detectedRuntime = 'go';
|
|
223
|
+
detectedFramework = 'Go';
|
|
224
|
+
checks.push({ name: 'framework', status: 'pass', message: 'detected Go' });
|
|
225
|
+
}
|
|
226
|
+
else if (hasCargo) {
|
|
227
|
+
detectedRuntime = 'rust';
|
|
228
|
+
detectedFramework = 'Rust';
|
|
229
|
+
checks.push({ name: 'framework', status: 'pass', message: 'detected Rust' });
|
|
230
|
+
}
|
|
231
|
+
else if (hasGemfile) {
|
|
232
|
+
detectedRuntime = 'ruby';
|
|
233
|
+
// Mirror the i89/i91 production detection: sniff Gemfile content
|
|
234
|
+
// for Rails so the doctor confirms what production will pick. Pre-
|
|
235
|
+
// fix doctor said "Ruby" for Rails apps which made users wonder if
|
|
236
|
+
// their Rails-specific concerns (assets pipeline, secret_key_base,
|
|
237
|
+
// rails server) would be handled. Now: explicit Rails recognition.
|
|
238
|
+
let isRails = false;
|
|
239
|
+
try {
|
|
240
|
+
const gemfile = fs.readFileSync(path.join(cwd, 'Gemfile'), 'utf-8');
|
|
241
|
+
isRails = /^\s*gem\s+['"]rails['"]\s*[,)]?/m.test(gemfile);
|
|
59
242
|
}
|
|
243
|
+
catch { /* unreadable — fall through to generic Ruby */ }
|
|
244
|
+
detectedFramework = isRails ? 'Rails' : 'Ruby';
|
|
245
|
+
checks.push({
|
|
246
|
+
name: 'framework',
|
|
247
|
+
status: 'pass',
|
|
248
|
+
message: isRails
|
|
249
|
+
? 'detected Rails — pushto auto-injects SECRET_KEY_BASE and runs assets:precompile'
|
|
250
|
+
: 'detected Ruby',
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
else if (hasHtml) {
|
|
254
|
+
detectedRuntime = 'static';
|
|
255
|
+
detectedFramework = 'static';
|
|
256
|
+
checks.push({ name: 'framework', status: 'pass', message: 'static site (index.html)' });
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
checks.push({ name: 'framework', status: 'warn', message: 'no known project files found.' });
|
|
260
|
+
}
|
|
261
|
+
// ── 4. Env file detection ──
|
|
262
|
+
const envFiles = ['.env.production', '.env'];
|
|
263
|
+
const foundEnv = envFiles.find((f) => fs.existsSync(path.join(cwd, f)));
|
|
264
|
+
if (foundEnv) {
|
|
265
|
+
const content = fs.readFileSync(path.join(cwd, foundEnv), 'utf-8');
|
|
266
|
+
const varCount = content.split('\n').filter((l) => l.trim() && !l.trim().startsWith('#') && l.includes('=')).length;
|
|
267
|
+
checks.push({ name: 'env file', status: 'pass', message: `${foundEnv} found (${varCount} vars). will auto-import on deploy.` });
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
checks.push({ name: 'env file', status: 'warn', message: 'no .env file. if your app needs env vars, create one.' });
|
|
60
271
|
}
|
|
61
|
-
//
|
|
272
|
+
// ── 5. Gitignore checks ──
|
|
273
|
+
// Pre-fix: every check below was nested inside `if (gitignorePath exists)`,
|
|
274
|
+
// so a project with no .gitignore at all triggered ZERO warnings — the
|
|
275
|
+
// worst case (Python user with .venv + no gitignore = 200MB zip that
|
|
276
|
+
// 413s the upload) was completely silent. Now the absence-of-file
|
|
277
|
+
// case is its own warning, with runtime-aware suggestions for what
|
|
278
|
+
// belongs in the file.
|
|
62
279
|
const gitignorePath = path.join(cwd, '.gitignore');
|
|
63
|
-
if (fs.existsSync(gitignorePath)) {
|
|
280
|
+
if (!fs.existsSync(gitignorePath)) {
|
|
281
|
+
const suggested = ['.env', '.pushto'];
|
|
282
|
+
if (detectedRuntime === 'node')
|
|
283
|
+
suggested.push('node_modules');
|
|
284
|
+
if (detectedRuntime === 'python')
|
|
285
|
+
suggested.push('.venv', '__pycache__', '*.pyc');
|
|
286
|
+
if (detectedRuntime === 'rust')
|
|
287
|
+
suggested.push('target');
|
|
288
|
+
if (detectedRuntime === 'go')
|
|
289
|
+
suggested.push('vendor');
|
|
290
|
+
checks.push({
|
|
291
|
+
name: '.gitignore',
|
|
292
|
+
status: 'warn',
|
|
293
|
+
message: `no .gitignore. your deploy will include EVERYTHING in this folder — likely huge and may leak secrets. add a .gitignore with: ${suggested.join(', ')}`,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
64
297
|
const gitignore = fs.readFileSync(gitignorePath, 'utf-8');
|
|
65
|
-
if (!gitignore.includes('node_modules')) {
|
|
66
|
-
checks.push({ name: '.gitignore', status: 'warn', message: 'node_modules not in .gitignore. deploy will be slow.' });
|
|
67
|
-
}
|
|
68
298
|
if (!gitignore.includes('.env')) {
|
|
69
|
-
checks.push({ name: '.gitignore', status: 'warn', message: '.env not
|
|
299
|
+
checks.push({ name: '.gitignore', status: 'warn', message: '.env not gitignored. secrets might leak.' });
|
|
70
300
|
}
|
|
71
301
|
if (!gitignore.includes('.pushto')) {
|
|
72
|
-
checks.push({ name: '.gitignore', status: 'warn', message: '.pushto not
|
|
302
|
+
checks.push({ name: '.gitignore', status: 'warn', message: '.pushto not gitignored. add it.' });
|
|
303
|
+
}
|
|
304
|
+
if (detectedRuntime === 'node' && !gitignore.includes('node_modules')) {
|
|
305
|
+
checks.push({ name: '.gitignore', status: 'warn', message: 'node_modules not gitignored. deploy will be slow.' });
|
|
306
|
+
}
|
|
307
|
+
// Python venv check moved out of section 8 so it fires here next to the
|
|
308
|
+
// other gitignore checks AND only when .gitignore exists (the no-gitignore
|
|
309
|
+
// branch above already covers the "no protection at all" case).
|
|
310
|
+
if (detectedRuntime === 'python') {
|
|
311
|
+
const hasVenv = fs.existsSync(path.join(cwd, '.venv')) || fs.existsSync(path.join(cwd, 'venv'));
|
|
312
|
+
if (hasVenv && !gitignore.includes('venv')) {
|
|
313
|
+
checks.push({ name: '.gitignore', status: 'warn', message: 'venv not gitignored. deploy will be huge.' });
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
// ── 6. Deploy preview ──
|
|
318
|
+
// Run the EXACT same gitignore + walk logic that `pushto` uses to build
|
|
319
|
+
// the deploy zip, then report total size, file count, and the biggest
|
|
320
|
+
// files. This is the "would your deploy work?" sanity check — we'd
|
|
321
|
+
// rather tell you here than have the server 413 mid-upload.
|
|
322
|
+
try {
|
|
323
|
+
const files = walkProject(cwd);
|
|
324
|
+
const totalBytes = files.reduce((sum, f) => sum + f.sizeBytes, 0);
|
|
325
|
+
const biggest = [...files].sort((a, b) => b.sizeBytes - a.sizeBytes).slice(0, 3);
|
|
326
|
+
if (totalBytes > SERVER_UPLOAD_CAP_BYTES) {
|
|
327
|
+
const top = biggest.map((f) => `${f.archivePath} (${fmtMB(f.sizeBytes)})`).join(', ');
|
|
328
|
+
checks.push({
|
|
329
|
+
name: 'deploy size',
|
|
330
|
+
status: 'fail',
|
|
331
|
+
message: `${files.length} files, ${fmtMB(totalBytes)} — exceeds ${fmtMB(SERVER_UPLOAD_CAP_BYTES)} server cap. biggest: ${top}. add to .pushtoignore or .gitignore`,
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
else if (totalBytes > SERVER_UPLOAD_CAP_BYTES * 0.8) {
|
|
335
|
+
const top = biggest.map((f) => `${f.archivePath} (${fmtMB(f.sizeBytes)})`).join(', ');
|
|
336
|
+
checks.push({
|
|
337
|
+
name: 'deploy size',
|
|
338
|
+
status: 'warn',
|
|
339
|
+
message: `${files.length} files, ${fmtMB(totalBytes)} — close to ${fmtMB(SERVER_UPLOAD_CAP_BYTES)} cap. biggest: ${top}`,
|
|
340
|
+
});
|
|
73
341
|
}
|
|
342
|
+
else {
|
|
343
|
+
checks.push({
|
|
344
|
+
name: 'deploy size',
|
|
345
|
+
status: 'pass',
|
|
346
|
+
message: `${files.length} files, ${fmtMB(totalBytes)}`,
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
catch (err) {
|
|
351
|
+
checks.push({
|
|
352
|
+
name: 'deploy size',
|
|
353
|
+
status: 'warn',
|
|
354
|
+
message: `couldn't estimate: ${err instanceof Error ? err.message : 'unknown'}`,
|
|
355
|
+
});
|
|
74
356
|
}
|
|
75
|
-
//
|
|
357
|
+
// ── 7. Remote checks (project exists, env var completeness) ──
|
|
76
358
|
if (token && slug) {
|
|
77
359
|
try {
|
|
78
360
|
const res = await api(`/cli/projects/${slug}`);
|
|
79
361
|
if (res.ok) {
|
|
80
362
|
checks.push({ name: 'api', status: 'pass', message: 'pushto.host reachable' });
|
|
363
|
+
// Check deployment status
|
|
364
|
+
const project = await safeJson(res.clone());
|
|
365
|
+
if (project.status) {
|
|
366
|
+
const s = project.status;
|
|
367
|
+
const isLive = s === 'LIVE' || s === 'SLEEPING';
|
|
368
|
+
const url = project.customDomain ?? (project.subdomain ? `${project.subdomain}.pushto.host` : slug);
|
|
369
|
+
checks.push({
|
|
370
|
+
name: 'deployed',
|
|
371
|
+
status: isLive ? 'pass' : s === 'FAILED' ? 'fail' : 'warn',
|
|
372
|
+
message: isLive
|
|
373
|
+
? `${s.toLowerCase()} at ${url}`
|
|
374
|
+
: s === 'CREATED'
|
|
375
|
+
? 'project created but not deployed yet. run pushto to deploy.'
|
|
376
|
+
: s === 'FAILED'
|
|
377
|
+
? 'last deploy failed. check logs in the dashboard.'
|
|
378
|
+
: `${s.toLowerCase()}...`,
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
// Check env vars on server vs what's in local .env
|
|
382
|
+
const envRes = await api(`/cli/projects/${slug}/env`);
|
|
383
|
+
if (envRes.ok) {
|
|
384
|
+
const serverVars = await safeJson(envRes);
|
|
385
|
+
const serverKeys = new Set(Array.isArray(serverVars) ? serverVars.map((v) => v.key) : []);
|
|
386
|
+
const remoteCount = serverKeys.size;
|
|
387
|
+
if (foundEnv) {
|
|
388
|
+
const localContent = fs.readFileSync(path.join(cwd, foundEnv), 'utf-8');
|
|
389
|
+
const localKeys = [];
|
|
390
|
+
for (const line of localContent.split('\n')) {
|
|
391
|
+
const trimmed = line.trim();
|
|
392
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
393
|
+
continue;
|
|
394
|
+
const eqIdx = trimmed.indexOf('=');
|
|
395
|
+
if (eqIdx > 0)
|
|
396
|
+
localKeys.push(trimmed.slice(0, eqIdx).trim());
|
|
397
|
+
}
|
|
398
|
+
const missing = localKeys.filter((k) => !serverKeys.has(k));
|
|
399
|
+
if (missing.length > 0) {
|
|
400
|
+
checks.push({ name: 'env sync', status: 'warn', message: `${missing.length} local vars not on pushto yet: ${missing.slice(0, 5).join(', ')}${missing.length > 5 ? '...' : ''}. deploy will auto-import.` });
|
|
401
|
+
}
|
|
402
|
+
else if (remoteCount > 0) {
|
|
403
|
+
checks.push({ name: 'env sync', status: 'pass', message: `${remoteCount} env vars synced` });
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
else if (remoteCount > 0) {
|
|
407
|
+
checks.push({ name: 'env vars', status: 'pass', message: `${remoteCount} env vars on pushto` });
|
|
408
|
+
}
|
|
409
|
+
}
|
|
81
410
|
}
|
|
82
411
|
else {
|
|
83
412
|
checks.push({ name: 'api', status: 'fail', message: 'project not found on pushto.host' });
|
|
@@ -87,35 +416,38 @@ export const doctor = async () => {
|
|
|
87
416
|
checks.push({ name: 'api', status: 'fail', message: 'cannot reach pushto.host' });
|
|
88
417
|
}
|
|
89
418
|
}
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
419
|
+
// ── 7.5. Custom build-config files that pushto silently ignores ──
|
|
420
|
+
// pushto does NOT honor user-shipped nixpacks.toml or Dockerfile —
|
|
421
|
+
// the build engine in apps/web/lib/nixpacks/* is hand-rolled and
|
|
422
|
+
// generates its own Dockerfile from framework detection. Pre-fix
|
|
423
|
+
// a user with their own Dockerfile would deploy thinking pushto
|
|
424
|
+
// would use it, then debug for hours when their custom RUN steps
|
|
425
|
+
// never executed. Surface it loudly here so the user knows up
|
|
426
|
+
// front.
|
|
427
|
+
if (fs.existsSync(path.join(cwd, 'nixpacks.toml'))) {
|
|
428
|
+
checks.push({
|
|
429
|
+
name: 'nixpacks.toml',
|
|
430
|
+
status: 'warn',
|
|
431
|
+
message: 'pushto ignores nixpacks.toml — build commands come from auto-detection. delete it or open an issue if you need custom build steps.',
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
if (fs.existsSync(path.join(cwd, 'Dockerfile'))) {
|
|
435
|
+
checks.push({
|
|
436
|
+
name: 'Dockerfile',
|
|
437
|
+
status: 'warn',
|
|
438
|
+
message: 'pushto generates its own Dockerfile and overwrites yours at build time. your custom one is ignored.',
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
// ── 8. Python-specific checks ──
|
|
442
|
+
// venv-not-gitignored check moved up into section 5 (gitignore checks)
|
|
443
|
+
// so the no-gitignore-at-all warning includes venv as a suggested entry.
|
|
444
|
+
if (detectedRuntime === 'python') {
|
|
445
|
+
const hasProcfile = fs.existsSync(path.join(cwd, 'Procfile'));
|
|
446
|
+
if (hasProcfile) {
|
|
447
|
+
checks.push({ name: 'Procfile', status: 'pass', message: 'found (gunicorn/uvicorn start command)' });
|
|
111
448
|
}
|
|
112
|
-
catch { /* permission error, skip */ }
|
|
113
|
-
};
|
|
114
|
-
checkDir(cwd);
|
|
115
|
-
if (largeFiles.length > 0) {
|
|
116
|
-
checks.push({ name: 'large files', status: 'warn', message: `found: ${largeFiles.join(', ')}. will slow deploy.` });
|
|
117
449
|
}
|
|
118
|
-
// Print
|
|
450
|
+
// ── Print ──
|
|
119
451
|
console.log();
|
|
120
452
|
for (const check of checks) {
|
|
121
453
|
const icon = check.status === 'pass' ? chalk.green('✓')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/commands/domain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/commands/domain.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,GAAU,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAkH9E,CAAC"}
|