|
1 |
| -import 'dart:io'; |
2 |
| - |
3 |
| -import 'package:args/args.dart'; |
4 |
| -import 'package:flutterflow_cli/src/flutterflow_api_client.dart'; |
5 |
| - |
6 |
| -const kDefaultEndpoint = 'https://api.flutterflow.io/v1'; |
| 1 | +import 'package:flutterflow_cli/src/flutterflow_main.dart'; |
7 | 2 |
|
8 | 3 | void main(List<String> args) async {
|
9 |
| - final parsedArguments = _parseArgs(args); |
10 |
| - |
11 |
| - final token = |
12 |
| - parsedArguments['token'] ?? Platform.environment['FLUTTERFLOW_API_TOKEN']; |
13 |
| - |
14 |
| - final project = parsedArguments.command!['project'] ?? |
15 |
| - Platform.environment['FLUTTERFLOW_PROJECT']; |
16 |
| - |
17 |
| - if (project == null || project.isEmpty) { |
18 |
| - stderr.write( |
19 |
| - 'Either --project option or FLUTTERFLOW_PROJECT environment variable must be set.\n'); |
20 |
| - exit(1); |
21 |
| - } |
22 |
| - |
23 |
| - if (parsedArguments['endpoint'] != null && |
24 |
| - parsedArguments['environment'] != null) { |
25 |
| - stderr.write( |
26 |
| - 'Only one of --endpoint and --environment options can be set.\n'); |
27 |
| - exit(1); |
28 |
| - } |
29 |
| - |
30 |
| - if (token?.isEmpty ?? true) { |
31 |
| - stderr.write( |
32 |
| - 'Either --token option or FLUTTERFLOW_API_TOKEN environment variable must be set.\n'); |
33 |
| - exit(1); |
34 |
| - } |
35 |
| - |
36 |
| - late String endpoint; |
37 |
| - if (parsedArguments['endpoint'] != null) { |
38 |
| - endpoint = parsedArguments['endpoint']; |
39 |
| - } else if (parsedArguments['environment'] != null) { |
40 |
| - endpoint = |
41 |
| - "https://api-${parsedArguments['environment']}.flutterflow.io/v1"; |
42 |
| - } else { |
43 |
| - endpoint = Platform.environment['FLUTTERFLOW_ENDPOINT'] ?? kDefaultEndpoint; |
44 |
| - } |
45 |
| - |
46 |
| - try { |
47 |
| - switch (parsedArguments.command?.name) { |
48 |
| - case 'export-code': |
49 |
| - await exportCode( |
50 |
| - token: token, |
51 |
| - endpoint: endpoint, |
52 |
| - projectId: project, |
53 |
| - destinationPath: parsedArguments.command!['dest'], |
54 |
| - includeAssets: parsedArguments.command!['include-assets'], |
55 |
| - branchName: parsedArguments.command!['branch-name'], |
56 |
| - commitHash: parsedArguments.command!['commit-hash'], |
57 |
| - unzipToParentFolder: parsedArguments.command!['parent-folder'], |
58 |
| - fix: parsedArguments.command!['fix'], |
59 |
| - exportAsModule: parsedArguments.command!['as-module'], |
60 |
| - exportAsDebug: parsedArguments.command!['as-debug'], |
61 |
| - environmentName: parsedArguments.command!['project-environment'], |
62 |
| - ); |
63 |
| - break; |
64 |
| - case 'deploy-firebase': |
65 |
| - await firebaseDeploy( |
66 |
| - token: token, |
67 |
| - projectId: project, |
68 |
| - appendRules: parsedArguments.command!['append-rules'], |
69 |
| - endpoint: endpoint, |
70 |
| - ); |
71 |
| - break; |
72 |
| - default: |
73 |
| - } |
74 |
| - } catch (_) { |
75 |
| - exit(1); |
76 |
| - } |
77 |
| -} |
78 |
| - |
79 |
| -ArgResults _parseArgs(List<String> args) { |
80 |
| - final exportCodeCommandParser = ArgParser() |
81 |
| - ..addOption('project', abbr: 'p', help: 'Project id') |
82 |
| - ..addOption( |
83 |
| - 'dest', |
84 |
| - abbr: 'd', |
85 |
| - help: 'Destination directory', |
86 |
| - defaultsTo: '.', |
87 |
| - ) |
88 |
| - ..addOption( |
89 |
| - 'branch-name', |
90 |
| - abbr: 'b', |
91 |
| - help: '(Optional) Specify a branch name', |
92 |
| - ) |
93 |
| - ..addOption( |
94 |
| - 'commit-hash', |
95 |
| - abbr: 'c', |
96 |
| - help: '(Optional) Specify a commit hash', |
97 |
| - ) |
98 |
| - ..addFlag( |
99 |
| - 'include-assets', |
100 |
| - negatable: true, |
101 |
| - help: 'Include assets. By default, assets are not included.\n' |
102 |
| - 'We recommend setting this flag only when calling this command ' |
103 |
| - 'for the first time or after updating assets.\n' |
104 |
| - 'Downloading code without assets is typically much faster.', |
105 |
| - defaultsTo: false, |
106 |
| - ) |
107 |
| - ..addFlag( |
108 |
| - 'fix', |
109 |
| - negatable: true, |
110 |
| - help: 'Run "dart fix" on the downloaded code.', |
111 |
| - defaultsTo: false, |
112 |
| - ) |
113 |
| - ..addFlag( |
114 |
| - 'parent-folder', |
115 |
| - negatable: true, |
116 |
| - help: 'Download into a sub-folder. By default, project is downloaded \n' |
117 |
| - 'into a folder named <project>.\nSetting this flag to false will ' |
118 |
| - 'download all project code directly into the specified directory, ' |
119 |
| - 'or the current directory if --dest is not set.', |
120 |
| - defaultsTo: true, |
121 |
| - ) |
122 |
| - ..addFlag( |
123 |
| - 'as-module', |
124 |
| - negatable: true, |
125 |
| - help: 'Generate the project as a Flutter module.', |
126 |
| - defaultsTo: false, |
127 |
| - ) |
128 |
| - ..addFlag( |
129 |
| - 'as-debug', |
130 |
| - negatable: true, |
131 |
| - help: 'Generate the project with debug logging to be able to use ' |
132 |
| - 'FlutterFlow Debug Panel inside the DevTools.', |
133 |
| - defaultsTo: false, |
134 |
| - ) |
135 |
| - ..addOption( |
136 |
| - 'project-environment', |
137 |
| - help: '(Optional) Specify a project environment name.', |
138 |
| - ); |
139 |
| - |
140 |
| - final firebaseDeployCommandParser = ArgParser() |
141 |
| - ..addOption('project', abbr: 'p', help: 'Project id') |
142 |
| - ..addFlag( |
143 |
| - 'append-rules', |
144 |
| - abbr: 'a', |
145 |
| - help: 'Append to rules, instead of overwriting them.', |
146 |
| - defaultsTo: false, |
147 |
| - ); |
148 |
| - |
149 |
| - final parser = ArgParser() |
150 |
| - ..addOption('endpoint', abbr: 'e', help: 'Endpoint', hide: true) |
151 |
| - ..addOption('environment', help: 'Environment', hide: true) |
152 |
| - ..addOption('token', abbr: 't', help: 'API Token') |
153 |
| - ..addFlag('help', negatable: false, abbr: 'h', help: 'Help') |
154 |
| - ..addCommand('export-code', exportCodeCommandParser) |
155 |
| - ..addCommand('deploy-firebase', firebaseDeployCommandParser); |
156 |
| - |
157 |
| - late ArgResults parsed; |
158 |
| - try { |
159 |
| - parsed = parser.parse(args); |
160 |
| - } catch (e) { |
161 |
| - stderr.write('$e\n'); |
162 |
| - stderr.write(parser.usage); |
163 |
| - exit(1); |
164 |
| - } |
165 |
| - |
166 |
| - if (parsed['help'] ?? false) { |
167 |
| - print(parser.usage); |
168 |
| - if (parsed.command != null) { |
169 |
| - print(parser.commands[parsed.command!.name]!.usage); |
170 |
| - } else { |
171 |
| - print('Available commands: ${parser.commands.keys.join(', ')}.'); |
172 |
| - } |
173 |
| - exit(0); |
174 |
| - } |
175 |
| - |
176 |
| - if (parsed.command == null) { |
177 |
| - print(parser.usage); |
178 |
| - print('Available commands: ${parser.commands.keys.join(', ')}.'); |
179 |
| - exit(1); |
180 |
| - } |
181 |
| - |
182 |
| - return parsed; |
| 4 | + await appMain(args); |
183 | 5 | }
|
0 commit comments