-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathexplorer.ts
More file actions
113 lines (100 loc) · 2.65 KB
/
explorer.ts
File metadata and controls
113 lines (100 loc) · 2.65 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import { getEnvOptions } from '@pgpmjs/env';
import { LaunchQLExplorer as explorer } from '@launchql/explorer';
import { Logger } from '@pgpmjs/logger';
import { PgpmOptions } from '@pgpmjs/types';
import { CLIOptions, Inquirerer, Question } from 'inquirerer';
const log = new Logger('explorer');
const explorerUsageText = `
LaunchQL Explorer Command:
lql explorer [OPTIONS]
Launch GraphiQL explorer interface.
Options:
--help, -h Show this help message
--port <number> Server port (default: 5555)
--origin <url> CORS origin URL (default: http://localhost:3000)
--simpleInflection Use simple inflection (default: true)
--oppositeBaseNames Use opposite base names (default: false)
--postgis Enable PostGIS extension (default: true)
--cwd <directory> Working directory (default: current directory)
Examples:
lql explorer Launch explorer with defaults
lql explorer --origin http://localhost:4000 Launch explorer with custom origin
`;
const questions: Question[] = [
{
name: 'simpleInflection',
message: 'Use simple inflection?',
type: 'confirm',
required: false,
default: true,
useDefault: true
},
{
name: 'oppositeBaseNames',
message: 'Use opposite base names?',
type: 'confirm',
required: false,
default: false,
useDefault: true
},
{
name: 'postgis',
message: 'Enable PostGIS extension?',
type: 'confirm',
required: false,
default: true,
useDefault: true
},
{
name: 'port',
message: 'Development server port',
type: 'number',
required: false,
default: 5555,
useDefault: true
},
{
name: 'origin',
message: 'CORS origin URL',
type: 'text',
required: false,
default: 'http://localhost:3000',
useDefault: true
}
];
export default async (
argv: Partial<Record<string, any>>,
prompter: Inquirerer,
_options: CLIOptions
) => {
// Show usage if explicitly requested
if (argv.help || argv.h) {
console.log(explorerUsageText);
process.exit(0);
}
log.info('🔧 LaunchQL Explorer Configuration:\n');
const {
oppositeBaseNames,
origin,
port,
postgis,
simpleInflection
} = await prompter.prompt(argv, questions);
const options: PgpmOptions = getEnvOptions({
features: {
oppositeBaseNames,
simpleInflection,
postgis
},
server: {
origin,
port
}
});
log.success('✅ Selected Configuration:');
for (const [key, value] of Object.entries(options)) {
log.debug(`${key}: ${JSON.stringify(value)}`);
}
log.success('🚀 Launching Explorer...\n');
explorer(options);
};