gazill 2.0.0 → 2.2.0
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/autoscale.d.ts +5 -0
- package/dist/commands/autoscale.d.ts.map +1 -0
- package/dist/commands/autoscale.js +140 -0
- package/dist/commands/autoscale.js.map +1 -0
- package/dist/commands/blob.d.ts +19 -0
- package/dist/commands/blob.d.ts.map +1 -0
- package/dist/commands/blob.js +383 -0
- package/dist/commands/blob.js.map +1 -0
- package/dist/commands/cron.d.ts +27 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +333 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/db.d.ts +21 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +567 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/domains.d.ts +5 -0
- package/dist/commands/domains.d.ts.map +1 -0
- package/dist/commands/domains.js +239 -0
- package/dist/commands/domains.js.map +1 -0
- package/dist/commands/env.d.ts +4 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +180 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/health.d.ts +7 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +189 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/limits.d.ts +2 -0
- package/dist/commands/limits.d.ts.map +1 -0
- package/dist/commands/limits.js +186 -0
- package/dist/commands/limits.js.map +1 -0
- package/dist/commands/new.d.ts.map +1 -1
- package/dist/commands/new.js +29 -3
- package/dist/commands/new.js.map +1 -1
- package/dist/commands/promote.d.ts.map +1 -1
- package/dist/commands/promote.js +36 -9
- package/dist/commands/promote.js.map +1 -1
- package/dist/commands/rollback.d.ts +9 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +154 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +24 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/usage.d.ts +2 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +63 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/worker.d.ts +31 -0
- package/dist/commands/worker.d.ts.map +1 -0
- package/dist/commands/worker.js +380 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/index.js +297 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +59 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +21 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/shared/constants.d.ts +10 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +11 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +40 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function autoscaleShowCommand(projectName?: string): Promise<void>;
|
|
2
|
+
export declare function autoscaleEnableCommand(projectName?: string): Promise<void>;
|
|
3
|
+
export declare function autoscaleDisableCommand(projectName?: string): Promise<void>;
|
|
4
|
+
export declare function autoscaleMaxCommand(size: string, projectName?: string): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=autoscale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoscale.d.ts","sourceRoot":"","sources":["../../src/commands/autoscale.ts"],"names":[],"mappings":"AAwEA,wBAAsB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C9E;AAED,wBAAsB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED,wBAAsB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjF;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3F"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import ora from 'ora';
|
|
5
|
+
import { listProjects, setAutoscale } from '../lib/api.js';
|
|
6
|
+
import { isAuthenticated } from '../lib/config.js';
|
|
7
|
+
const POD_SIZES = ['small', 'medium', 'large', 'xl'];
|
|
8
|
+
const SIZE_INFO = {
|
|
9
|
+
small: { memory: '512MB', cpu: '0.5', cost: '$0.01/hr' },
|
|
10
|
+
medium: { memory: '1GB', cpu: '1.0', cost: '$0.02/hr' },
|
|
11
|
+
large: { memory: '2GB', cpu: '2.0', cost: '$0.04/hr' },
|
|
12
|
+
xl: { memory: '4GB', cpu: '4.0', cost: '$0.08/hr' },
|
|
13
|
+
};
|
|
14
|
+
async function getCurrentProjectConfig() {
|
|
15
|
+
try {
|
|
16
|
+
const projectDir = process.cwd();
|
|
17
|
+
const projectConfigPath = path.join(projectDir, '.gazill', 'project.json');
|
|
18
|
+
const content = await fs.readFile(projectConfigPath, 'utf-8');
|
|
19
|
+
return JSON.parse(content);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function getProductionProject(projectName) {
|
|
26
|
+
const { projects } = await listProjects();
|
|
27
|
+
if (projectName) {
|
|
28
|
+
const project = projects.find((p) => p.name === projectName);
|
|
29
|
+
if (!project) {
|
|
30
|
+
throw new Error(`Project "${projectName}" not found`);
|
|
31
|
+
}
|
|
32
|
+
if (!project.prodStatus) {
|
|
33
|
+
throw new Error(`Project "${projectName}" is not in production. Run "gazill promote" first.`);
|
|
34
|
+
}
|
|
35
|
+
return project;
|
|
36
|
+
}
|
|
37
|
+
// Try to get current project from directory
|
|
38
|
+
const currentConfig = await getCurrentProjectConfig();
|
|
39
|
+
if (currentConfig) {
|
|
40
|
+
const project = projects.find((p) => p.name === currentConfig.name);
|
|
41
|
+
if (project && project.prodStatus) {
|
|
42
|
+
return project;
|
|
43
|
+
}
|
|
44
|
+
if (project && !project.prodStatus) {
|
|
45
|
+
throw new Error(`Project "${project.name}" is not in production. Run "gazill promote" first.`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Show list of production projects
|
|
49
|
+
const prodProjects = projects.filter((p) => p.prodStatus);
|
|
50
|
+
if (prodProjects.length === 0) {
|
|
51
|
+
throw new Error('No production projects found. Promote a project first with "gazill promote".');
|
|
52
|
+
}
|
|
53
|
+
if (prodProjects.length === 1) {
|
|
54
|
+
return prodProjects[0];
|
|
55
|
+
}
|
|
56
|
+
console.log(chalk.yellow('Multiple production projects found. Specify a project name.'));
|
|
57
|
+
console.log('\nProduction projects:');
|
|
58
|
+
for (const p of prodProjects) {
|
|
59
|
+
console.log(` - ${p.name}`);
|
|
60
|
+
}
|
|
61
|
+
throw new Error('Please specify a project name: gazill autoscale [command] <project>');
|
|
62
|
+
}
|
|
63
|
+
export async function autoscaleShowCommand(projectName) {
|
|
64
|
+
if (!(await isAuthenticated())) {
|
|
65
|
+
console.log(chalk.red('Please log in first.'));
|
|
66
|
+
console.log(chalk.gray('Run "gazill login" to authenticate.'));
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const spinner = ora('Fetching autoscale status...').start();
|
|
70
|
+
try {
|
|
71
|
+
const project = await getProductionProject(projectName);
|
|
72
|
+
spinner.stop();
|
|
73
|
+
const currentSize = (project.prodPodSize || 'small');
|
|
74
|
+
const maxSize = (project.maxPodSize || 'small');
|
|
75
|
+
const isEnabled = maxSize !== 'small';
|
|
76
|
+
console.log(chalk.bold(`\nAutoscaling for ${chalk.blue(project.name)}:\n`));
|
|
77
|
+
console.log(`Current Size: ${chalk.cyan(currentSize.toUpperCase())}`);
|
|
78
|
+
console.log(` Memory: ${SIZE_INFO[currentSize].memory}, CPU: ${SIZE_INFO[currentSize].cpu}`);
|
|
79
|
+
console.log(` Cost: ${SIZE_INFO[currentSize].cost}`);
|
|
80
|
+
console.log('');
|
|
81
|
+
console.log(`Max Size: ${chalk.cyan(maxSize.toUpperCase())}`);
|
|
82
|
+
if (isEnabled) {
|
|
83
|
+
console.log(chalk.green(` Autoscaling enabled up to ${maxSize}`));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
console.log(chalk.gray(' Autoscaling disabled (max = small)'));
|
|
87
|
+
}
|
|
88
|
+
console.log('');
|
|
89
|
+
console.log(chalk.gray('Available tiers:'));
|
|
90
|
+
for (const size of POD_SIZES) {
|
|
91
|
+
const info = SIZE_INFO[size];
|
|
92
|
+
const marker = size === currentSize ? chalk.green(' [current]') : '';
|
|
93
|
+
const maxMarker = size === maxSize && isEnabled ? chalk.blue(' [max]') : '';
|
|
94
|
+
console.log(` ${size.padEnd(6)} - ${info.memory.padEnd(6)} ${info.cpu.padEnd(4)} CPU ${info.cost}${marker}${maxMarker}`);
|
|
95
|
+
}
|
|
96
|
+
console.log('');
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
const message = error instanceof Error ? error.message : 'Failed to fetch autoscale status';
|
|
100
|
+
spinner.fail(chalk.red(message));
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export async function autoscaleEnableCommand(projectName) {
|
|
105
|
+
await autoscaleMaxCommand('xl', projectName);
|
|
106
|
+
}
|
|
107
|
+
export async function autoscaleDisableCommand(projectName) {
|
|
108
|
+
await autoscaleMaxCommand('small', projectName);
|
|
109
|
+
}
|
|
110
|
+
export async function autoscaleMaxCommand(size, projectName) {
|
|
111
|
+
if (!(await isAuthenticated())) {
|
|
112
|
+
console.log(chalk.red('Please log in first.'));
|
|
113
|
+
console.log(chalk.gray('Run "gazill login" to authenticate.'));
|
|
114
|
+
process.exit(1);
|
|
115
|
+
}
|
|
116
|
+
const normalizedSize = size.toLowerCase();
|
|
117
|
+
if (!POD_SIZES.includes(normalizedSize)) {
|
|
118
|
+
console.log(chalk.red(`Invalid size "${size}". Valid sizes: ${POD_SIZES.join(', ')}`));
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
const spinner = ora('Updating autoscale settings...').start();
|
|
122
|
+
try {
|
|
123
|
+
const project = await getProductionProject(projectName);
|
|
124
|
+
const result = await setAutoscale(project.id, normalizedSize);
|
|
125
|
+
spinner.succeed(chalk.green(result.message));
|
|
126
|
+
if (result.autoscalingEnabled) {
|
|
127
|
+
console.log('');
|
|
128
|
+
console.log(chalk.gray('The system will automatically scale your production container'));
|
|
129
|
+
console.log(chalk.gray('when resource usage exceeds 80% for 10+ minutes.'));
|
|
130
|
+
console.log('');
|
|
131
|
+
console.log(chalk.gray('Scale down occurs when usage stays below 30% for 30+ minutes.'));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
const message = error instanceof Error ? error.message : 'Failed to update autoscale settings';
|
|
136
|
+
spinner.fail(chalk.red(message));
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=autoscale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoscale.js","sourceRoot":"","sources":["../../src/commands/autoscale.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function blobEnableCommand(projectName?: string): Promise<void>;
|
|
2
|
+
export declare function blobDisableCommand(projectName?: string): Promise<void>;
|
|
3
|
+
export declare function blobListCommand(projectName?: string): Promise<void>;
|
|
4
|
+
export declare function blobUploadCommand(filePath: string, options?: {
|
|
5
|
+
project?: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
export declare function blobDeleteCommand(filename: string, options?: {
|
|
10
|
+
project?: string;
|
|
11
|
+
path?: string;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function blobUrlCommand(filename: string, options?: {
|
|
14
|
+
project?: string;
|
|
15
|
+
path?: string;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
export declare function blobUsageCommand(projectName?: string): Promise<void>;
|
|
18
|
+
export declare function blobInfoCommand(projectName?: string): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=blob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/commands/blob.ts"],"names":[],"mappings":"AAoHA,wBAAsB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C3E;AAGD,wBAAsB,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC5E;AAGD,wBAAsB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAGD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAAC,IAAI,CAAC,CA+Df;AAGD,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAuCf;AAGD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CAmCf;AAGD,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD1E;AAGD,wBAAsB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDzE"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { getAuth, getApiUrl } from '../lib/config.js';
|
|
6
|
+
import { listProjects } from '../lib/api.js';
|
|
7
|
+
// API helper for storage routes
|
|
8
|
+
async function storageApiRequest(endpoint, options = { method: 'GET' }) {
|
|
9
|
+
const apiUrl = await getApiUrl();
|
|
10
|
+
const auth = await getAuth();
|
|
11
|
+
if (!auth?.token) {
|
|
12
|
+
throw new Error('Not authenticated');
|
|
13
|
+
}
|
|
14
|
+
const headers = {
|
|
15
|
+
Authorization: `Bearer ${auth.token}`,
|
|
16
|
+
};
|
|
17
|
+
// Don't set Content-Type for FormData - fetch will set it with boundary
|
|
18
|
+
if (!options.formData) {
|
|
19
|
+
headers['Content-Type'] = 'application/json';
|
|
20
|
+
}
|
|
21
|
+
const response = await fetch(`${apiUrl}${endpoint}`, {
|
|
22
|
+
method: options.method,
|
|
23
|
+
headers,
|
|
24
|
+
body: options.formData || (options.body ? JSON.stringify(options.body) : undefined),
|
|
25
|
+
});
|
|
26
|
+
const data = await response.json();
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
throw new Error(data.message || 'Request failed');
|
|
29
|
+
}
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
// Get current project ID from .gazill file
|
|
33
|
+
async function getProjectId() {
|
|
34
|
+
try {
|
|
35
|
+
const content = await fs.readFile('.gazill', 'utf-8');
|
|
36
|
+
const data = JSON.parse(content);
|
|
37
|
+
return data.projectId || null;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Find project by name
|
|
44
|
+
async function findProjectByName(name) {
|
|
45
|
+
const response = await listProjects();
|
|
46
|
+
return response.projects.find((p) => p.name === name) || null;
|
|
47
|
+
}
|
|
48
|
+
// Format bytes to human-readable string
|
|
49
|
+
function formatBytes(bytes) {
|
|
50
|
+
if (bytes === 0)
|
|
51
|
+
return '0 B';
|
|
52
|
+
const k = 1024;
|
|
53
|
+
const sizes = ['B', 'KB', 'MB', 'GB'];
|
|
54
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
55
|
+
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
|
|
56
|
+
}
|
|
57
|
+
// gazill blob enable [project]
|
|
58
|
+
export async function blobEnableCommand(projectName) {
|
|
59
|
+
const auth = await getAuth();
|
|
60
|
+
if (!auth?.token) {
|
|
61
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const spinner = ora('Enabling blob storage...').start();
|
|
65
|
+
try {
|
|
66
|
+
let projectId = await getProjectId();
|
|
67
|
+
if (!projectId && !projectName) {
|
|
68
|
+
spinner.stop();
|
|
69
|
+
console.log(chalk.red('No project specified. Run from a project directory or specify project name.'));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (projectName) {
|
|
73
|
+
const project = await findProjectByName(projectName);
|
|
74
|
+
if (!project) {
|
|
75
|
+
spinner.fail(`Project "${projectName}" not found.`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
projectId = project.id;
|
|
79
|
+
}
|
|
80
|
+
const response = await storageApiRequest(`/api/projects/${projectId}/storage/enable`, { method: 'POST' });
|
|
81
|
+
spinner.succeed('Blob storage enabled');
|
|
82
|
+
console.log();
|
|
83
|
+
console.log(chalk.gray(' CDN URL:'), chalk.cyan(response.cdnUrl));
|
|
84
|
+
console.log(chalk.gray(' API Key:'), chalk.yellow(response.apiKey.substring(0, 24) + '...'));
|
|
85
|
+
console.log(chalk.gray(' (injected as STORAGE_API_KEY)'));
|
|
86
|
+
console.log();
|
|
87
|
+
console.log(chalk.gray(response.message));
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
spinner.fail('Failed to enable blob storage');
|
|
91
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// gazill blob disable [project]
|
|
95
|
+
export async function blobDisableCommand(projectName) {
|
|
96
|
+
const auth = await getAuth();
|
|
97
|
+
if (!auth?.token) {
|
|
98
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const spinner = ora('Disabling blob storage...').start();
|
|
102
|
+
try {
|
|
103
|
+
let projectId = await getProjectId();
|
|
104
|
+
if (!projectId && !projectName) {
|
|
105
|
+
spinner.stop();
|
|
106
|
+
console.log(chalk.red('No project specified. Run from a project directory or specify project name.'));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (projectName) {
|
|
110
|
+
const project = await findProjectByName(projectName);
|
|
111
|
+
if (!project) {
|
|
112
|
+
spinner.fail(`Project "${projectName}" not found.`);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
projectId = project.id;
|
|
116
|
+
}
|
|
117
|
+
await storageApiRequest(`/api/projects/${projectId}/storage/disable`, { method: 'POST' });
|
|
118
|
+
spinner.succeed('Blob storage disabled');
|
|
119
|
+
console.log(chalk.gray('Existing files are still accessible via CDN.'));
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
spinner.fail('Failed to disable blob storage');
|
|
123
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// gazill blob list [project]
|
|
127
|
+
export async function blobListCommand(projectName) {
|
|
128
|
+
const auth = await getAuth();
|
|
129
|
+
if (!auth?.token) {
|
|
130
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const spinner = ora('Fetching files...').start();
|
|
134
|
+
try {
|
|
135
|
+
let projectId = await getProjectId();
|
|
136
|
+
if (!projectId && !projectName) {
|
|
137
|
+
spinner.stop();
|
|
138
|
+
console.log(chalk.red('No project specified. Run from a project directory or specify project name.'));
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (projectName) {
|
|
142
|
+
const project = await findProjectByName(projectName);
|
|
143
|
+
if (!project) {
|
|
144
|
+
spinner.fail(`Project "${projectName}" not found.`);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
projectId = project.id;
|
|
148
|
+
}
|
|
149
|
+
const response = await storageApiRequest(`/api/projects/${projectId}/storage/files`);
|
|
150
|
+
spinner.stop();
|
|
151
|
+
if (response.files.length === 0) {
|
|
152
|
+
console.log(chalk.yellow('No files found.'));
|
|
153
|
+
console.log(chalk.gray('Use `gazill blob upload <file>` to upload files.'));
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
console.log(chalk.bold('\nFiles:\n'));
|
|
157
|
+
for (const file of response.files) {
|
|
158
|
+
console.log(` ${chalk.cyan(file.filename)}`);
|
|
159
|
+
console.log(` Size: ${formatBytes(file.sizeBytes)}`);
|
|
160
|
+
console.log(` Type: ${file.contentType || 'unknown'}`);
|
|
161
|
+
console.log(` URL: ${chalk.gray(file.url)}`);
|
|
162
|
+
console.log();
|
|
163
|
+
}
|
|
164
|
+
console.log(chalk.gray(`Total: ${response.files.length} file(s)`));
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
spinner.fail('Failed to fetch files');
|
|
168
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// gazill blob upload <file> [options]
|
|
172
|
+
export async function blobUploadCommand(filePath, options) {
|
|
173
|
+
const auth = await getAuth();
|
|
174
|
+
if (!auth?.token) {
|
|
175
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
// Check if file exists
|
|
179
|
+
try {
|
|
180
|
+
await fs.access(filePath);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
console.log(chalk.red(`File not found: ${filePath}`));
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const spinner = ora('Uploading file...').start();
|
|
187
|
+
try {
|
|
188
|
+
let projectId = await getProjectId();
|
|
189
|
+
if (!projectId && !options?.project) {
|
|
190
|
+
spinner.stop();
|
|
191
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (options?.project) {
|
|
195
|
+
const project = await findProjectByName(options.project);
|
|
196
|
+
if (!project) {
|
|
197
|
+
spinner.fail(`Project "${options.project}" not found.`);
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
projectId = project.id;
|
|
201
|
+
}
|
|
202
|
+
// Read file
|
|
203
|
+
const fileBuffer = await fs.readFile(filePath);
|
|
204
|
+
const filename = options?.name || path.basename(filePath);
|
|
205
|
+
// Create form data
|
|
206
|
+
const formData = new FormData();
|
|
207
|
+
formData.append('file', new Blob([fileBuffer]), filename);
|
|
208
|
+
if (options?.path) {
|
|
209
|
+
formData.append('path', options.path);
|
|
210
|
+
}
|
|
211
|
+
// Build URL with query params
|
|
212
|
+
let endpoint = `/api/projects/${projectId}/storage/files`;
|
|
213
|
+
if (options?.path) {
|
|
214
|
+
endpoint += `?path=${encodeURIComponent(options.path)}`;
|
|
215
|
+
}
|
|
216
|
+
const response = await storageApiRequest(endpoint, {
|
|
217
|
+
method: 'POST',
|
|
218
|
+
formData,
|
|
219
|
+
});
|
|
220
|
+
spinner.succeed(`Uploaded ${chalk.cyan(response.filename)} (${formatBytes(response.size)})`);
|
|
221
|
+
console.log(chalk.gray(' URL:'), chalk.cyan(response.url));
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
spinner.fail('Failed to upload file');
|
|
225
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// gazill blob delete <filename> [options]
|
|
229
|
+
export async function blobDeleteCommand(filename, options) {
|
|
230
|
+
const auth = await getAuth();
|
|
231
|
+
if (!auth?.token) {
|
|
232
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const spinner = ora('Deleting file...').start();
|
|
236
|
+
try {
|
|
237
|
+
let projectId = await getProjectId();
|
|
238
|
+
if (!projectId && !options?.project) {
|
|
239
|
+
spinner.stop();
|
|
240
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (options?.project) {
|
|
244
|
+
const project = await findProjectByName(options.project);
|
|
245
|
+
if (!project) {
|
|
246
|
+
spinner.fail(`Project "${options.project}" not found.`);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
projectId = project.id;
|
|
250
|
+
}
|
|
251
|
+
let endpoint = `/api/projects/${projectId}/storage/files/${encodeURIComponent(filename)}`;
|
|
252
|
+
if (options?.path) {
|
|
253
|
+
endpoint += `?path=${encodeURIComponent(options.path)}`;
|
|
254
|
+
}
|
|
255
|
+
await storageApiRequest(endpoint, { method: 'DELETE' });
|
|
256
|
+
spinner.succeed(`Deleted ${chalk.cyan(filename)}`);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
spinner.fail('Failed to delete file');
|
|
260
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// gazill blob url <filename> [options]
|
|
264
|
+
export async function blobUrlCommand(filename, options) {
|
|
265
|
+
const auth = await getAuth();
|
|
266
|
+
if (!auth?.token) {
|
|
267
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
let projectId = await getProjectId();
|
|
272
|
+
if (!projectId && !options?.project) {
|
|
273
|
+
console.log(chalk.red('No project specified. Run from a project directory or use --project <name>.'));
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (options?.project) {
|
|
277
|
+
const project = await findProjectByName(options.project);
|
|
278
|
+
if (!project) {
|
|
279
|
+
console.log(chalk.red(`Project "${options.project}" not found.`));
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
projectId = project.id;
|
|
283
|
+
}
|
|
284
|
+
let endpoint = `/api/projects/${projectId}/storage/files/${encodeURIComponent(filename)}`;
|
|
285
|
+
if (options?.path) {
|
|
286
|
+
endpoint += `?path=${encodeURIComponent(options.path)}`;
|
|
287
|
+
}
|
|
288
|
+
const response = await storageApiRequest(endpoint);
|
|
289
|
+
console.log(response.file.url);
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// gazill blob usage [project]
|
|
296
|
+
export async function blobUsageCommand(projectName) {
|
|
297
|
+
const auth = await getAuth();
|
|
298
|
+
if (!auth?.token) {
|
|
299
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const spinner = ora('Fetching usage...').start();
|
|
303
|
+
try {
|
|
304
|
+
let projectId = await getProjectId();
|
|
305
|
+
if (!projectId && !projectName) {
|
|
306
|
+
spinner.stop();
|
|
307
|
+
console.log(chalk.red('No project specified. Run from a project directory or specify project name.'));
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
if (projectName) {
|
|
311
|
+
const project = await findProjectByName(projectName);
|
|
312
|
+
if (!project) {
|
|
313
|
+
spinner.fail(`Project "${projectName}" not found.`);
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
projectId = project.id;
|
|
317
|
+
}
|
|
318
|
+
const response = await storageApiRequest(`/api/projects/${projectId}/storage`);
|
|
319
|
+
spinner.stop();
|
|
320
|
+
if (!response.enabled || !response.usage) {
|
|
321
|
+
console.log(chalk.yellow('Blob storage is not enabled for this project.'));
|
|
322
|
+
console.log(chalk.gray('Use `gazill blob enable` to enable it.'));
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
const { usage } = response;
|
|
326
|
+
console.log(chalk.bold('\nBlob Storage Usage:\n'));
|
|
327
|
+
console.log(chalk.gray(' Storage:'), `${formatBytes(usage.storageBytesUsed)} / ${formatBytes(usage.storageBytesLimit)}`);
|
|
328
|
+
console.log(chalk.gray(' Bandwidth:'), `${formatBytes(usage.bandwidthBytesUsed)} / ${formatBytes(usage.bandwidthBytesLimit)}`);
|
|
329
|
+
console.log(chalk.gray(' Files:'), usage.fileCount);
|
|
330
|
+
if (usage.bandwidthResetAt) {
|
|
331
|
+
const resetDate = new Date(usage.bandwidthResetAt).toLocaleDateString();
|
|
332
|
+
console.log(chalk.gray(' Bandwidth resets:'), resetDate);
|
|
333
|
+
}
|
|
334
|
+
console.log();
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
spinner.fail('Failed to fetch usage');
|
|
338
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// gazill blob info [project]
|
|
342
|
+
export async function blobInfoCommand(projectName) {
|
|
343
|
+
const auth = await getAuth();
|
|
344
|
+
if (!auth?.token) {
|
|
345
|
+
console.log(chalk.red('Not logged in. Run `gazill login` first.'));
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
const spinner = ora('Fetching storage info...').start();
|
|
349
|
+
try {
|
|
350
|
+
let projectId = await getProjectId();
|
|
351
|
+
if (!projectId && !projectName) {
|
|
352
|
+
spinner.stop();
|
|
353
|
+
console.log(chalk.red('No project specified. Run from a project directory or specify project name.'));
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
if (projectName) {
|
|
357
|
+
const project = await findProjectByName(projectName);
|
|
358
|
+
if (!project) {
|
|
359
|
+
spinner.fail(`Project "${projectName}" not found.`);
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
projectId = project.id;
|
|
363
|
+
}
|
|
364
|
+
const response = await storageApiRequest(`/api/projects/${projectId}/storage`);
|
|
365
|
+
spinner.stop();
|
|
366
|
+
console.log(chalk.bold('\nBlob Storage Info:\n'));
|
|
367
|
+
console.log(chalk.gray(' Status:'), response.enabled ? chalk.green('Enabled') : chalk.yellow('Disabled'));
|
|
368
|
+
if (response.enabled) {
|
|
369
|
+
console.log(chalk.gray(' CDN URL:'), chalk.cyan(response.cdnUrl));
|
|
370
|
+
console.log(chalk.gray(' API Key:'), chalk.yellow(response.apiKeyPrefix));
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
console.log();
|
|
374
|
+
console.log(chalk.gray('Use `gazill blob enable` to enable blob storage.'));
|
|
375
|
+
}
|
|
376
|
+
console.log();
|
|
377
|
+
}
|
|
378
|
+
catch (error) {
|
|
379
|
+
spinner.fail('Failed to fetch storage info');
|
|
380
|
+
console.error(chalk.red(error instanceof Error ? error.message : 'Unknown error'));
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=blob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/commands/blob.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare function cronListCommand(projectName?: string, options?: {
|
|
2
|
+
env?: string;
|
|
3
|
+
}): Promise<void>;
|
|
4
|
+
export declare function cronCreateCommand(name: string, options?: {
|
|
5
|
+
schedule?: string;
|
|
6
|
+
endpoint?: string;
|
|
7
|
+
method?: string;
|
|
8
|
+
timeout?: string;
|
|
9
|
+
env?: string;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function cronUpdateCommand(name: string, options?: {
|
|
12
|
+
schedule?: string;
|
|
13
|
+
endpoint?: string;
|
|
14
|
+
enabled?: string;
|
|
15
|
+
env?: string;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
export declare function cronDeleteCommand(name: string, options?: {
|
|
18
|
+
env?: string;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
export declare function cronRunCommand(name: string, options?: {
|
|
21
|
+
env?: string;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
export declare function cronHistoryCommand(name: string, options?: {
|
|
24
|
+
limit?: string;
|
|
25
|
+
env?: string;
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/commands/cron.ts"],"names":[],"mappings":"AA0GA,wBAAsB,eAAe,CACnC,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAGD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,IAAI,CAAC,CAyDf;AAGD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAGD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAwCf;AAGD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CA8Df;AAGD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAiEf"}
|