1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
import type { AstroConfig } from 'astro';
import type { Arguments } from 'yargs-parser';
import { resolveDbConfig } from '../load-file.js';
import { printHelp } from './print-help.js';
export async function cli({
flags,
config: astroConfig,
}: {
flags: Arguments;
config: AstroConfig;
}) {
const args = flags._ as string[];
// Most commands are `astro db foo`, but for now login/logout
// are also handled by this package, so first check if this is a db command.
const command = args[2] === 'db' ? args[3] : args[2];
const { dbConfig } = await resolveDbConfig(astroConfig);
switch (command) {
case 'shell': {
const { cmd } = await import('./commands/shell/index.js');
return await cmd({ astroConfig, dbConfig, flags });
}
case 'gen': {
console.log('"astro db gen" is no longer needed! Visit the docs for more information.');
return;
}
case 'sync': {
console.log('"astro db sync" is no longer needed! Visit the docs for more information.');
return;
}
case 'push': {
const { cmd } = await import('./commands/push/index.js');
return await cmd({ astroConfig, dbConfig, flags });
}
case 'verify': {
const { cmd } = await import('./commands/verify/index.js');
return await cmd({ astroConfig, dbConfig, flags });
}
case 'execute': {
const { cmd } = await import('./commands/execute/index.js');
return await cmd({ astroConfig, dbConfig, flags });
}
case 'login': {
const { cmd } = await import('./commands/login/index.js');
return await cmd({ astroConfig, dbConfig, flags });
}
case 'logout': {
const { cmd } = await import('./commands/logout/index.js');
return await cmd();
}
case 'link': {
const { cmd } = await import('./commands/link/index.js');
return await cmd();
}
default: {
if (command != null) {
console.error(`Unknown command: ${command}`);
}
printHelp({
commandName: 'astro db',
usage: '[command] [...flags]',
headline: ' ',
tables: {
Commands: [
['push', 'Push table schema updates to Astro Studio.'],
['verify', 'Test schema updates /w Astro Studio (good for CI).'],
[
'astro db execute <file-path>',
'Execute a ts/js file using astro:db. Use --remote to connect to Studio.',
],
[
'astro db shell --query <sql-string>',
'Execute a SQL string. Use --remote to connect to Studio.',
],
],
},
});
return;
}
}
}
|