@astur-mobile/cli 0.1.0-beta.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspectorUi.js","sourceRoot":"","sources":["../src/inspectorUi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { PlatformName } from '@astur-mobile/protocol';
2
+ type AndroidTarget = 'emulator' | 'real' | 'browserstack';
3
+ type IosTarget = 'simulator' | 'real' | 'browserstack';
4
+ export interface InitAnswers {
5
+ platforms: PlatformName[];
6
+ timeout: number;
7
+ reports: {
8
+ html: boolean;
9
+ junit: boolean;
10
+ };
11
+ artifacts: {
12
+ screenshot: 'off' | 'on' | 'only-on-failure';
13
+ video: 'off' | 'on' | 'retain-on-failure';
14
+ trace: 'off' | 'on' | 'retain-on-failure';
15
+ };
16
+ android?: AndroidAnswers;
17
+ ios?: IosAnswers;
18
+ }
19
+ export interface AndroidAnswers {
20
+ target: AndroidTarget;
21
+ avd?: string;
22
+ deviceId?: string;
23
+ browserStackDeviceName?: string;
24
+ browserStackOsVersion?: string;
25
+ app: AndroidAppAnswers;
26
+ }
27
+ export interface IosAnswers {
28
+ target: IosTarget;
29
+ simulatorName?: string;
30
+ deviceId?: string;
31
+ browserStackDeviceName?: string;
32
+ browserStackOsVersion?: string;
33
+ app: IosAppAnswers;
34
+ }
35
+ export type AndroidAppAnswers = {
36
+ source: 'path';
37
+ path: string;
38
+ packageName?: string;
39
+ activity?: string;
40
+ } | {
41
+ source: 'url';
42
+ url: string;
43
+ downloadPath?: string;
44
+ packageName?: string;
45
+ activity?: string;
46
+ } | {
47
+ source: 'installed';
48
+ packageName: string;
49
+ activity?: string;
50
+ };
51
+ export type IosAppAnswers = {
52
+ source: 'path';
53
+ path: string;
54
+ bundleId: string;
55
+ } | {
56
+ source: 'installed';
57
+ bundleId: string;
58
+ };
59
+ export interface InitFile {
60
+ path: string;
61
+ contents: string;
62
+ }
63
+ export declare function defaultInitAnswers(): InitAnswers;
64
+ export declare function promptInitAnswers(): Promise<InitAnswers>;
65
+ export declare function buildInitFiles(answers: InitAnswers): InitFile[];
66
+ export {};
67
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,KAAK,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,cAAc,CAAC;AAC1D,KAAK,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,cAAc,CAAC;AAIvD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,SAAS,EAAE;QACT,UAAU,EAAE,KAAK,GAAG,IAAI,GAAG,iBAAiB,CAAC;QAC7C,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,mBAAmB,CAAC;QAC1C,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,mBAAmB,CAAC;KAC3C,CAAC;IACF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,GAAG,CAAC,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,GAAG,EAAE,iBAAiB,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,GAAG,EAAE,aAAa,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9F;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,wBAAgB,kBAAkB,IAAI,WAAW,CAsBhD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAiD9D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,EAAE,CAmB/D"}
@@ -0,0 +1,470 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import { stdin as input, stdout as output } from 'node:process';
3
+ export function defaultInitAnswers() {
4
+ return {
5
+ platforms: ['android'],
6
+ timeout: 20_000,
7
+ reports: {
8
+ html: true,
9
+ junit: true
10
+ },
11
+ artifacts: {
12
+ screenshot: 'only-on-failure',
13
+ video: 'retain-on-failure',
14
+ trace: 'off'
15
+ },
16
+ android: {
17
+ target: 'emulator',
18
+ avd: 'Pixel_9_API_35',
19
+ app: {
20
+ source: 'path',
21
+ path: './apps/demo.apk'
22
+ }
23
+ }
24
+ };
25
+ }
26
+ export async function promptInitAnswers() {
27
+ const rl = createInterface({ input, output });
28
+ try {
29
+ const platform = await select(rl, 'Which platforms will you test?', [
30
+ { label: 'Android', value: 'android', description: 'Android emulator or real device' },
31
+ { label: 'iOS', value: 'ios', description: 'iOS simulator or real device' },
32
+ { label: 'Both', value: 'both', description: 'Generate Playwright projects for Android and iOS' }
33
+ ]);
34
+ const platforms = platform === 'both' ? ['android', 'ios'] : [platform];
35
+ const answers = {
36
+ platforms,
37
+ timeout: Number(await ask(rl, 'Default mobile element timeout in ms', '20000')),
38
+ reports: {
39
+ html: await yesNo(rl, 'Generate Playwright HTML report?', true),
40
+ junit: await yesNo(rl, 'Generate JUnit XML report?', true)
41
+ },
42
+ artifacts: {
43
+ screenshot: await select(rl, 'Native screenshot capture?', [
44
+ { label: 'Only on failure', value: 'only-on-failure' },
45
+ { label: 'Always', value: 'on' },
46
+ { label: 'Off', value: 'off' }
47
+ ]),
48
+ video: await select(rl, 'Native video capture?', [
49
+ { label: 'Retain on failure', value: 'retain-on-failure' },
50
+ { label: 'Always', value: 'on' },
51
+ { label: 'Off', value: 'off' }
52
+ ]),
53
+ trace: await select(rl, 'Playwright trace capture?', [
54
+ { label: 'Off', value: 'off' },
55
+ { label: 'Retain on failure', value: 'retain-on-failure' },
56
+ { label: 'Always', value: 'on' }
57
+ ])
58
+ }
59
+ };
60
+ if (platforms.includes('android')) {
61
+ answers.android = await promptAndroid(rl);
62
+ }
63
+ if (platforms.includes('ios')) {
64
+ answers.ios = await promptIos(rl);
65
+ }
66
+ return answers;
67
+ }
68
+ finally {
69
+ rl.close();
70
+ }
71
+ }
72
+ export function buildInitFiles(answers) {
73
+ return [
74
+ {
75
+ path: 'playwright.config.ts',
76
+ contents: buildPlaywrightConfig(answers)
77
+ },
78
+ {
79
+ path: 'tests/example.test.ts',
80
+ contents: buildExampleTest()
81
+ },
82
+ {
83
+ path: '.gitignore',
84
+ contents: buildGitignore()
85
+ },
86
+ {
87
+ path: 'ASTUR_SETUP.md',
88
+ contents: buildSetupReadme(answers)
89
+ }
90
+ ];
91
+ }
92
+ function buildPlaywrightConfig(answers) {
93
+ const projects = answers.platforms.map((platform) => {
94
+ const config = platform === 'android'
95
+ ? buildAndroidAsturConfig(answers)
96
+ : buildIosAsturConfig(answers);
97
+ return ` {
98
+ name: ${quote(projectName(platform, answers))},
99
+ use: {
100
+ astur: ${indent(config, 8)}
101
+ }
102
+ }`;
103
+ }).join(',\n');
104
+ const reporters = [
105
+ `['list']`,
106
+ ...(answers.reports.html ? [`['html', { outputFolder: 'playwright-report/mobile', open: 'never' }]`] : []),
107
+ ...(answers.reports.junit ? [`['junit', { outputFile: 'test-results/mobile/results.xml' }]`] : [])
108
+ ];
109
+ return `import { defineConfig } from '@astur-mobile/test';
110
+
111
+ export default defineConfig({
112
+ testDir: './tests',
113
+ timeout: 120_000,
114
+ outputDir: 'test-results/mobile',
115
+ reporter: [
116
+ ${reporters.join(',\n ')}
117
+ ],
118
+ use: {
119
+ screenshot: 'off',
120
+ video: 'off',
121
+ trace: ${quote(answers.artifacts.trace)}
122
+ },
123
+ projects: [
124
+ ${projects}
125
+ ]
126
+ });
127
+ `;
128
+ }
129
+ function buildAndroidAsturConfig(answers) {
130
+ const android = requireAnswer(answers.android, 'Android');
131
+ const device = buildAndroidDevice(android);
132
+ const app = buildAndroidApp(android.app);
133
+ return `{
134
+ platform: 'android',
135
+ timeout: ${answers.timeout},
136
+ artifacts: {
137
+ screenshot: ${quote(answers.artifacts.screenshot)},
138
+ video: ${quote(answers.artifacts.video)}
139
+ },
140
+ device: ${device},
141
+ app: ${app}
142
+ }`;
143
+ }
144
+ function buildIosAsturConfig(answers) {
145
+ const ios = requireAnswer(answers.ios, 'iOS');
146
+ const device = buildIosDevice(ios);
147
+ const app = buildIosApp(ios.app);
148
+ return `{
149
+ platform: 'ios',
150
+ timeout: ${answers.timeout},
151
+ artifacts: {
152
+ screenshot: ${quote(answers.artifacts.screenshot)},
153
+ video: ${quote(answers.artifacts.video)}
154
+ },
155
+ device: ${device},
156
+ app: ${app}
157
+ }`;
158
+ }
159
+ function buildAndroidDevice(android) {
160
+ if (android.target === 'browserstack') {
161
+ return `{
162
+ cloud: {
163
+ provider: 'browserstack',
164
+ usernameEnv: 'BROWSERSTACK_USERNAME',
165
+ accessKeyEnv: 'BROWSERSTACK_ACCESS_KEY',
166
+ deviceName: ${quote(android.browserStackDeviceName ?? 'Google Pixel 8')},
167
+ osVersion: ${quote(android.browserStackOsVersion ?? '14.0')},
168
+ project: 'Astur',
169
+ build: 'local'
170
+ }
171
+ }`;
172
+ }
173
+ if (android.target === 'real') {
174
+ return android.deviceId
175
+ ? `{ id: ${quote(android.deviceId)} }`
176
+ : `{ kind: 'real' }`;
177
+ }
178
+ return `{
179
+ kind: 'emulator',
180
+ avd: ${quote(android.avd ?? 'Pixel_9_API_35')},
181
+ autoBoot: true,
182
+ headless: false,
183
+ bootTimeout: 120_000
184
+ }`;
185
+ }
186
+ function buildIosDevice(ios) {
187
+ if (ios.target === 'browserstack') {
188
+ return `{
189
+ cloud: {
190
+ provider: 'browserstack',
191
+ usernameEnv: 'BROWSERSTACK_USERNAME',
192
+ accessKeyEnv: 'BROWSERSTACK_ACCESS_KEY',
193
+ deviceName: ${quote(ios.browserStackDeviceName ?? 'iPhone 15')},
194
+ osVersion: ${quote(ios.browserStackOsVersion ?? '17')},
195
+ project: 'Astur',
196
+ build: 'local'
197
+ }
198
+ }`;
199
+ }
200
+ if (ios.target === 'real') {
201
+ return ios.deviceId
202
+ ? `{ id: ${quote(ios.deviceId)} }`
203
+ : `{ kind: 'real' }`;
204
+ }
205
+ return `{
206
+ name: ${quote(ios.simulatorName ?? 'iPhone 16 Pro')}
207
+ }`;
208
+ }
209
+ function buildAndroidApp(app) {
210
+ if (app.source === 'installed') {
211
+ return objectLiteral({
212
+ packageName: app.packageName,
213
+ activity: app.activity
214
+ });
215
+ }
216
+ if (app.source === 'url') {
217
+ return objectLiteral({
218
+ url: app.url,
219
+ downloadPath: app.downloadPath,
220
+ packageName: app.packageName,
221
+ activity: app.activity
222
+ });
223
+ }
224
+ return objectLiteral({
225
+ path: app.path,
226
+ packageName: app.packageName,
227
+ activity: app.activity
228
+ });
229
+ }
230
+ function buildIosApp(app) {
231
+ if (app.source === 'installed') {
232
+ return objectLiteral({ bundleId: app.bundleId });
233
+ }
234
+ return objectLiteral({
235
+ path: app.path,
236
+ bundleId: app.bundleId
237
+ });
238
+ }
239
+ function buildExampleTest() {
240
+ return `import { expect, test } from '@astur-mobile/test';
241
+
242
+ test('app launches', async ({ device }) => {
243
+ await device.app.launch();
244
+ await expect(device.getByText('Welcome')).toBeVisible();
245
+ });
246
+ `;
247
+ }
248
+ function buildGitignore() {
249
+ return `node_modules/
250
+ playwright-report/
251
+ test-results/
252
+ .env
253
+ .env.*
254
+ `;
255
+ }
256
+ function buildSetupReadme(answers) {
257
+ const browserStack = [answers.android?.target, answers.ios?.target].includes('browserstack');
258
+ return `# Astur Setup
259
+
260
+ Generated by \`astur init\`.
261
+
262
+ ## Next Commands
263
+
264
+ \`\`\`bash
265
+ npx astur-mobile doctor
266
+ npx astur-mobile test
267
+ \`\`\`
268
+
269
+ ## What Was Generated
270
+
271
+ - \`playwright.config.ts\`: Playwright projects and Astur device/app config.
272
+ - \`tests/example.test.ts\`: starter mobile test.
273
+ - \`.gitignore\`: default ignored output folders, if one did not already exist.
274
+
275
+ ## Selected Platforms
276
+
277
+ ${answers.platforms.map((platform) => `- ${platform}`).join('\n')}
278
+
279
+ ## Parallel Testing
280
+
281
+ Astur uses Playwright projects for parallel mobile runs. Each project creates one Astur device session. Parallel execution is supported when every project points at a distinct device, emulator, or simulator.
282
+
283
+ Examples:
284
+
285
+ - Android emulator + Android real device: create two projects with different \`device.id\` values.
286
+ - Multiple Android emulators: boot each AVD and give each project a unique \`device.id\`, such as \`emulator-5554\` and \`emulator-5556\`.
287
+ - Android + iOS: this wizard already generates separate projects when both platforms are selected.
288
+
289
+ Astur reserves each configured device per Playwright worker and fails fast if another worker tries to control the same target. Keep \`workers\` aligned with the number of available devices, and set \`workers: 1\` inside every project that maps to one physical device.
290
+
291
+ ## Flutter Apps
292
+
293
+ Astur can test Flutter apps as a black-box native mobile app without using Appium or a Flutter-specific third-party driver. On Android it reads the UI through UIAutomator/accessibility, and on iOS native element support goes through the XCUITest agent boundary.
294
+
295
+ For reliable Flutter tests, expose stable semantics labels, text, and accessibility identifiers in the app. Astur does not currently inspect the Flutter widget tree, Dart VM service, \`ValueKey\`, or Flutter driver protocol directly.
296
+
297
+ ${browserStack ? `## BrowserStack Note
298
+
299
+ BrowserStack config was scaffolded, including \`BROWSERSTACK_USERNAME\` and \`BROWSERSTACK_ACCESS_KEY\` environment variable names. Cloud execution is not implemented in the current Astur alpha yet, so this config is a forward-compatible placeholder. Use a local emulator, simulator, or real device for runnable tests today.
300
+ ` : ''}
301
+ `;
302
+ }
303
+ async function promptAndroid(rl) {
304
+ const target = await select(rl, 'Android target?', [
305
+ { label: 'Emulator', value: 'emulator', description: 'Local Android Studio AVD' },
306
+ { label: 'Real device', value: 'real', description: 'USB-connected device with debugging enabled' },
307
+ { label: 'BrowserStack', value: 'browserstack', description: 'Cloud config placeholder' }
308
+ ]);
309
+ const app = await promptAndroidApp(rl);
310
+ if (target === 'emulator') {
311
+ return {
312
+ target,
313
+ avd: await ask(rl, 'Android AVD name', 'Pixel_9_API_35'),
314
+ app
315
+ };
316
+ }
317
+ if (target === 'real') {
318
+ return {
319
+ target,
320
+ deviceId: emptyToUndefined(await ask(rl, 'Android device id from adb devices -l (optional)', '')),
321
+ app
322
+ };
323
+ }
324
+ return {
325
+ target,
326
+ browserStackDeviceName: await ask(rl, 'BrowserStack Android device name', 'Google Pixel 8'),
327
+ browserStackOsVersion: await ask(rl, 'BrowserStack Android OS version', '14.0'),
328
+ app
329
+ };
330
+ }
331
+ async function promptIos(rl) {
332
+ const target = await select(rl, 'iOS target?', [
333
+ { label: 'Simulator', value: 'simulator', description: 'Local Xcode simulator' },
334
+ { label: 'Real device', value: 'real', description: 'Apple device connected to macOS' },
335
+ { label: 'BrowserStack', value: 'browserstack', description: 'Cloud config placeholder' }
336
+ ]);
337
+ const app = await promptIosApp(rl);
338
+ if (target === 'simulator') {
339
+ return {
340
+ target,
341
+ simulatorName: await ask(rl, 'iOS simulator name', 'iPhone 16 Pro'),
342
+ app
343
+ };
344
+ }
345
+ if (target === 'real') {
346
+ return {
347
+ target,
348
+ deviceId: emptyToUndefined(await ask(rl, 'iOS device id/UDID (optional)', '')),
349
+ app
350
+ };
351
+ }
352
+ return {
353
+ target,
354
+ browserStackDeviceName: await ask(rl, 'BrowserStack iOS device name', 'iPhone 15'),
355
+ browserStackOsVersion: await ask(rl, 'BrowserStack iOS version', '17'),
356
+ app
357
+ };
358
+ }
359
+ async function promptAndroidApp(rl) {
360
+ const source = await select(rl, 'Android app source?', [
361
+ { label: 'Local APK path', value: 'path' },
362
+ { label: 'Download APK URL at runtime', value: 'url' },
363
+ { label: 'Already installed package/activity', value: 'installed' }
364
+ ]);
365
+ if (source === 'installed') {
366
+ return {
367
+ source,
368
+ packageName: await askRequired(rl, 'Android package name'),
369
+ activity: emptyToUndefined(await ask(rl, 'Android launch activity (optional)', ''))
370
+ };
371
+ }
372
+ const packageName = emptyToUndefined(await ask(rl, 'Android package name (optional; inferred from APK when aapt is available)', ''));
373
+ const activity = emptyToUndefined(await ask(rl, 'Android launch activity (optional)', ''));
374
+ if (source === 'url') {
375
+ return {
376
+ source,
377
+ url: await askRequired(rl, 'APK download URL'),
378
+ downloadPath: emptyToUndefined(await ask(rl, 'APK download path (optional)', '')),
379
+ packageName,
380
+ activity
381
+ };
382
+ }
383
+ return {
384
+ source,
385
+ path: await ask(rl, 'Local APK path', './apps/demo.apk'),
386
+ packageName,
387
+ activity
388
+ };
389
+ }
390
+ async function promptIosApp(rl) {
391
+ const source = await select(rl, 'iOS app source?', [
392
+ { label: 'Local .app path', value: 'path' },
393
+ { label: 'Already installed bundle id', value: 'installed' }
394
+ ]);
395
+ const bundleId = await askRequired(rl, 'iOS bundle id');
396
+ if (source === 'installed') {
397
+ return { source, bundleId };
398
+ }
399
+ return {
400
+ source,
401
+ path: await ask(rl, 'Local .app path', './apps/Demo.app'),
402
+ bundleId
403
+ };
404
+ }
405
+ async function select(rl, question, choices) {
406
+ output.write(`\n${question}\n`);
407
+ for (const [index, choice] of choices.entries()) {
408
+ const suffix = choice.description ? ` - ${choice.description}` : '';
409
+ output.write(` ${index + 1}. ${choice.label}${suffix}\n`);
410
+ }
411
+ while (true) {
412
+ const answer = (await rl.question(`Choose 1-${choices.length} [1]: `)).trim();
413
+ const index = answer ? Number(answer) - 1 : 0;
414
+ if (Number.isInteger(index) && choices[index]) {
415
+ return choices[index].value;
416
+ }
417
+ output.write(`Please choose a number between 1 and ${choices.length}.\n`);
418
+ }
419
+ }
420
+ async function yesNo(rl, question, defaultValue) {
421
+ const suffix = defaultValue ? 'Y/n' : 'y/N';
422
+ const answer = (await rl.question(`${question} [${suffix}]: `)).trim().toLowerCase();
423
+ if (!answer) {
424
+ return defaultValue;
425
+ }
426
+ return ['y', 'yes'].includes(answer);
427
+ }
428
+ async function ask(rl, question, defaultValue) {
429
+ const answer = await rl.question(`${question}${defaultValue ? ` [${defaultValue}]` : ''}: `);
430
+ return answer.trim() || defaultValue;
431
+ }
432
+ async function askRequired(rl, question) {
433
+ while (true) {
434
+ const answer = (await rl.question(`${question}: `)).trim();
435
+ if (answer) {
436
+ return answer;
437
+ }
438
+ output.write('This value is required.\n');
439
+ }
440
+ }
441
+ function projectName(platform, answers) {
442
+ if (platform === 'android') {
443
+ return `android-${answers.android?.target ?? 'local'}`;
444
+ }
445
+ return `ios-${answers.ios?.target ?? 'local'}`;
446
+ }
447
+ function objectLiteral(values) {
448
+ const entries = Object.entries(values).filter((entry) => Boolean(entry[1]));
449
+ if (!entries.length) {
450
+ return '{}';
451
+ }
452
+ return `{\n${entries.map(([key, value]) => ` ${key}: ${quote(value)}`).join(',\n')}\n }`;
453
+ }
454
+ function indent(value, spaces) {
455
+ const padding = ' '.repeat(spaces);
456
+ return value.split('\n').map((line, index) => index === 0 ? line : `${padding}${line}`).join('\n');
457
+ }
458
+ function quote(value) {
459
+ return JSON.stringify(value).replaceAll('"', "'");
460
+ }
461
+ function emptyToUndefined(value) {
462
+ return value.trim() ? value.trim() : undefined;
463
+ }
464
+ function requireAnswer(answer, label) {
465
+ if (!answer) {
466
+ throw new Error(`${label} answers were not provided.`);
467
+ }
468
+ return answer;
469
+ }
470
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@astur-mobile/cli",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "Astur command line interface.",
5
+ "license": "Apache-2.0",
6
+ "author": "Amr Salem",
7
+ "type": "module",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "bin": {
11
+ "astur": "./dist/index.js"
12
+ },
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "assets"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsc -b"
28
+ },
29
+ "dependencies": {
30
+ "@astur-mobile/android": "0.1.0-beta.0",
31
+ "@astur-mobile/core": "0.1.0-beta.0",
32
+ "@astur-mobile/ios": "0.1.0-beta.0",
33
+ "@astur-mobile/protocol": "0.1.0-beta.0",
34
+ "@types/ws": "^8.18.1",
35
+ "ws": "^8.21.0"
36
+ },
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+https://github.com/Astur-mobile/Astur.git",
40
+ "directory": "packages/cli"
41
+ },
42
+ "homepage": "https://astur-mobile.github.io/Astur/",
43
+ "bugs": {
44
+ "url": "https://github.com/Astur-mobile/Astur/issues"
45
+ }
46
+ }