@mr.dj2u/create-expo-stack 2.21.3-mrdj.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.
Files changed (191) hide show
  1. package/README.md +435 -0
  2. package/bin/create-expo-stack.js +2 -0
  3. package/build/cli.js +49 -0
  4. package/build/commands/create-expo-stack.js +471 -0
  5. package/build/constants.js +39 -0
  6. package/build/templates/base/.gitignore.ejs +26 -0
  7. package/build/templates/base/.npmrc.ejs +1 -0
  8. package/build/templates/base/App.tsx.ejs +66 -0
  9. package/build/templates/base/app.json.ejs +69 -0
  10. package/build/templates/base/assets/adaptive-icon.png +0 -0
  11. package/build/templates/base/assets/favicon.png +0 -0
  12. package/build/templates/base/assets/icon.png +0 -0
  13. package/build/templates/base/assets/splash.png +0 -0
  14. package/build/templates/base/babel.config.js.ejs +38 -0
  15. package/build/templates/base/components/BackButton.tsx.ejs +23 -0
  16. package/build/templates/base/components/Button.tsx.ejs +42 -0
  17. package/build/templates/base/components/Container.tsx.ejs +14 -0
  18. package/build/templates/base/components/EditScreenInfo.tsx.ejs +44 -0
  19. package/build/templates/base/components/HeaderButton.tsx.ejs +31 -0
  20. package/build/templates/base/components/ScreenContent.tsx.ejs +40 -0
  21. package/build/templates/base/components/TabBarIcon.tsx.ejs +15 -0
  22. package/build/templates/base/eslint.config.js.ejs +15 -0
  23. package/build/templates/base/package.json.ejs +191 -0
  24. package/build/templates/base/prettier.config.js.ejs +11 -0
  25. package/build/templates/base/tsconfig.json.ejs +39 -0
  26. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +40 -0
  27. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/index.tsx.ejs +15 -0
  28. package/build/templates/packages/expo-router/drawer/app/(drawer)/(tabs)/two.tsx.ejs +15 -0
  29. package/build/templates/packages/expo-router/drawer/app/(drawer)/_layout.tsx.ejs +65 -0
  30. package/build/templates/packages/expo-router/drawer/app/(drawer)/index.tsx.ejs +15 -0
  31. package/build/templates/packages/expo-router/drawer/app/+html.tsx.ejs +49 -0
  32. package/build/templates/packages/expo-router/drawer/app/+not-found.tsx.ejs +100 -0
  33. package/build/templates/packages/expo-router/drawer/app/_layout.tsx.ejs +91 -0
  34. package/build/templates/packages/expo-router/drawer/app/modal.tsx.ejs +21 -0
  35. package/build/templates/packages/expo-router/expo-env.d.ts +4 -0
  36. package/build/templates/packages/expo-router/index.js.ejs +4 -0
  37. package/build/templates/packages/expo-router/metro.config.js.ejs +24 -0
  38. package/build/templates/packages/expo-router/stack/app/+html.tsx.ejs +49 -0
  39. package/build/templates/packages/expo-router/stack/app/+not-found.tsx.ejs +113 -0
  40. package/build/templates/packages/expo-router/stack/app/_layout.tsx.ejs +63 -0
  41. package/build/templates/packages/expo-router/stack/app/details.tsx.ejs +56 -0
  42. package/build/templates/packages/expo-router/stack/app/index.tsx.ejs +73 -0
  43. package/build/templates/packages/expo-router/tabs/app/(tabs)/_layout.tsx.ejs +52 -0
  44. package/build/templates/packages/expo-router/tabs/app/(tabs)/index.tsx.ejs +37 -0
  45. package/build/templates/packages/expo-router/tabs/app/(tabs)/two.tsx.ejs +37 -0
  46. package/build/templates/packages/expo-router/tabs/app/+html.tsx.ejs +49 -0
  47. package/build/templates/packages/expo-router/tabs/app/+not-found.tsx.ejs +110 -0
  48. package/build/templates/packages/expo-router/tabs/app/_layout.tsx.ejs +84 -0
  49. package/build/templates/packages/expo-router/tabs/app/modal.tsx.ejs +21 -0
  50. package/build/templates/packages/firebase/.env.ejs +8 -0
  51. package/build/templates/packages/firebase/metro.config.js.ejs +14 -0
  52. package/build/templates/packages/firebase/utils/firebase.ts.ejs +26 -0
  53. package/build/templates/packages/i18next/components/InternalizationExample.tsx.ejs +23 -0
  54. package/build/templates/packages/i18next/core/i18n/fallbackChecker.ts.ejs +13 -0
  55. package/build/templates/packages/i18next/core/i18n/init.ts.ejs +24 -0
  56. package/build/templates/packages/i18next/core/i18n/languageDetector.ts.ejs +13 -0
  57. package/build/templates/packages/i18next/translation/en.json.ejs +8 -0
  58. package/build/templates/packages/i18next/translation/fr.json.ejs +8 -0
  59. package/build/templates/packages/i18next/translation/index.ts.ejs +20 -0
  60. package/build/templates/packages/nativewind/components/BackButton.tsx.ejs +22 -0
  61. package/build/templates/packages/nativewind/components/Button.tsx.ejs +21 -0
  62. package/build/templates/packages/nativewind/components/Container.tsx.ejs +13 -0
  63. package/build/templates/packages/nativewind/components/EditScreenInfo.tsx.ejs +40 -0
  64. package/build/templates/packages/nativewind/components/ScreenContent.tsx.ejs +27 -0
  65. package/build/templates/packages/nativewind/global.css +3 -0
  66. package/build/templates/packages/nativewind/metro.config.js +7 -0
  67. package/build/templates/packages/nativewind/nativewind-env.d.ts +2 -0
  68. package/build/templates/packages/nativewind/tailwind.config.js.ejs +15 -0
  69. package/build/templates/packages/nativewindui/components/Container.tsx.ejs +14 -0
  70. package/build/templates/packages/nativewindui/components/EditScreenInfo.tsx.ejs +45 -0
  71. package/build/templates/packages/nativewindui/components/HeaderButton.tsx.ejs +31 -0
  72. package/build/templates/packages/nativewindui/components/ScreenContent.tsx.ejs +40 -0
  73. package/build/templates/packages/nativewindui/components/TabBarIcon.tsx.ejs +15 -0
  74. package/build/templates/packages/nativewindui/components/nativewindui/Icon/Icon.ios.tsx.ejs +52 -0
  75. package/build/templates/packages/nativewindui/components/nativewindui/Icon/Icon.tsx.ejs +58 -0
  76. package/build/templates/packages/nativewindui/components/nativewindui/Icon/index.ts.ejs +16 -0
  77. package/build/templates/packages/nativewindui/components/nativewindui/Icon/types.ts.ejs +18 -0
  78. package/build/templates/packages/nativewindui/components/nativewindui/ThemeToggle.tsx.ejs +33 -0
  79. package/build/templates/packages/nativewindui/drawer/app/(drawer)/(tabs)/_layout.tsx.ejs +28 -0
  80. package/build/templates/packages/nativewindui/drawer/app/(drawer)/(tabs)/index.tsx.ejs +15 -0
  81. package/build/templates/packages/nativewindui/drawer/app/(drawer)/(tabs)/two.tsx.ejs +15 -0
  82. package/build/templates/packages/nativewindui/drawer/app/(drawer)/_layout.tsx.ejs +35 -0
  83. package/build/templates/packages/nativewindui/drawer/app/(drawer)/index.tsx.ejs +535 -0
  84. package/build/templates/packages/nativewindui/drawer/app/+html.tsx.ejs +46 -0
  85. package/build/templates/packages/nativewindui/drawer/app/+not-found.tsx.ejs +83 -0
  86. package/build/templates/packages/nativewindui/drawer/app/_layout.tsx.ejs +75 -0
  87. package/build/templates/packages/nativewindui/drawer/app/modal.tsx.ejs +33 -0
  88. package/build/templates/packages/nativewindui/global.css.ejs +91 -0
  89. package/build/templates/packages/nativewindui/lib/cn.ts.ejs +6 -0
  90. package/build/templates/packages/nativewindui/lib/useColorScheme.tsx.ejs +21 -0
  91. package/build/templates/packages/nativewindui/nativewind-env.d.ts.ejs +1 -0
  92. package/build/templates/packages/nativewindui/stack/app/+html.tsx.ejs +46 -0
  93. package/build/templates/packages/nativewindui/stack/app/+not-found.tsx.ejs +18 -0
  94. package/build/templates/packages/nativewindui/stack/app/_layout.tsx.ejs +78 -0
  95. package/build/templates/packages/nativewindui/stack/app/index.tsx.ejs +487 -0
  96. package/build/templates/packages/nativewindui/stack/app/modal.tsx.ejs +33 -0
  97. package/build/templates/packages/nativewindui/tabs/app/(tabs)/_layout.tsx.ejs +35 -0
  98. package/build/templates/packages/nativewindui/tabs/app/(tabs)/index.tsx.ejs +537 -0
  99. package/build/templates/packages/nativewindui/tabs/app/(tabs)/two.tsx.ejs +22 -0
  100. package/build/templates/packages/nativewindui/tabs/app/+html.tsx.ejs +46 -0
  101. package/build/templates/packages/nativewindui/tabs/app/+not-found.tsx.ejs +90 -0
  102. package/build/templates/packages/nativewindui/tabs/app/_layout.tsx.ejs +78 -0
  103. package/build/templates/packages/nativewindui/tabs/app/modal.tsx.ejs +21 -0
  104. package/build/templates/packages/nativewindui/tailwind.config.js.ejs +67 -0
  105. package/build/templates/packages/nativewindui/theme/colors.ts.ejs +123 -0
  106. package/build/templates/packages/nativewindui/theme/index.ts.ejs +32 -0
  107. package/build/templates/packages/nativewindui/theme/with-opacity.ts.ejs +155 -0
  108. package/build/templates/packages/react-navigation/App.tsx.ejs +73 -0
  109. package/build/templates/packages/react-navigation/navigation/drawer-navigator.tsx.ejs +31 -0
  110. package/build/templates/packages/react-navigation/navigation/index.tsx.ejs +108 -0
  111. package/build/templates/packages/react-navigation/navigation/tab-navigator.tsx.ejs +38 -0
  112. package/build/templates/packages/react-navigation/screens/details.tsx.ejs +41 -0
  113. package/build/templates/packages/react-navigation/screens/home.tsx.ejs +5 -0
  114. package/build/templates/packages/react-navigation/screens/modal.tsx.ejs +20 -0
  115. package/build/templates/packages/react-navigation/screens/one.tsx.ejs +5 -0
  116. package/build/templates/packages/react-navigation/screens/overview.tsx.ejs +54 -0
  117. package/build/templates/packages/react-navigation/screens/two.tsx.ejs +5 -0
  118. package/build/templates/packages/restyle/components/BackButton.tsx.ejs +19 -0
  119. package/build/templates/packages/restyle/components/Button.tsx.ejs +32 -0
  120. package/build/templates/packages/restyle/components/Container.tsx.ejs +16 -0
  121. package/build/templates/packages/restyle/components/EditScreenInfo.tsx.ejs +38 -0
  122. package/build/templates/packages/restyle/components/ScreenContent.tsx.ejs +30 -0
  123. package/build/templates/packages/restyle/theme.ts.ejs +51 -0
  124. package/build/templates/packages/supabase/.env.ejs +2 -0
  125. package/build/templates/packages/supabase/utils/supabase.ts.ejs +14 -0
  126. package/build/templates/packages/tamagui/components/BackButton.tsx.ejs +12 -0
  127. package/build/templates/packages/tamagui/components/Button.tsx.ejs +17 -0
  128. package/build/templates/packages/tamagui/components/Container.tsx.ejs +12 -0
  129. package/build/templates/packages/tamagui/components/EditScreenInfo.tsx.ejs +27 -0
  130. package/build/templates/packages/tamagui/components/ScreenContent.tsx.ejs +23 -0
  131. package/build/templates/packages/tamagui/tamagui.config.ts.ejs +14 -0
  132. package/build/templates/packages/unistyles/breakpoints.ts.ejs +9 -0
  133. package/build/templates/packages/unistyles/components/BackButton.tsx.ejs +28 -0
  134. package/build/templates/packages/unistyles/components/Button.tsx.ejs +42 -0
  135. package/build/templates/packages/unistyles/components/Container.tsx.ejs +17 -0
  136. package/build/templates/packages/unistyles/components/EditScreenInfo.tsx.ejs +53 -0
  137. package/build/templates/packages/unistyles/components/ScreenContent.tsx.ejs +43 -0
  138. package/build/templates/packages/unistyles/theme.ts.ejs +34 -0
  139. package/build/templates/packages/unistyles/unistyles.ts.ejs +27 -0
  140. package/build/templates/packages/uniwind/global.css +2 -0
  141. package/build/templates/packages/uniwind/metro.config.js.ejs +10 -0
  142. package/build/templates/packages/vexo-analytics/.env.ejs +7 -0
  143. package/build/templates/packages/zustand/store/store.ts.ejs +15 -0
  144. package/build/types/cli.d.ts +4 -0
  145. package/build/types/commands/create-expo-stack.d.ts +3 -0
  146. package/build/types/constants.d.ts +10 -0
  147. package/build/types/types.d.ts +33 -0
  148. package/build/types/utilities/bumpVersion.d.ts +1 -0
  149. package/build/types/utilities/clearNavigationPackages.d.ts +2 -0
  150. package/build/types/utilities/clearStylingPackages.d.ts +2 -0
  151. package/build/types/utilities/configAnalytics.d.ts +18 -0
  152. package/build/types/utilities/configStorage.d.ts +8 -0
  153. package/build/types/utilities/configureProjectFiles.d.ts +3 -0
  154. package/build/types/utilities/copyBaseAssets.d.ts +2 -0
  155. package/build/types/utilities/generateNWUI.d.ts +3 -0
  156. package/build/types/utilities/generateProjectFiles.d.ts +5 -0
  157. package/build/types/utilities/getPackageManager.d.ts +8 -0
  158. package/build/types/utilities/index.d.ts +10 -0
  159. package/build/types/utilities/printOutput.d.ts +3 -0
  160. package/build/types/utilities/publishToGitHub.d.ts +2 -0
  161. package/build/types/utilities/renderTitle.d.ts +2 -0
  162. package/build/types/utilities/runCLI.d.ts +3 -0
  163. package/build/types/utilities/runEasConfigure.d.ts +3 -0
  164. package/build/types/utilities/runIgnite.d.ts +3 -0
  165. package/build/types/utilities/showHelp.d.ts +1 -0
  166. package/build/types/utilities/systemCommand.d.ts +14 -0
  167. package/build/types/utilities/usePackage.d.ts +2 -0
  168. package/build/types/utilities/validateProjectName.d.ts +4 -0
  169. package/build/types.js +39 -0
  170. package/build/utilities/bumpVersion.js +21 -0
  171. package/build/utilities/clearNavigationPackages.js +11 -0
  172. package/build/utilities/clearStylingPackages.js +11 -0
  173. package/build/utilities/configAnalytics.js +70 -0
  174. package/build/utilities/configStorage.js +50 -0
  175. package/build/utilities/configureProjectFiles.js +380 -0
  176. package/build/utilities/copyBaseAssets.js +21 -0
  177. package/build/utilities/generateNWUI.js +54 -0
  178. package/build/utilities/generateProjectFiles.js +106 -0
  179. package/build/utilities/getPackageManager.js +103 -0
  180. package/build/utilities/index.js +27 -0
  181. package/build/utilities/printOutput.js +251 -0
  182. package/build/utilities/publishToGitHub.js +173 -0
  183. package/build/utilities/renderTitle.js +55 -0
  184. package/build/utilities/runCLI.js +437 -0
  185. package/build/utilities/runEasConfigure.js +83 -0
  186. package/build/utilities/runIgnite.js +26 -0
  187. package/build/utilities/showHelp.js +85 -0
  188. package/build/utilities/systemCommand.js +40 -0
  189. package/build/utilities/usePackage.js +8 -0
  190. package/build/utilities/validateProjectName.js +42 -0
  191. package/package.json +77 -0
