@pushto/cli 0.0.1 → 0.0.3
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/bin/pushto.js +2 -2
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +85 -21
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +142 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/domain.d.ts +2 -0
- package/dist/commands/domain.d.ts.map +1 -0
- package/dist/commands/domain.js +49 -0
- package/dist/commands/domain.js.map +1 -0
- package/dist/commands/env.d.ts +2 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +109 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +4 -4
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logs.js +2 -2
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/open.d.ts +2 -0
- package/dist/commands/open.d.ts.map +1 -0
- package/dist/commands/open.js +24 -0
- package/dist/commands/open.js.map +1 -0
- package/dist/commands/rollback.d.ts +2 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +41 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/status.js +3 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/index.js +40 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api.js +1 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/resolve-slug.js +1 -1
- package/dist/lib/resolve-slug.js.map +1 -1
- package/package.json +4 -4
- package/src/commands/deploy.ts +4 -4
- package/src/commands/doctor.ts +3 -3
- package/src/commands/domain.ts +2 -2
- package/src/commands/env.ts +3 -3
- package/src/commands/init.ts +2 -2
- package/src/commands/login.ts +2 -2
- package/src/commands/logs.ts +2 -2
- package/src/commands/open.ts +1 -1
- package/src/commands/rollback.ts +3 -3
- package/src/commands/status.ts +3 -3
- package/src/index.ts +10 -10
- package/src/lib/api.ts +1 -1
- package/src/lib/resolve-slug.ts +1 -1
- package/tsconfig.json +12 -2
package/bin/pushto.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import '../
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import '../dist/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAkEA,eAAO,MAAM,MAAM,QAAa,OAAO,CAAC,IAAI,CA0D3C,CAAC"}
|
package/dist/commands/deploy.js
CHANGED
|
@@ -1,8 +1,64 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { execSync } from 'node:child_process';
|
|
6
|
+
import archiver from 'archiver';
|
|
7
|
+
import { getToken } from '../lib/config.js';
|
|
8
|
+
import { api } from '../lib/api.js';
|
|
9
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
10
|
+
const IGNORE = [
|
|
11
|
+
'node_modules',
|
|
12
|
+
'.git',
|
|
13
|
+
'.next',
|
|
14
|
+
'.vercel',
|
|
15
|
+
'.turbo',
|
|
16
|
+
'dist',
|
|
17
|
+
'.pushto',
|
|
18
|
+
'.env',
|
|
19
|
+
'.env.local',
|
|
20
|
+
'.DS_Store',
|
|
21
|
+
];
|
|
22
|
+
const getGitInfo = () => {
|
|
23
|
+
try {
|
|
24
|
+
const hash = execSync('git rev-parse --short HEAD', { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim();
|
|
25
|
+
const message = execSync('git log -1 --pretty=%s', { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim();
|
|
26
|
+
const branch = execSync('git rev-parse --abbrev-ref HEAD', { stdio: ['pipe', 'pipe', 'ignore'] }).toString().trim();
|
|
27
|
+
return { hash, message, branch };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return { hash: null, message: null, branch: 'main' };
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const zipDirectory = (dir) => {
|
|
34
|
+
return new Promise((resolve, reject) => {
|
|
35
|
+
const archive = archiver('zip', { zlib: { level: 9 } });
|
|
36
|
+
const chunks = [];
|
|
37
|
+
archive.on('data', (chunk) => chunks.push(chunk));
|
|
38
|
+
archive.on('end', () => resolve(Buffer.concat(chunks)));
|
|
39
|
+
archive.on('error', reject);
|
|
40
|
+
// Add files, respecting ignores
|
|
41
|
+
const addDir = (dirPath, prefix) => {
|
|
42
|
+
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
if (IGNORE.includes(entry.name))
|
|
45
|
+
continue;
|
|
46
|
+
if (entry.name.startsWith('.') && entry.name !== '.htaccess')
|
|
47
|
+
continue;
|
|
48
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
49
|
+
const archivePath = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
50
|
+
if (entry.isFile()) {
|
|
51
|
+
archive.file(fullPath, { name: archivePath });
|
|
52
|
+
}
|
|
53
|
+
else if (entry.isDirectory()) {
|
|
54
|
+
addDir(fullPath, archivePath);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
addDir(dir, '');
|
|
59
|
+
archive.finalize();
|
|
60
|
+
});
|
|
61
|
+
};
|
|
6
62
|
export const deploy = async () => {
|
|
7
63
|
const token = getToken();
|
|
8
64
|
if (!token) {
|
|
@@ -16,30 +72,38 @@ export const deploy = async () => {
|
|
|
16
72
|
console.log(chalk.dim(' run ') + chalk.cyan('pushto init <name>') + chalk.dim(' to get started.'));
|
|
17
73
|
process.exit(1);
|
|
18
74
|
}
|
|
19
|
-
const spinner = ora('
|
|
75
|
+
const spinner = ora('zipping project...').start();
|
|
20
76
|
try {
|
|
21
|
-
|
|
22
|
-
|
|
77
|
+
const git = getGitInfo();
|
|
78
|
+
// Zip the current directory
|
|
79
|
+
const zipBuffer = await zipDirectory(process.cwd());
|
|
80
|
+
const sizeMB = (zipBuffer.length / 1024 / 1024).toFixed(1);
|
|
81
|
+
spinner.text = `uploading ${sizeMB}MB...`;
|
|
82
|
+
// Upload to the deploy endpoint
|
|
83
|
+
const res = await api(`/cli/projects/${slug}/upload`, {
|
|
84
|
+
method: 'POST',
|
|
85
|
+
headers: {
|
|
86
|
+
'Content-Type': 'application/zip',
|
|
87
|
+
},
|
|
88
|
+
body: new Uint8Array(zipBuffer),
|
|
89
|
+
});
|
|
23
90
|
if (!res.ok) {
|
|
24
91
|
const data = (await res.json());
|
|
25
|
-
spinner.fail(chalk.red(`> ${data.error ??
|
|
92
|
+
spinner.fail(chalk.red(`> ${data.error ?? 'deploy failed.'}`));
|
|
26
93
|
process.exit(1);
|
|
27
94
|
}
|
|
28
|
-
const
|
|
29
|
-
spinner.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
console.log();
|
|
35
|
-
console.log(chalk.dim('
|
|
36
|
-
console.log(chalk.dim(' this exact command will deploy your project to'));
|
|
37
|
-
console.log(chalk.cyan(` ${slug}.pushto.host`));
|
|
38
|
-
console.log();
|
|
39
|
-
console.log(chalk.dim(' you\'re early. that\'s a good thing.'));
|
|
95
|
+
const data = (await res.json());
|
|
96
|
+
spinner.succeed(chalk.green(`> ${data.message}`));
|
|
97
|
+
if (git.hash) {
|
|
98
|
+
console.log(chalk.dim(` commit: ${git.hash} — ${git.message ?? ''}`));
|
|
99
|
+
}
|
|
100
|
+
console.log(chalk.dim(' files: ') + chalk.cyan(String(data.deployment.fileCount)));
|
|
101
|
+
console.log(chalk.dim(' time: ') + chalk.cyan(`${data.deployment.buildDuration}s`));
|
|
102
|
+
console.log(chalk.dim(' url: ') + chalk.cyan(data.url));
|
|
40
103
|
}
|
|
41
|
-
catch {
|
|
42
|
-
|
|
104
|
+
catch (err) {
|
|
105
|
+
const msg = err instanceof Error ? err.message : 'unknown error';
|
|
106
|
+
spinner.fail(chalk.red(`> deploy failed: ${msg}`));
|
|
43
107
|
process.exit(1);
|
|
44
108
|
}
|
|
45
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../src/commands/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { getToken } from '../lib/config.js';
|
|
5
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
6
|
+
import { api } from '../lib/api.js';
|
|
7
|
+
export const doctor = async () => {
|
|
8
|
+
console.log(chalk.green('> pushto doctor\n'));
|
|
9
|
+
const checks = [];
|
|
10
|
+
const cwd = process.cwd();
|
|
11
|
+
// 1. Auth check
|
|
12
|
+
const token = getToken();
|
|
13
|
+
checks.push(token
|
|
14
|
+
? { name: 'auth', status: 'pass', message: 'logged in' }
|
|
15
|
+
: { name: 'auth', status: 'fail', message: 'not logged in. run pushto login' });
|
|
16
|
+
// 2. Project linked
|
|
17
|
+
const slug = resolveSlug();
|
|
18
|
+
checks.push(slug
|
|
19
|
+
? { name: 'project', status: 'pass', message: `linked to ${slug}` }
|
|
20
|
+
: { name: 'project', status: 'fail', message: 'no .pushto file. run pushto init <name>' });
|
|
21
|
+
// 3. Package.json exists
|
|
22
|
+
const pkgPath = path.join(cwd, 'package.json');
|
|
23
|
+
const hasPkg = fs.existsSync(pkgPath);
|
|
24
|
+
checks.push(hasPkg
|
|
25
|
+
? { name: 'package.json', status: 'pass', message: 'found' }
|
|
26
|
+
: { name: 'package.json', status: 'warn', message: 'not found. static site? that works too.' });
|
|
27
|
+
// 4. Framework detection
|
|
28
|
+
if (hasPkg) {
|
|
29
|
+
try {
|
|
30
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
31
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
32
|
+
const framework = deps['next'] ? 'Next.js' :
|
|
33
|
+
deps['react'] ? 'React' :
|
|
34
|
+
deps['vue'] ? 'Vue' :
|
|
35
|
+
deps['svelte'] ? 'Svelte' :
|
|
36
|
+
deps['@sveltejs/kit'] ? 'SvelteKit' :
|
|
37
|
+
deps['astro'] ? 'Astro' :
|
|
38
|
+
deps['nuxt'] ? 'Nuxt' :
|
|
39
|
+
deps['express'] ? 'Express' :
|
|
40
|
+
deps['fastify'] ? 'Fastify' :
|
|
41
|
+
deps['hono'] ? 'Hono' :
|
|
42
|
+
null;
|
|
43
|
+
checks.push(framework
|
|
44
|
+
? { name: 'framework', status: 'pass', message: `detected ${framework}` }
|
|
45
|
+
: { name: 'framework', status: 'warn', message: 'no known framework detected. nixpacks will figure it out.' });
|
|
46
|
+
// 5. Build script
|
|
47
|
+
const hasBuild = pkg.scripts?.build;
|
|
48
|
+
checks.push(hasBuild
|
|
49
|
+
? { name: 'build script', status: 'pass', message: `"${hasBuild}"` }
|
|
50
|
+
: { name: 'build script', status: 'warn', message: 'no build script. might be fine for static sites.' });
|
|
51
|
+
// 6. Node version
|
|
52
|
+
const nodeVersion = pkg.engines?.node;
|
|
53
|
+
if (nodeVersion) {
|
|
54
|
+
checks.push({ name: 'node version', status: 'pass', message: nodeVersion });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
checks.push({ name: 'package.json', status: 'warn', message: 'could not parse package.json' });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// 7. .gitignore check
|
|
62
|
+
const gitignorePath = path.join(cwd, '.gitignore');
|
|
63
|
+
if (fs.existsSync(gitignorePath)) {
|
|
64
|
+
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
|
+
if (!gitignore.includes('.env')) {
|
|
69
|
+
checks.push({ name: '.gitignore', status: 'warn', message: '.env not in .gitignore. secrets might leak.' });
|
|
70
|
+
}
|
|
71
|
+
if (!gitignore.includes('.pushto')) {
|
|
72
|
+
checks.push({ name: '.gitignore', status: 'warn', message: '.pushto not in .gitignore. add it.' });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// 8. Env vars check (if project linked and authed)
|
|
76
|
+
if (token && slug) {
|
|
77
|
+
try {
|
|
78
|
+
const res = await api(`/cli/projects/${slug}`);
|
|
79
|
+
if (res.ok) {
|
|
80
|
+
checks.push({ name: 'api', status: 'pass', message: 'pushto.host reachable' });
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
checks.push({ name: 'api', status: 'fail', message: 'project not found on pushto.host' });
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
checks.push({ name: 'api', status: 'fail', message: 'cannot reach pushto.host' });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// 9. Large files check
|
|
91
|
+
const largeFiles = [];
|
|
92
|
+
const checkDir = (dir, depth = 0) => {
|
|
93
|
+
if (depth > 3)
|
|
94
|
+
return;
|
|
95
|
+
try {
|
|
96
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
97
|
+
for (const entry of entries) {
|
|
98
|
+
if (entry.name === 'node_modules' || entry.name === '.git' || entry.name === '.next')
|
|
99
|
+
continue;
|
|
100
|
+
const full = path.join(dir, entry.name);
|
|
101
|
+
if (entry.isFile()) {
|
|
102
|
+
const stat = fs.statSync(full);
|
|
103
|
+
if (stat.size > 10 * 1024 * 1024) {
|
|
104
|
+
largeFiles.push(`${entry.name} (${Math.round(stat.size / 1024 / 1024)}MB)`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (entry.isDirectory()) {
|
|
108
|
+
checkDir(full, depth + 1);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
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
|
+
}
|
|
118
|
+
// Print results
|
|
119
|
+
console.log();
|
|
120
|
+
for (const check of checks) {
|
|
121
|
+
const icon = check.status === 'pass' ? chalk.green('✓')
|
|
122
|
+
: check.status === 'warn' ? chalk.yellow('⚠')
|
|
123
|
+
: chalk.red('✗');
|
|
124
|
+
const color = check.status === 'pass' ? chalk.dim
|
|
125
|
+
: check.status === 'warn' ? chalk.yellow
|
|
126
|
+
: chalk.red;
|
|
127
|
+
console.log(` ${icon} ${chalk.dim(check.name.padEnd(16))} ${color(check.message)}`);
|
|
128
|
+
}
|
|
129
|
+
const fails = checks.filter((c) => c.status === 'fail');
|
|
130
|
+
const warns = checks.filter((c) => c.status === 'warn');
|
|
131
|
+
console.log();
|
|
132
|
+
if (fails.length > 0) {
|
|
133
|
+
console.log(chalk.red(` ${fails.length} issue${fails.length > 1 ? 's' : ''} to fix before deploying.`));
|
|
134
|
+
}
|
|
135
|
+
else if (warns.length > 0) {
|
|
136
|
+
console.log(chalk.yellow(` ${warns.length} warning${warns.length > 1 ? 's' : ''}. probably fine. deploy when ready.`));
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
console.log(chalk.green(' all good. run pushto to deploy.'));
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/commands/domain.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,MAAM,GAAU,QAAQ,MAAM,EAAE,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAiD9E,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { getToken } from '../lib/config.js';
|
|
3
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
4
|
+
export const domain = async (action, domainName) => {
|
|
5
|
+
const token = getToken();
|
|
6
|
+
if (!token) {
|
|
7
|
+
console.log(chalk.red('> not logged in.'));
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
const slug = resolveSlug();
|
|
11
|
+
if (!slug) {
|
|
12
|
+
console.log(chalk.red('> no project here. run pushto init first.'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
if (action === 'add') {
|
|
16
|
+
if (!domainName) {
|
|
17
|
+
console.log(chalk.red('> usage: pushto domain add yourdomain.com'));
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk.green(`> setting up ${domainName} for ${slug}\n`));
|
|
21
|
+
console.log(chalk.dim(' add this DNS record at your domain provider:\n'));
|
|
22
|
+
console.log(` ${chalk.cyan('Type')} ${chalk.cyan('Name')} ${chalk.cyan('Value')}`);
|
|
23
|
+
console.log(` CNAME @ ${slug}.pushto.host`);
|
|
24
|
+
console.log();
|
|
25
|
+
console.log(chalk.dim(' or if your provider doesn\'t support CNAME on root:\n'));
|
|
26
|
+
console.log(` A @ 76.76.21.21`);
|
|
27
|
+
console.log();
|
|
28
|
+
// TODO: when Cloudflare DNS API is wired, this will:
|
|
29
|
+
// 1. Register the domain in our system
|
|
30
|
+
// 2. Provision SSL via Let's Encrypt
|
|
31
|
+
// 3. Poll DNS until verified
|
|
32
|
+
// 4. Update the project's customDomain field
|
|
33
|
+
console.log(chalk.yellow(' auto-verification coming soon.'));
|
|
34
|
+
console.log(chalk.dim(' for now, add the domain in your dashboard too:'));
|
|
35
|
+
console.log(chalk.cyan(` https://pushto.host/dashboard/projects/${slug}/settings`));
|
|
36
|
+
}
|
|
37
|
+
else if (action === 'remove' || action === 'rm') {
|
|
38
|
+
console.log(chalk.green(`> removing custom domain from ${slug}`));
|
|
39
|
+
console.log(chalk.yellow(' domain management coming soon via CLI.'));
|
|
40
|
+
console.log(chalk.dim(' use the dashboard for now:'));
|
|
41
|
+
console.log(chalk.cyan(` https://pushto.host/dashboard/projects/${slug}/settings`));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.log(chalk.dim(' usage:'));
|
|
45
|
+
console.log(chalk.cyan(' pushto domain add yourdomain.com'));
|
|
46
|
+
console.log(chalk.cyan(' pushto domain remove'));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/commands/domain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,GAAG,GAAU,QAAQ,MAAM,EAAE,MAAM,MAAM,EAAE,KAAG,OAAO,CAAC,IAAI,CAwHtE,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { getToken } from '../lib/config.js';
|
|
5
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
6
|
+
import { api } from '../lib/api.js';
|
|
7
|
+
export const env = async (action, args) => {
|
|
8
|
+
const token = getToken();
|
|
9
|
+
if (!token) {
|
|
10
|
+
console.log(chalk.red('> not logged in.'));
|
|
11
|
+
console.log(chalk.dim(' run ') + chalk.cyan('pushto login') + chalk.dim(' first.'));
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const slug = resolveSlug();
|
|
15
|
+
if (!slug) {
|
|
16
|
+
console.log(chalk.red('> no project here. run pushto init first.'));
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
if (action === 'set') {
|
|
20
|
+
// pushto env set KEY=value
|
|
21
|
+
const pair = args[0];
|
|
22
|
+
if (!pair || !pair.includes('=')) {
|
|
23
|
+
console.log(chalk.red('> usage: pushto env set KEY=value'));
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
const eqIdx = pair.indexOf('=');
|
|
27
|
+
const key = pair.slice(0, eqIdx);
|
|
28
|
+
const value = pair.slice(eqIdx + 1);
|
|
29
|
+
if (!key) {
|
|
30
|
+
console.log(chalk.red('> key is empty.'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
// Call the tRPC mutation via REST-like endpoint
|
|
34
|
+
// We'll use a simple CLI API endpoint for this
|
|
35
|
+
const res = await api(`/cli/projects/${slug}/env`, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
body: JSON.stringify({ key, value }),
|
|
38
|
+
});
|
|
39
|
+
if (!res.ok) {
|
|
40
|
+
const data = (await res.json());
|
|
41
|
+
console.log(chalk.red(`> ${data.error ?? 'failed to set env var.'}`));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
console.log(chalk.green(`> ${key} set.`));
|
|
45
|
+
}
|
|
46
|
+
else if (action === 'list' || action === 'ls') {
|
|
47
|
+
// pushto env list
|
|
48
|
+
const res = await api(`/cli/projects/${slug}/env`);
|
|
49
|
+
if (!res.ok) {
|
|
50
|
+
const data = (await res.json());
|
|
51
|
+
console.log(chalk.red(`> ${data.error ?? 'failed to list env vars.'}`));
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const vars = (await res.json());
|
|
55
|
+
if (vars.length === 0) {
|
|
56
|
+
console.log(chalk.dim('> no env vars set.'));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
console.log(chalk.green(`> ${slug} env vars\n`));
|
|
60
|
+
for (const v of vars) {
|
|
61
|
+
console.log(` ${chalk.cyan(v.key)}=${chalk.dim('••••••••')}`);
|
|
62
|
+
}
|
|
63
|
+
console.log(chalk.dim(`\n ${vars.length} variable${vars.length > 1 ? 's' : ''}`));
|
|
64
|
+
}
|
|
65
|
+
else if (action === 'pull') {
|
|
66
|
+
// pushto env pull — download to .env
|
|
67
|
+
const res = await api(`/cli/projects/${slug}/env`);
|
|
68
|
+
if (!res.ok) {
|
|
69
|
+
const data = (await res.json());
|
|
70
|
+
console.log(chalk.red(`> ${data.error ?? 'failed to pull env vars.'}`));
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const vars = (await res.json());
|
|
74
|
+
if (vars.length === 0) {
|
|
75
|
+
console.log(chalk.dim('> no env vars to pull.'));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const envContent = vars.map((v) => `${v.key}=${v.value}`).join('\n') + '\n';
|
|
79
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
80
|
+
fs.writeFileSync(envPath, envContent);
|
|
81
|
+
console.log(chalk.green(`> pulled ${vars.length} var${vars.length > 1 ? 's' : ''} to .env`));
|
|
82
|
+
console.log(chalk.dim(' make sure .env is in your .gitignore.'));
|
|
83
|
+
}
|
|
84
|
+
else if (action === 'rm' || action === 'remove' || action === 'delete') {
|
|
85
|
+
const key = args[0];
|
|
86
|
+
if (!key) {
|
|
87
|
+
console.log(chalk.red('> usage: pushto env rm KEY'));
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
const res = await api(`/cli/projects/${slug}/env`, {
|
|
91
|
+
method: 'DELETE',
|
|
92
|
+
body: JSON.stringify({ key }),
|
|
93
|
+
});
|
|
94
|
+
if (!res.ok) {
|
|
95
|
+
const data = (await res.json());
|
|
96
|
+
console.log(chalk.red(`> ${data.error ?? 'failed to delete env var.'}`));
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
console.log(chalk.green(`> ${key} removed.`));
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.log(chalk.dim(' usage:'));
|
|
103
|
+
console.log(chalk.cyan(' pushto env set KEY=value'));
|
|
104
|
+
console.log(chalk.cyan(' pushto env list'));
|
|
105
|
+
console.log(chalk.cyan(' pushto env pull'));
|
|
106
|
+
console.log(chalk.cyan(' pushto env rm KEY'));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -2,8 +2,8 @@ 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 { getToken, setProjectSlug } from '../lib/config';
|
|
6
|
-
import { api } from '../lib/api';
|
|
5
|
+
import { getToken, setProjectSlug } from '../lib/config.js';
|
|
6
|
+
import { api } from '../lib/api.js';
|
|
7
7
|
export const init = async (name) => {
|
|
8
8
|
const token = getToken();
|
|
9
9
|
if (!token) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import http from 'node:http';
|
|
3
|
-
import { setToken, config } from '../lib/config';
|
|
4
|
-
import { api } from '../lib/api';
|
|
3
|
+
import { setToken, config } from '../lib/config.js';
|
|
4
|
+
import { api } from '../lib/api.js';
|
|
5
5
|
export const login = async () => {
|
|
6
6
|
const baseUrl = config.get('apiUrl');
|
|
7
7
|
// Start a local server to receive the callback
|
|
@@ -9,7 +9,7 @@ export const login = async () => {
|
|
|
9
9
|
// Handle CORS preflight
|
|
10
10
|
if (req.method === 'OPTIONS') {
|
|
11
11
|
res.writeHead(200, {
|
|
12
|
-
'Access-Control-Allow-Origin':
|
|
12
|
+
'Access-Control-Allow-Origin': baseUrl,
|
|
13
13
|
'Access-Control-Allow-Methods': 'POST, OPTIONS',
|
|
14
14
|
'Access-Control-Allow-Headers': 'Content-Type',
|
|
15
15
|
});
|
|
@@ -22,7 +22,7 @@ export const login = async () => {
|
|
|
22
22
|
req.on('end', async () => {
|
|
23
23
|
res.writeHead(200, {
|
|
24
24
|
'Content-Type': 'application/json',
|
|
25
|
-
'Access-Control-Allow-Origin':
|
|
25
|
+
'Access-Control-Allow-Origin': baseUrl,
|
|
26
26
|
});
|
|
27
27
|
res.end(JSON.stringify({ ok: true }));
|
|
28
28
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/logs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getToken } from '../lib/config';
|
|
3
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
2
|
+
import { getToken } from '../lib/config.js';
|
|
3
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
4
4
|
export const logs = async () => {
|
|
5
5
|
const token = getToken();
|
|
6
6
|
if (!token) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IAC5C,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,IAAI,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE/C,mDAAmD;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6EAA6E,CAAC,CAAC,CAAC;AAC3G,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,IAAI,QAAa,OAAO,CAAC,IAAI,CAsBzC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
4
|
+
export const open = async () => {
|
|
5
|
+
const slug = resolveSlug();
|
|
6
|
+
if (!slug) {
|
|
7
|
+
console.log(chalk.red('> no project here. run pushto init first.'));
|
|
8
|
+
process.exit(1);
|
|
9
|
+
}
|
|
10
|
+
const url = `https://${slug}.pushto.host`;
|
|
11
|
+
console.log(chalk.green(`> opening ${url}`));
|
|
12
|
+
const cmd = process.platform === 'darwin'
|
|
13
|
+
? `open "${url}"`
|
|
14
|
+
: process.platform === 'win32'
|
|
15
|
+
? `start "${url}"`
|
|
16
|
+
: `xdg-open "${url}"`;
|
|
17
|
+
try {
|
|
18
|
+
execSync(cmd, { stdio: 'ignore' });
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
console.log(chalk.dim(` couldn't open browser. go to: `) + chalk.cyan(url));
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IAC5C,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,WAAW,IAAI,cAAc,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;IAE7C,MAAM,GAAG,GACP,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,SAAS,GAAG,GAAG;QACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,UAAU,GAAG,GAAG;YAClB,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;IAE5B,IAAI,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAoC7D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { getToken } from '../lib/config.js';
|
|
4
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
5
|
+
export const rollback = async (version) => {
|
|
6
|
+
const token = getToken();
|
|
7
|
+
if (!token) {
|
|
8
|
+
console.log(chalk.red('> not logged in.'));
|
|
9
|
+
process.exit(1);
|
|
10
|
+
}
|
|
11
|
+
const slug = resolveSlug();
|
|
12
|
+
if (!slug) {
|
|
13
|
+
console.log(chalk.red('> no project here. run pushto init first.'));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
const spinner = ora('rolling back...').start();
|
|
17
|
+
try {
|
|
18
|
+
// TODO: when build engine is live, this will call the rollback API
|
|
19
|
+
// which restores the previous Fly Machine image
|
|
20
|
+
spinner.info(chalk.yellow('> rollback is ready to wire up.'));
|
|
21
|
+
console.log();
|
|
22
|
+
console.log(chalk.dim(' when the build engine is live, this command will:'));
|
|
23
|
+
console.log(chalk.dim(' 1. find the last working deployment'));
|
|
24
|
+
console.log(chalk.dim(' 2. restore that container image'));
|
|
25
|
+
console.log(chalk.dim(' 3. update DNS to point to it'));
|
|
26
|
+
console.log(chalk.dim(' 4. mark the current deploy as rolled back'));
|
|
27
|
+
console.log();
|
|
28
|
+
if (version) {
|
|
29
|
+
console.log(chalk.dim(` target version: v${version}`));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(chalk.dim(' target: previous working deploy'));
|
|
33
|
+
}
|
|
34
|
+
console.log(chalk.dim(" you're early. this will work soon."));
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
spinner.fail(chalk.red('> rollback failed.'));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=rollback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAgB,EAAiB,EAAE;IAChE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC;IAE/C,IAAI,CAAC;QACH,mEAAmE;QACnE,gDAAgD;QAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
package/dist/commands/status.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getToken } from '../lib/config';
|
|
3
|
-
import { api } from '../lib/api';
|
|
4
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
2
|
+
import { getToken } from '../lib/config.js';
|
|
3
|
+
import { api } from '../lib/api.js';
|
|
4
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
5
5
|
const STATUS_COLORS = {
|
|
6
6
|
CREATED: chalk.dim,
|
|
7
7
|
BUILDING: chalk.yellow,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
-
import { init } from './commands/init';
|
|
5
|
-
import { deploy } from './commands/deploy';
|
|
6
|
-
import { login } from './commands/login';
|
|
7
|
-
import { logs } from './commands/logs';
|
|
8
|
-
import { status } from './commands/status';
|
|
4
|
+
import { init } from './commands/init.js';
|
|
5
|
+
import { deploy } from './commands/deploy.js';
|
|
6
|
+
import { login } from './commands/login.js';
|
|
7
|
+
import { logs } from './commands/logs.js';
|
|
8
|
+
import { status } from './commands/status.js';
|
|
9
|
+
import { doctor } from './commands/doctor.js';
|
|
10
|
+
import { env } from './commands/env.js';
|
|
11
|
+
import { open } from './commands/open.js';
|
|
12
|
+
import { rollback } from './commands/rollback.js';
|
|
13
|
+
import { domain } from './commands/domain.js';
|
|
9
14
|
const program = new Command();
|
|
10
15
|
program
|
|
11
16
|
.name('pushto')
|
|
12
17
|
.description(chalk.green('pushto') + chalk.dim(' — deploy from your terminal. no yaml. no drama.'))
|
|
13
18
|
.version('0.0.1')
|
|
14
19
|
.action(async () => {
|
|
15
|
-
// bare `pushto` command = deploy
|
|
16
20
|
await deploy();
|
|
17
21
|
});
|
|
18
22
|
program
|
|
@@ -39,5 +43,35 @@ program
|
|
|
39
43
|
.action(async () => {
|
|
40
44
|
await status();
|
|
41
45
|
});
|
|
46
|
+
program
|
|
47
|
+
.command('doctor')
|
|
48
|
+
.description('check if your project is ready to deploy')
|
|
49
|
+
.action(async () => {
|
|
50
|
+
await doctor();
|
|
51
|
+
});
|
|
52
|
+
program
|
|
53
|
+
.command('env <action> [args...]')
|
|
54
|
+
.description('manage environment variables (set, list, pull, rm)')
|
|
55
|
+
.action(async (action, args) => {
|
|
56
|
+
await env(action, args);
|
|
57
|
+
});
|
|
58
|
+
program
|
|
59
|
+
.command('open')
|
|
60
|
+
.description('open your live site in the browser')
|
|
61
|
+
.action(async () => {
|
|
62
|
+
await open();
|
|
63
|
+
});
|
|
64
|
+
program
|
|
65
|
+
.command('rollback [version]')
|
|
66
|
+
.description('rollback to a previous deployment')
|
|
67
|
+
.action(async (version) => {
|
|
68
|
+
await rollback(version);
|
|
69
|
+
});
|
|
70
|
+
program
|
|
71
|
+
.command('domain <action> [domain]')
|
|
72
|
+
.description('manage custom domains (add, remove)')
|
|
73
|
+
.action(async (action, domainName) => {
|
|
74
|
+
await domain(action, domainName);
|
|
75
|
+
});
|
|
42
76
|
program.parse();
|
|
43
77
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api.js
CHANGED
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,IAAY,EAAE,UAAuB,EAAE,EAAqB,EAAE;IACtF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,GAAG,CAAE,OAAO,CAAC,OAAkC,IAAI,EAAE,CAAC;KACvD,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,OAAO,OAAO,IAAI,EAAE,EAAE;QACpC,GAAG,OAAO;QACV,OAAO;KACR,CAAC,CAAC;AACL,CAAC,CAAC"}
|
package/dist/lib/resolve-slug.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-slug.js","sourceRoot":"","sources":["../../src/lib/resolve-slug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"resolve-slug.js","sourceRoot":"","sources":["../../src/lib/resolve-slug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,GAAuB,EAAE;IAClD,gCAAgC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,6BAA6B;IAC7B,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pushto/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Deploy to pushto.host from your terminal",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"pushto": "./bin/pushto.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"build": "tsc
|
|
10
|
+
"build": "tsc",
|
|
11
11
|
"dev": "tsx src/index.ts",
|
|
12
|
-
"lint": "tsc --noEmit"
|
|
12
|
+
"lint": "tsc --noEmit",
|
|
13
|
+
"prepublishOnly": "tsc"
|
|
13
14
|
},
|
|
14
15
|
"dependencies": {
|
|
15
|
-
"@pushto/shared": "workspace:*",
|
|
16
16
|
"archiver": "^7.0.1",
|
|
17
17
|
"chalk": "^5.4.0",
|
|
18
18
|
"commander": "^13.0.0",
|
package/src/commands/deploy.ts
CHANGED
|
@@ -4,9 +4,9 @@ import fs from 'node:fs';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { execSync } from 'node:child_process';
|
|
6
6
|
import archiver from 'archiver';
|
|
7
|
-
import { getToken } from '../lib/config';
|
|
8
|
-
import { api } from '../lib/api';
|
|
9
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
7
|
+
import { getToken } from '../lib/config.js';
|
|
8
|
+
import { api } from '../lib/api.js';
|
|
9
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
10
10
|
|
|
11
11
|
const IGNORE = [
|
|
12
12
|
'node_modules',
|
|
@@ -95,7 +95,7 @@ export const deploy = async (): Promise<void> => {
|
|
|
95
95
|
headers: {
|
|
96
96
|
'Content-Type': 'application/zip',
|
|
97
97
|
},
|
|
98
|
-
body: zipBuffer,
|
|
98
|
+
body: new Uint8Array(zipBuffer),
|
|
99
99
|
});
|
|
100
100
|
|
|
101
101
|
if (!res.ok) {
|
package/src/commands/doctor.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { getToken } from '../lib/config';
|
|
5
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
6
|
-
import { api } from '../lib/api';
|
|
4
|
+
import { getToken } from '../lib/config.js';
|
|
5
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
6
|
+
import { api } from '../lib/api.js';
|
|
7
7
|
|
|
8
8
|
interface Check {
|
|
9
9
|
name: string;
|
package/src/commands/domain.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getToken } from '../lib/config';
|
|
3
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
2
|
+
import { getToken } from '../lib/config.js';
|
|
3
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
4
4
|
|
|
5
5
|
export const domain = async (action: string, domainName?: string): Promise<void> => {
|
|
6
6
|
const token = getToken();
|
package/src/commands/env.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
|
-
import { getToken } from '../lib/config';
|
|
5
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
6
|
-
import { api } from '../lib/api';
|
|
4
|
+
import { getToken } from '../lib/config.js';
|
|
5
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
6
|
+
import { api } from '../lib/api.js';
|
|
7
7
|
|
|
8
8
|
export const env = async (action: string, args: string[]): Promise<void> => {
|
|
9
9
|
const token = getToken();
|
package/src/commands/init.ts
CHANGED
|
@@ -2,8 +2,8 @@ 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 { getToken, setProjectSlug } from '../lib/config';
|
|
6
|
-
import { api } from '../lib/api';
|
|
5
|
+
import { getToken, setProjectSlug } from '../lib/config.js';
|
|
6
|
+
import { api } from '../lib/api.js';
|
|
7
7
|
|
|
8
8
|
export const init = async (name: string): Promise<void> => {
|
|
9
9
|
const token = getToken();
|
package/src/commands/login.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import http from 'node:http';
|
|
3
|
-
import { setToken, config } from '../lib/config';
|
|
4
|
-
import { api } from '../lib/api';
|
|
3
|
+
import { setToken, config } from '../lib/config.js';
|
|
4
|
+
import { api } from '../lib/api.js';
|
|
5
5
|
|
|
6
6
|
export const login = async (): Promise<void> => {
|
|
7
7
|
const baseUrl = config.get('apiUrl');
|
package/src/commands/logs.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getToken } from '../lib/config';
|
|
3
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
2
|
+
import { getToken } from '../lib/config.js';
|
|
3
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
4
4
|
|
|
5
5
|
export const logs = async (): Promise<void> => {
|
|
6
6
|
const token = getToken();
|
package/src/commands/open.ts
CHANGED
package/src/commands/rollback.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
|
-
import { getToken } from '../lib/config';
|
|
4
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
5
|
-
import { api } from '../lib/api';
|
|
3
|
+
import { getToken } from '../lib/config.js';
|
|
4
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
5
|
+
import { api } from '../lib/api.js';
|
|
6
6
|
|
|
7
7
|
export const rollback = async (version?: string): Promise<void> => {
|
|
8
8
|
const token = getToken();
|
package/src/commands/status.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
|
-
import { getToken } from '../lib/config';
|
|
3
|
-
import { api } from '../lib/api';
|
|
4
|
-
import { resolveSlug } from '../lib/resolve-slug';
|
|
2
|
+
import { getToken } from '../lib/config.js';
|
|
3
|
+
import { api } from '../lib/api.js';
|
|
4
|
+
import { resolveSlug } from '../lib/resolve-slug.js';
|
|
5
5
|
|
|
6
6
|
const STATUS_COLORS: Record<string, (s: string) => string> = {
|
|
7
7
|
CREATED: chalk.dim,
|
package/src/index.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import chalk from 'chalk';
|
|
4
|
-
import { init } from './commands/init';
|
|
5
|
-
import { deploy } from './commands/deploy';
|
|
6
|
-
import { login } from './commands/login';
|
|
7
|
-
import { logs } from './commands/logs';
|
|
8
|
-
import { status } from './commands/status';
|
|
9
|
-
import { doctor } from './commands/doctor';
|
|
10
|
-
import { env } from './commands/env';
|
|
11
|
-
import { open } from './commands/open';
|
|
12
|
-
import { rollback } from './commands/rollback';
|
|
13
|
-
import { domain } from './commands/domain';
|
|
4
|
+
import { init } from './commands/init.js';
|
|
5
|
+
import { deploy } from './commands/deploy.js';
|
|
6
|
+
import { login } from './commands/login.js';
|
|
7
|
+
import { logs } from './commands/logs.js';
|
|
8
|
+
import { status } from './commands/status.js';
|
|
9
|
+
import { doctor } from './commands/doctor.js';
|
|
10
|
+
import { env } from './commands/env.js';
|
|
11
|
+
import { open } from './commands/open.js';
|
|
12
|
+
import { rollback } from './commands/rollback.js';
|
|
13
|
+
import { domain } from './commands/domain.js';
|
|
14
14
|
|
|
15
15
|
const program = new Command();
|
|
16
16
|
|
package/src/lib/api.ts
CHANGED
package/src/lib/resolve-slug.ts
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "../../tsconfig.json",
|
|
3
2
|
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
4
6
|
"outDir": "./dist",
|
|
5
|
-
"rootDir": "./src"
|
|
7
|
+
"rootDir": "./src",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"esModuleInterop": true,
|
|
10
|
+
"skipLibCheck": true,
|
|
11
|
+
"forceConsistentCasingInFileNames": true,
|
|
12
|
+
"resolveJsonModule": true,
|
|
13
|
+
"declaration": true,
|
|
14
|
+
"declarationMap": true,
|
|
15
|
+
"sourceMap": true
|
|
6
16
|
},
|
|
7
17
|
"include": ["src"]
|
|
8
18
|
}
|