@@ -0,0 +1,437 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.runCLI = void 0;
13
+ const prompts_1 = require("@clack/prompts");
14
+ const gluegun_1 = require("gluegun");
15
+ const constants_1 = require("../constants");
16
+ const configStorage_1 = require("./configStorage");
17
+ const getPackageManager_1 = require("./getPackageManager");
18
+ // based on eas default bun version https://docs.expo.dev/build-reference/infrastructure/#ios-server-images
19
+ const minBunVersion = '1.1.13'; // or greater
20
+ const softwareMansionOptions = [
21
+ { value: 'react-native-gesture-handler', label: 'React Native Gesture Handler' },
22
+ { value: 'react-native-reanimated', label: 'React Native Reanimated (included by default)' },
23
+ { value: 'react-native-screens', label: 'React Native Screens' },
24
+ { value: 'react-native-svg', label: 'React Native SVG' },
25
+ { value: 'react-native-keyboard-controller', label: 'React Native Keyboard Controller' },
26
+ { value: 'react-native-worklets', label: 'React Native Worklets (included by default)' }
27
+ ];
28
+ function shouldAddSoftwareMansionPackage(name, cliResults) {
29
+ if (cliResults.packages.some((pkg) => pkg.name === name)) {
30
+ return false;
31
+ }
32
+ if ((name === 'react-native-gesture-handler' || name === 'react-native-screens') &&
33
+ cliResults.packages.some((pkg) => pkg.type === 'navigation')) {
34
+ return false;
35
+ }
36
+ return name !== 'react-native-reanimated' && name !== 'react-native-worklets';
37
+ }
38
+ function runCLI(toolbox, projectName) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ const { parameters: { options }, print: { info, success, warning, highlight } } = toolbox;
41
+ // Set the default options
42
+ const cliResults = constants_1.defaultOptions;
43
+ // Project name already validated, just set cliResults
44
+ cliResults.projectName = projectName;
45
+ cliResults.flags.overwrite = !!options.overwrite;
46
+ cliResults.flags.eas = !!options.eas;
47
+ // Clear default packages
48
+ cliResults.packages = [];
49
+ // Check whether the user has any saved create expo stack configurations
50
+ const savedConfigs = yield (0, configStorage_1.loadConfigs)();
51
+ // If the user has saved configurations, ask if they would like to use them
52
+ if (savedConfigs.length > 0) {
53
+ const useSavedConfig = yield (0, prompts_1.confirm)({
54
+ message: 'Would you like to use a saved configuration?',
55
+ initialValue: false
56
+ });
57
+ if ((0, prompts_1.isCancel)(useSavedConfig)) {
58
+ (0, prompts_1.cancel)('Cancelled... 👋');
59
+ return process.exit(0);
60
+ }
61
+ if (useSavedConfig) {
62
+ const savedConfigSelect = yield (0, prompts_1.select)({
63
+ message: 'Which saved configuration would you like to use?',
64
+ options: savedConfigs.map((config) => ({ value: config.name, label: config.name }))
65
+ });
66
+ if ((0, prompts_1.isCancel)(savedConfigSelect)) {
67
+ (0, prompts_1.cancel)('Cancelled... 👋');
68
+ return process.exit(0);
69
+ }
70
+ const selectedConfig = savedConfigs.find((config) => config.name === savedConfigSelect);
71
+ if (selectedConfig) {
72
+ cliResults.packages = selectedConfig.cliResults.packages;
73
+ cliResults.flags = selectedConfig.cliResults.flags;
74
+ success(`Using saved configuration: ${selectedConfig.name}`);
75
+ return cliResults;
76
+ }
77
+ else {
78
+ warning('Saved configuration not found, continuing with default configuration.');
79
+ }
80
+ }
81
+ }
82
+ // Ask about TypeScript
83
+ const shouldUseTypescript = yield (0, prompts_1.confirm)({
84
+ message: 'Would you like to use TypeScript with this project?',
85
+ initialValue: true
86
+ });
87
+ if ((0, prompts_1.isCancel)(shouldUseTypescript)) {
88
+ (0, prompts_1.cancel)('Cancelled... 👋');
89
+ return process.exit(0);
90
+ }
91
+ if (shouldUseTypescript) {
92
+ success('Good call, now using TypeScript! 🚀');
93
+ }
94
+ else {
95
+ success(`Wrong answer, we're gonna use Typescript.`);
96
+ }
97
+ const defaultPackageManagerVersion = (0, getPackageManager_1.getDefaultPackageManagerVersion)();
98
+ if (cliResults.flags.packageManager) {
99
+ if (options.bun || options.pnpm || options.npm || options.yarn) {
100
+ cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
101
+ }
102
+ else {
103
+ const shouldUseDefaultPackageManager = yield (0, prompts_1.confirm)({
104
+ message: `\nWe've detected ${cliResults.flags.packageManager} ${defaultPackageManagerVersion ? `v${defaultPackageManagerVersion}` : ''} as your preferred package manager.\nWould you like to continue using it?`,
105
+ initialValue: true
106
+ });
107
+ if ((0, prompts_1.isCancel)(shouldUseDefaultPackageManager)) {
108
+ (0, prompts_1.cancel)('Cancelled... 👋');
109
+ return process.exit(0);
110
+ }
111
+ if (!shouldUseDefaultPackageManager) {
112
+ const packageManagerSelect = yield (0, prompts_1.select)({
113
+ message: 'Gotcha! Which package manager would you like to use?',
114
+ options: [
115
+ { value: 'npm', label: 'npm' },
116
+ { value: 'yarn', label: 'yarn' },
117
+ { value: 'pnpm', label: 'pnpm' },
118
+ { value: 'bun', label: 'bun' }
119
+ ],
120
+ initialValue: 'npm'
121
+ });
122
+ if ((0, prompts_1.isCancel)(packageManagerSelect)) {
123
+ (0, prompts_1.cancel)('Cancelled... 👋');
124
+ return process.exit(0);
125
+ }
126
+ // random comment for the versioning change
127
+ cliResults.flags.packageManager = packageManagerSelect;
128
+ }
129
+ }
130
+ }
131
+ else {
132
+ if (options.bun || options.pnpm || options.npm || options.yarn) {
133
+ cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
134
+ }
135
+ else {
136
+ const packageManagerSelect = yield (0, prompts_1.select)({
137
+ message: 'Which package manager would you like to use?',
138
+ options: [
139
+ { value: 'npm', label: 'npm' },
140
+ { value: 'yarn', label: 'yarn' },
141
+ { value: 'pnpm', label: 'pnpm' },
142
+ { value: 'bun', label: 'bun' }
143
+ ]
144
+ });
145
+ if ((0, prompts_1.isCancel)(packageManagerSelect)) {
146
+ (0, prompts_1.cancel)('Cancelled... 👋');
147
+ return process.exit(0);
148
+ }
149
+ cliResults.flags.packageManager = packageManagerSelect;
150
+ }
151
+ }
152
+ const navigationSelect = yield (0, prompts_1.select)({
153
+ message: 'What would you like to use for Navigation?',
154
+ options: [
155
+ { value: 'react-navigation', label: 'React Navigation' },
156
+ { value: 'expo-router', label: 'Expo Router' },
157
+ { value: undefined, label: 'None' }
158
+ ],
159
+ initialValue: 'expo-router'
160
+ });
161
+ if ((0, prompts_1.isCancel)(navigationSelect)) {
162
+ (0, prompts_1.cancel)('Cancelled... 👋');
163
+ return process.exit(0);
164
+ }
165
+ if (navigationSelect) {
166
+ const navigationType = yield (0, prompts_1.select)({
167
+ message: 'What type of navigation would you like to use?',
168
+ options: [
169
+ { value: 'stack', label: 'Stack' },
170
+ { value: 'tabs', label: 'Tabs' },
171
+ { value: 'drawer + tabs', label: 'Drawer + Tabs' }
172
+ ]
173
+ });
174
+ if ((0, prompts_1.isCancel)(navigationType)) {
175
+ (0, prompts_1.cancel)('Cancelled... 👋');
176
+ return process.exit(0);
177
+ }
178
+ cliResults.packages.push({
179
+ name: navigationSelect,
180
+ type: 'navigation',
181
+ options: {
182
+ type: navigationType
183
+ }
184
+ });
185
+ // If the user is using a version of bun that is anything but version 1.0.22, communicate a message
186
+ if (cliResults.flags.packageManager === 'bun' &&
187
+ defaultPackageManagerVersion &&
188
+ gluegun_1.semver.lt(defaultPackageManagerVersion, minBunVersion)) {
189
+ warning('⚠️' + ' ' + ` We've detected you're using Bun v${defaultPackageManagerVersion}.`);
190
+ info('');
191
+ warning(`Some packages may not work correctly if you continue. We recommend using the latest version of Bun or at-least v${minBunVersion}.`);
192
+ warning(`For more information, visit https://github.com/oven-sh/bun/issues/8406`);
193
+ info('');
194
+ warning(`To upgrade to Bun run:`);
195
+ info('');
196
+ highlight(`bun upgrade`);
197
+ info('');
198
+ warning(`or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).`);
199
+ info('');
200
+ const shouldContinue = yield (0, prompts_1.confirm)({
201
+ message: `Would you like to continue without upgrading Bun?`,
202
+ initialValue: false
203
+ });
204
+ if ((0, prompts_1.isCancel)(shouldContinue) || !shouldContinue) {
205
+ throw new Error(constants_1.bunInstallationError);
206
+ }
207
+ success(`Great, we'll use ${navigationSelect}!`);
208
+ }
209
+ else if (cliResults.flags.packageManager === 'bun' && !defaultPackageManagerVersion) {
210
+ warning('⚠️' + ' ' + ` We've detected you're using Bun but we are unable to determine which version you are using.`);
211
+ info('');
212
+ warning(`We recommend using the latest version of Bun or at-least v${minBunVersion}. If you continue with an earlier version, some packages may not work correctly.`);
213
+ warning(`For more information, visit https://github.com/oven-sh/bun/issues/8406`);
214
+ info('');
215
+ warning(`To check your version of Bun, run:`);
216
+ info('');
217
+ highlight(`bun -version`);
218
+ info('');
219
+ warning(`To upgrade Bun run:`);
220
+ info('');
221
+ highlight(`bun upgrade`);
222
+ info('');
223
+ warning(`or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).`);
224
+ info('');
225
+ const shouldContinue = yield (0, prompts_1.confirm)({
226
+ message: `Would you like to continue with your current version of Bun?`,
227
+ initialValue: false
228
+ });
229
+ if ((0, prompts_1.isCancel)(shouldContinue) || !shouldContinue) {
230
+ throw new Error(constants_1.bunInstallationError);
231
+ }
232
+ success(`Great, we'll use ${navigationSelect}!`);
233
+ }
234
+ }
235
+ else {
236
+ success(`No problem, skipping navigation for now.`);
237
+ }
238
+ const stylingSelect = yield (0, prompts_1.select)({
239
+ message: 'What would you like to use for styling?',
240
+ options: navigationSelect === 'expo-router'
241
+ ? [
242
+ { value: 'nativewindui', label: 'NativewindUI' },
243
+ { value: 'uniwind', label: 'Uniwind' },
244
+ { value: 'nativewind', label: 'Nativewind' },
245
+ { value: 'restyle', label: 'Restyle' },
246
+ { value: 'tamagui', label: 'Tamagui' },
247
+ { value: 'stylesheet', label: 'StyleSheet' },
248
+ { value: 'unistyles', label: 'Unistyles' }
249
+ ]
250
+ : [
251
+ { value: 'uniwind', label: 'Uniwind' },
252
+ { value: 'nativewind', label: 'Nativewind' },
253
+ { value: 'restyle', label: 'Restyle' },
254
+ { value: 'tamagui', label: 'Tamagui' },
255
+ { value: 'stylesheet', label: 'StyleSheet' },
256
+ { value: 'unistyles', label: 'Unistyles' }
257
+ ],
258
+ initialValue: navigationSelect === 'expo-router' ? 'nativewindui' : 'nativewind'
259
+ });
260
+ if ((0, prompts_1.isCancel)(stylingSelect)) {
261
+ (0, prompts_1.cancel)('Cancelled... 👋');
262
+ return process.exit(0);
263
+ }
264
+ if (stylingSelect === 'nativewindui') {
265
+ const selectedComponents = yield (0, prompts_1.multiselect)({
266
+ message: 'Which components would you like to explore?',
267
+ options: [
268
+ { value: 'action-sheet', label: 'Action Sheet' },
269
+ { value: 'activity-indicator', label: 'Activity Indicator' },
270
+ { value: 'activity-view', label: 'Activity View' },
271
+ { value: 'avatar', label: 'Avatar' },
272
+ { value: 'date-picker', label: 'Date Picker' },
273
+ { value: 'picker', label: 'Picker' },
274
+ { value: 'progress-indicator', label: 'Progress Indicator' },
275
+ { value: 'ratings-indicator', label: 'Ratings Indicator' },
276
+ { value: 'slider', label: 'Slider' },
277
+ // We always include text and button so we don't need to provide this option
278
+ // { value: 'text', label: 'Text' },
279
+ // { value: 'button', label: 'Button' },
280
+ { value: 'toggle', label: 'Toggle' }
281
+ ],
282
+ required: false,
283
+ initialValues: constants_1.nativewindUIOptions
284
+ });
285
+ if ((0, prompts_1.isCancel)(selectedComponents)) {
286
+ (0, prompts_1.cancel)('Cancelled... 👋');
287
+ return process.exit(0);
288
+ }
289
+ cliResults.packages.push({
290
+ name: 'nativewindui',
291
+ type: 'styling',
292
+ options: {
293
+ selectedComponents: Array.from(new Set([...selectedComponents, 'text', 'button']))
294
+ }
295
+ });
296
+ success(`You'll be styling with ease using NativewindUI!`);
297
+ }
298
+ else {
299
+ cliResults.packages.push({ name: stylingSelect, type: 'styling' });
300
+ success(`You'll be styling with ease using ${stylingSelect.toString().charAt(0).toUpperCase() + stylingSelect.toString().slice(1)}!`);
301
+ }
302
+ const softwareMansionSelect = yield (0, prompts_1.multiselect)({
303
+ message: 'Which optional Software Mansion packages would you like to add?',
304
+ options: softwareMansionOptions,
305
+ required: false,
306
+ initialValues: []
307
+ });
308
+ if ((0, prompts_1.isCancel)(softwareMansionSelect)) {
309
+ (0, prompts_1.cancel)('Cancelled... 👋');
310
+ return process.exit(0);
311
+ }
312
+ softwareMansionSelect
313
+ .filter((pkg) => shouldAddSoftwareMansionPackage(pkg, cliResults))
314
+ .forEach((pkg) => {
315
+ cliResults.packages.push({ name: pkg, type: 'software-mansion' });
316
+ });
317
+ const stateManagementSelect = yield (0, prompts_1.select)({
318
+ message: 'What would you like to use for state management?',
319
+ options: [
320
+ { value: undefined, label: 'None' },
321
+ { value: 'zustand', label: 'Zustand' }
322
+ // { value: 'mobx', label: 'MobX' },
323
+ // { value: 'redux', label: 'Redux' },
324
+ ]
325
+ });
326
+ if ((0, prompts_1.isCancel)(stateManagementSelect)) {
327
+ (0, prompts_1.cancel)('Cancelled... 👋');
328
+ return process.exit(0);
329
+ }
330
+ if (stateManagementSelect) {
331
+ cliResults.packages.push({
332
+ name: stateManagementSelect,
333
+ type: 'state-management'
334
+ });
335
+ success(`You'll be using ${stateManagementSelect} for state management.`);
336
+ }
337
+ else {
338
+ success(`No problem, skipping state management for now.`);
339
+ }
340
+ const authenticationOptions = [
341
+ { value: undefined, label: 'None' },
342
+ { value: 'supabase', label: 'Supabase' },
343
+ { value: 'firebase', label: 'Firebase' }
344
+ ];
345
+ const authenticationSelect = yield (0, prompts_1.select)({
346
+ message: 'What would you like to use for authentication?',
347
+ options: authenticationOptions
348
+ });
349
+ if ((0, prompts_1.isCancel)(authenticationSelect)) {
350
+ (0, prompts_1.cancel)('Cancelled... 👋');
351
+ return process.exit(0);
352
+ }
353
+ if (authenticationSelect) {
354
+ cliResults.packages.push({ name: authenticationSelect, type: 'authentication' });
355
+ }
356
+ else {
357
+ success(`No problem, skipping authentication for now.`);
358
+ }
359
+ const internationalizationSelect = yield (0, prompts_1.select)({
360
+ message: 'Would you like to include internationalization?',
361
+ options: [
362
+ { value: undefined, label: 'None' },
363
+ { value: 'i18next', label: 'i18next' }
364
+ ]
365
+ });
366
+ if ((0, prompts_1.isCancel)(internationalizationSelect)) {
367
+ (0, prompts_1.cancel)('Cancelled... 👋');
368
+ return process.exit(0);
369
+ }
370
+ if (internationalizationSelect) {
371
+ cliResults.packages.push({
372
+ name: internationalizationSelect,
373
+ type: 'internationalization'
374
+ });
375
+ success(`We'll add ${internationalizationSelect} for internationalization.`);
376
+ }
377
+ else {
378
+ success(`No problem, skipping internationalization for now.`);
379
+ }
380
+ const analyticsSelect = yield (0, prompts_1.select)({
381
+ message: 'Would you like to include analytics?',
382
+ options: [
383
+ { value: undefined, label: 'None' },
384
+ { value: 'vexo-analytics', label: 'Vexo Analytics' }
385
+ ]
386
+ });
387
+ if ((0, prompts_1.isCancel)(analyticsSelect)) {
388
+ (0, prompts_1.cancel)('Cancelled... 👋');
389
+ return process.exit(0);
390
+ }
391
+ if (analyticsSelect) {
392
+ cliResults.packages.push({ name: analyticsSelect, type: 'analytics' });
393
+ success(`We'll add ${analyticsSelect} for analytics.`);
394
+ }
395
+ else {
396
+ success(`No problem, skipping analytics for now.`);
397
+ }
398
+ const easEnabled = yield (0, prompts_1.confirm)({
399
+ message: `Do you want to setup EAS`,
400
+ initialValue: false
401
+ });
402
+ if ((0, prompts_1.isCancel)(easEnabled)) {
403
+ (0, prompts_1.cancel)('Cancelled... 👋');
404
+ return process.exit(0);
405
+ }
406
+ if (easEnabled) {
407
+ cliResults.flags.eas = true;
408
+ success(`We'll setup EAS for you.`);
409
+ }
410
+ else {
411
+ success(`No problem, skipping eas for now.`);
412
+ }
413
+ // Offer user ability to save configuration
414
+ const shouldSaveConfig = yield (0, prompts_1.confirm)({
415
+ message: 'Would you like to save this configuration for future use?',
416
+ initialValue: false
417
+ });
418
+ if ((0, prompts_1.isCancel)(shouldSaveConfig)) {
419
+ (0, prompts_1.cancel)('Cancelled... 👋');
420
+ return process.exit(0);
421
+ }
422
+ if (shouldSaveConfig) {
423
+ const name = yield (0, prompts_1.text)({
424
+ message: 'What do you want to name this configuration?',
425
+ placeholder: 'Default'
426
+ });
427
+ if ((0, prompts_1.isCancel)(name)) {
428
+ (0, prompts_1.cancel)('Cancelled... 👋');
429
+ return process.exit(0);
430
+ }
431
+ yield (0, configStorage_1.saveConfig)({ name, cliResults });
432
+ }
433
+ return cliResults;
434
+ });
435
+ }
436
+ exports.runCLI = runCLI;
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5DTEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNENBQXNGO0FBR3RGLHFDQUFpQztBQUNqQyw0Q0FBeUY7QUFjekYsbURBQTBEO0FBQzFELDJEQUFzRTtBQUV0RSwyR0FBMkc7QUFDM0csTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLENBQUMsYUFBYTtBQUU3QyxNQUFNLHNCQUFzQixHQUEyRDtJQUNyRixFQUFFLEtBQUssRUFBRSw4QkFBOEIsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUU7SUFDaEYsRUFBRSxLQUFLLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLCtDQUErQyxFQUFFO0lBQzVGLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtJQUNoRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7SUFDeEQsRUFBRSxLQUFLLEVBQUUsa0NBQWtDLEVBQUUsS0FBSyxFQUFFLGtDQUFrQyxFQUFFO0lBQ3hGLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSw2Q0FBNkMsRUFBRTtDQUN6RixDQUFDO0FBRUYsU0FBUywrQkFBK0IsQ0FBQyxJQUEyQixFQUFFLFVBQXNCO0lBQzFGLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6RCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUNFLENBQUMsSUFBSSxLQUFLLDhCQUE4QixJQUFJLElBQUksS0FBSyxzQkFBc0IsQ0FBQztRQUM1RSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFF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
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.easConfigure = void 0;
13
+ const prompts_1 = require("@clack/prompts");
14
+ const systemCommand_1 = require("./systemCommand");
15
+ function easConfigure(cliResults, packageManager, toolbox) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ const { print: { info, success, warning, error }, system } = toolbox;
18
+ if (cliResults.flags.noInstall) {
19
+ error('Eas configuration requires installing dependencies, please remove the --no-install flag and try again.');
20
+ process.exit(1);
21
+ }
22
+ const { projectName } = cliResults;
23
+ info('Configuring EAS...');
24
+ info(``);
25
+ const easOutput = yield system.spawn(`eas --version`);
26
+ if (easOutput === null || easOutput === void 0 ? void 0 : easOutput.error) {
27
+ warning('EAS CLI not found, to continue please install it globally');
28
+ info(``);
29
+ const shouldInstall = yield (0, prompts_1.confirm)({
30
+ message: `Install EAS CLI?`
31
+ });
32
+ info(``);
33
+ if ((0, prompts_1.isCancel)(shouldInstall)) {
34
+ (0, prompts_1.cancel)('Cancelled... 👋');
35
+ return process.exit(0);
36
+ }
37
+ if (shouldInstall) {
38
+ let packageManagerToUse = packageManager;
39
+ // bun has no global install
40
+ if (packageManager === 'bun') {
41
+ const packageManagerToUseResult = yield (0, prompts_1.select)({
42
+ message: "We can't use bun to install global packages, please select a package manager to use:",
43
+ options: [
44
+ { value: 'npm', label: 'npm' },
45
+ { value: 'yarn', label: 'yarn' },
46
+ { value: 'pnpm', label: 'pnpm' }
47
+ ]
48
+ });
49
+ if ((0, prompts_1.isCancel)(packageManagerToUseResult)) {
50
+ (0, prompts_1.cancel)('Cancelled... 👋');
51
+ return process.exit(0);
52
+ }
53
+ packageManagerToUse = packageManagerToUseResult;
54
+ }
55
+ info(`We'll use ${packageManagerToUse} install -g eas-cli`);
56
+ info(``);
57
+ yield (0, systemCommand_1.runSystemCommand)({
58
+ command: `${packageManagerToUse} install -g eas-cli`,
59
+ toolbox,
60
+ errorMessage: 'Error installing EAS CLI',
61
+ stdio: undefined
62
+ });
63
+ }
64
+ }
65
+ yield (0, systemCommand_1.runSystemCommand)({
66
+ command: `cd ${projectName} && eas build:configure -p all`,
67
+ errorMessage: 'Error configuring EAS',
68
+ stdio: 'inherit',
69
+ toolbox
70
+ });
71
+ success('EAS configured!');
72
+ info(`Now we'll generate the native code for your project`);
73
+ yield (0, systemCommand_1.runSystemCommand)({
74
+ command: `cd ${projectName} && ${packageManager} run prebuild`,
75
+ errorMessage: 'Error generating native code',
76
+ stdio: 'inherit',
77
+ toolbox
78
+ });
79
+ success('Native code generated!');
80
+ });
81
+ }
82
+ exports.easConfigure = easConfigure;
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuRWFzQ29uZmlndXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5FYXNDb25maWd1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsNENBQW1FO0FBRW5FLG1EQUFtRDtBQUVuRCxTQUFzQixZQUFZLENBQ2hDLFVBQXNCLEVBQ3RCLGNBQThCLEVBQzlCLE9BQWdCOztRQUVoQixNQUFNLEVBQ0osS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQ3hDLE1BQU0sRUFDUCxHQUFHLE9BQU8sQ0FBQztRQUVaLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvQixLQUFLLENBQUMsd0dBQXdHLENBQUMsQ0FBQztZQUVoSCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDO1FBRW5DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNULE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV0RCxJQUFJLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsMkRBQTJELENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDVCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQztnQkFDbEMsT0FBTyxFQUFFLGtCQUFrQjthQUM1QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFVCxJQUFJLElBQUEsa0JBQVEsRUFBQyxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUM1QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFFRCxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztnQkFFekMsNEJBQTRCO2dCQUM1QixJQUFJLGNBQWMsS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDN0IsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLElBQUEsZ0JBQU0sRUFBQzt3QkFDN0MsT0FBTyxFQUFFLHNGQUFzRjt3QkFDL0YsT0FBTyxFQUFFOzRCQUNQLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFOzRCQUM5QixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTs0QkFDaEMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7eUJBQ2pDO3FCQUNGLENBQUMsQ0FBQztvQkFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7d0JBQ3hDLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7b0JBRUQsbUJBQW1CLEdBQUcseUJBQTJDLENBQUM7Z0JBQ3BFLENBQUM7Z0JBRUQsSUFBSSxDQUFDLGFBQWEsbUJBQW1CLHFCQUFxQixDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFVCxNQUFNLElBQUEsZ0NBQWdCLEVBQUM7b0JBQ3JCLE9BQU8sRUFBRSxHQUFHLG1CQUFtQixxQkFBcUI7b0JBQ3BELE9BQU87b0JBQ1AsWUFBWSxFQUFFLDBCQUEwQjtvQkFDeEMsS0FBSyxFQUFFLFNBQVM7aUJBQ2pCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxJQUFBLGdDQUFnQixFQUFDO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLFdBQVcsZ0NBQWdDO1lBQzFELFlBQVksRUFBRSx1QkFBdUI7WUFDckMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTztTQUNSLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBRTVELE1BQU0sSUFBQSxnQ0FBZ0IsRUFBQztZQUNyQixPQUFPLEVBQUUsTUFBTSxXQUFXLE9BQU8sY0FBYyxlQUFlO1lBQzlELFlBQVksRUFBRSw4QkFBOEI7WUFDNUMsS0FBSyxFQUFFLFNBQVM7WUFDaEIsT0FBTztTQUNSLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FBQTtBQXhGRCxvQ0F3RkMifQ==
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.runIgnite = void 0;
13
+ const getPackageManager_1 = require("./getPackageManager");
14
+ function runIgnite(toolbox, projectName, cliResults) {
15
+ return __awaiter(this, void 0, void 0, function* () {
16
+ const { print: { success }, system } = toolbox;
17
+ const packageManager = (0, getPackageManager_1.getPackageManager)(toolbox, cliResults);
18
+ success('Running Ignite CLI to create an opinionated stack...');
19
+ yield system.spawn(`npx ignite-cli@$latest new ${projectName} --packager=${packageManager} --yes`, {
20
+ shell: true,
21
+ stdio: 'inherit'
22
+ });
23
+ });
24
+ }
25
+ exports.runIgnite = runIgnite;
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuSWduaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5JZ25pdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsMkRBQXdEO0FBR3hELFNBQXNCLFNBQVMsQ0FBQyxPQUFnQixFQUFFLFdBQW1CLEVBQUUsVUFBc0I7O1FBQzNGLE1BQU0sRUFDSixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFDbEIsTUFBTSxFQUNQLEdBQUcsT0FBTyxDQUFDO1FBRVosTUFBTSxjQUFjLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFOUQsT0FBTyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7UUFDaEUsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixXQUFXLGVBQWUsY0FBYyxRQUFRLEVBQUU7WUFDakcsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsU0FBUztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQUE7QUFiRCw4QkFhQyJ9