@sentry/wizard 4.5.0 → 4.7.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.
- package/CHANGELOG.md +25 -1
- package/README.md +23 -19
- package/dist/bin.js +22 -0
- package/dist/bin.js.map +1 -1
- package/dist/e2e-tests/tests/flutter.test.js +16 -16
- package/dist/e2e-tests/tests/flutter.test.js.map +1 -1
- package/dist/e2e-tests/tests/help-message.test.js +56 -0
- package/dist/e2e-tests/tests/help-message.test.js.map +1 -0
- package/dist/e2e-tests/tests/nextjs-14.test.js +17 -16
- package/dist/e2e-tests/tests/nextjs-14.test.js.map +1 -1
- package/dist/e2e-tests/tests/nextjs-15.test.js +16 -16
- package/dist/e2e-tests/tests/nextjs-15.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-3.test.js +13 -12
- package/dist/e2e-tests/tests/nuxt-3.test.js.map +1 -1
- package/dist/e2e-tests/tests/nuxt-4.test.js +13 -12
- package/dist/e2e-tests/tests/nuxt-4.test.js.map +1 -1
- package/dist/e2e-tests/tests/remix.test.js +20 -20
- package/dist/e2e-tests/tests/remix.test.js.map +1 -1
- package/dist/e2e-tests/tests/sveltekit.test.js +20 -20
- package/dist/e2e-tests/tests/sveltekit.test.js.map +1 -1
- package/dist/e2e-tests/utils/index.d.ts +1 -1
- package/dist/e2e-tests/utils/index.js +35 -13
- package/dist/e2e-tests/utils/index.js.map +1 -1
- package/dist/lib/Constants.d.ts +7 -1
- package/dist/lib/Constants.js.map +1 -1
- package/dist/lib/Helper/File.d.ts +1 -1
- package/dist/lib/Helper/File.js +1 -3
- package/dist/lib/Helper/File.js.map +1 -1
- package/dist/lib/Helper/Logging.d.ts +4 -1
- package/dist/lib/Helper/Logging.js +3 -0
- package/dist/lib/Helper/Logging.js.map +1 -1
- package/dist/lib/Helper/Package.d.ts +5 -3
- package/dist/lib/Helper/Package.js +2 -2
- package/dist/lib/Helper/Package.js.map +1 -1
- package/dist/lib/Helper/SentryCli.d.ts +20 -7
- package/dist/lib/Helper/SentryCli.js +21 -13
- package/dist/lib/Helper/SentryCli.js.map +1 -1
- package/dist/lib/Helper/Wizard.js +9 -5
- package/dist/lib/Helper/Wizard.js.map +1 -1
- package/dist/lib/Helper/__tests__/File.js +9 -9
- package/dist/lib/Helper/__tests__/File.js.map +1 -1
- package/dist/lib/Helper/__tests__/MergeConfig.js +17 -17
- package/dist/lib/Helper/__tests__/MergeConfig.js.map +1 -1
- package/dist/lib/Helper/__tests__/SentryCli.js +39 -21
- package/dist/lib/Helper/__tests__/SentryCli.js.map +1 -1
- package/dist/lib/Setup.d.ts +4 -1
- package/dist/lib/Setup.js +12 -2
- package/dist/lib/Setup.js.map +1 -1
- package/dist/lib/Steps/BaseStep.d.ts +1 -1
- package/dist/lib/Steps/BaseStep.js.map +1 -1
- package/dist/lib/Steps/Integrations/BaseIntegration.js +1 -2
- package/dist/lib/Steps/Integrations/BaseIntegration.js.map +1 -1
- package/dist/lib/Steps/Integrations/Cordova.js +14 -10
- package/dist/lib/Steps/Integrations/Cordova.js.map +1 -1
- package/dist/lib/Steps/Integrations/Electron.d.ts +4 -1
- package/dist/lib/Steps/Integrations/Electron.js +1 -1
- package/dist/lib/Steps/Integrations/Electron.js.map +1 -1
- package/dist/lib/Steps/Integrations/MobileProject.d.ts +3 -1
- package/dist/lib/Steps/Integrations/MobileProject.js +1 -1
- package/dist/lib/Steps/Integrations/MobileProject.js.map +1 -1
- package/dist/lib/Steps/PromptForParameters.d.ts +4 -1
- package/dist/lib/Steps/PromptForParameters.js.map +1 -1
- package/dist/lib/Steps/SentryProjectSelector.d.ts +42 -1
- package/dist/lib/Steps/SentryProjectSelector.js +1 -1
- package/dist/lib/Steps/SentryProjectSelector.js.map +1 -1
- package/dist/lib/Steps/WaitForSentry.d.ts +3 -1
- package/dist/lib/Steps/WaitForSentry.js +4 -4
- package/dist/lib/Steps/WaitForSentry.js.map +1 -1
- package/dist/lib/Steps/Welcome.js +5 -0
- package/dist/lib/Steps/Welcome.js.map +1 -1
- package/dist/lib/Types.d.ts +14 -0
- package/dist/lib/Types.js +3 -0
- package/dist/lib/Types.js.map +1 -0
- package/dist/lib/__tests__/Env.js +10 -16
- package/dist/lib/__tests__/Env.js.map +1 -1
- package/dist/src/android/android-wizard.js +15 -12
- package/dist/src/android/android-wizard.js.map +1 -1
- package/dist/src/android/code-tools.js +1 -1
- package/dist/src/android/code-tools.js.map +1 -1
- package/dist/src/android/gradle.js +4 -4
- package/dist/src/android/gradle.js.map +1 -1
- package/dist/src/android/manifest.js +1 -1
- package/dist/src/android/manifest.js.map +1 -1
- package/dist/src/apple/apple-wizard.d.ts +2 -2
- package/dist/src/apple/apple-wizard.js +54 -175
- package/dist/src/apple/apple-wizard.js.map +1 -1
- package/dist/src/apple/check-installed-cli.d.ts +1 -0
- package/dist/src/apple/check-installed-cli.js +60 -0
- package/dist/src/apple/check-installed-cli.js.map +1 -0
- package/dist/src/apple/cocoapod.js +1 -1
- package/dist/src/apple/cocoapod.js.map +1 -1
- package/dist/src/apple/code-tools.js +1 -1
- package/dist/src/apple/code-tools.js.map +1 -1
- package/dist/src/apple/configure-fastlane.d.ts +5 -0
- package/dist/src/apple/configure-fastlane.js +66 -0
- package/dist/src/apple/configure-fastlane.js.map +1 -0
- package/dist/src/apple/configure-package-manager.d.ts +5 -0
- package/dist/src/apple/configure-package-manager.js +68 -0
- package/dist/src/apple/configure-package-manager.js.map +1 -0
- package/dist/src/apple/configure-sentry-cli.d.ts +4 -0
- package/dist/src/apple/configure-sentry-cli.js +47 -0
- package/dist/src/apple/configure-sentry-cli.js.map +1 -0
- package/dist/src/apple/configure-xcode-project.d.ts +8 -0
- package/dist/src/apple/configure-xcode-project.js +11 -0
- package/dist/src/apple/configure-xcode-project.js.map +1 -0
- package/dist/src/apple/fastlane.d.ts +1 -1
- package/dist/src/apple/fastlane.js +5 -5
- package/dist/src/apple/fastlane.js.map +1 -1
- package/dist/src/apple/inject-code-snippet.d.ts +6 -0
- package/dist/src/apple/inject-code-snippet.js +54 -0
- package/dist/src/apple/inject-code-snippet.js.map +1 -0
- package/dist/src/apple/lookup-xcode-project.d.ts +7 -0
- package/dist/src/apple/lookup-xcode-project.js +98 -0
- package/dist/src/apple/lookup-xcode-project.js.map +1 -0
- package/dist/src/apple/options.d.ts +4 -0
- package/dist/src/apple/options.js +3 -0
- package/dist/src/apple/options.js.map +1 -0
- package/dist/src/apple/search-xcode-project-at-path.d.ts +1 -0
- package/dist/src/apple/search-xcode-project-at-path.js +70 -0
- package/dist/src/apple/search-xcode-project-at-path.js.map +1 -0
- package/dist/src/apple/templates.js +11 -7
- package/dist/src/apple/templates.js.map +1 -1
- package/dist/src/apple/xcode-manager.js +4 -7
- package/dist/src/apple/xcode-manager.js.map +1 -1
- package/dist/src/flutter/code-tools.js +3 -3
- package/dist/src/flutter/code-tools.js.map +1 -1
- package/dist/src/flutter/flutter-wizard.js +21 -15
- package/dist/src/flutter/flutter-wizard.js.map +1 -1
- package/dist/src/flutter/templates.js +4 -4
- package/dist/src/flutter/templates.js.map +1 -1
- package/dist/src/nextjs/nextjs-wizard.js +118 -43
- package/dist/src/nextjs/nextjs-wizard.js.map +1 -1
- package/dist/src/nextjs/templates.d.ts +10 -1
- package/dist/src/nextjs/templates.js +192 -62
- package/dist/src/nextjs/templates.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard.js +21 -16
- package/dist/src/nuxt/nuxt-wizard.js.map +1 -1
- package/dist/src/nuxt/sdk-example.js +3 -3
- package/dist/src/nuxt/sdk-example.js.map +1 -1
- package/dist/src/nuxt/sdk-setup.js +9 -9
- package/dist/src/nuxt/sdk-setup.js.map +1 -1
- package/dist/src/nuxt/templates.js +173 -58
- package/dist/src/nuxt/templates.js.map +1 -1
- package/dist/src/nuxt/utils.js +6 -3
- package/dist/src/nuxt/utils.js.map +1 -1
- package/dist/src/react-native/expo-env-file.js +1 -1
- package/dist/src/react-native/expo-env-file.js.map +1 -1
- package/dist/src/react-native/expo-metro.js +4 -4
- package/dist/src/react-native/expo-metro.js.map +1 -1
- package/dist/src/react-native/expo.js +4 -4
- package/dist/src/react-native/expo.js.map +1 -1
- package/dist/src/react-native/javascript.d.ts +6 -4
- package/dist/src/react-native/javascript.js +31 -15
- package/dist/src/react-native/javascript.js.map +1 -1
- package/dist/src/react-native/metro.js +8 -8
- package/dist/src/react-native/metro.js.map +1 -1
- package/dist/src/react-native/react-native-wizard.d.ts +5 -1
- package/dist/src/react-native/react-native-wizard.js +66 -36
- package/dist/src/react-native/react-native-wizard.js.map +1 -1
- package/dist/src/react-native/uninstall.js +8 -5
- package/dist/src/react-native/uninstall.js.map +1 -1
- package/dist/src/react-native/xcode.d.ts +9 -4
- package/dist/src/react-native/xcode.js +65 -22
- package/dist/src/react-native/xcode.js.map +1 -1
- package/dist/src/remix/codemods/handle-error.js +4 -1
- package/dist/src/remix/codemods/handle-error.js.map +1 -1
- package/dist/src/remix/remix-wizard.js +23 -18
- package/dist/src/remix/remix-wizard.js.map +1 -1
- package/dist/src/remix/sdk-example.js +163 -64
- package/dist/src/remix/sdk-example.js.map +1 -1
- package/dist/src/remix/sdk-setup.js +11 -7
- package/dist/src/remix/sdk-setup.js.map +1 -1
- package/dist/src/run.d.ts +3 -1
- package/dist/src/run.js +29 -9
- package/dist/src/run.js.map +1 -1
- package/dist/src/sourcemaps/sourcemaps-wizard.js +30 -28
- package/dist/src/sourcemaps/sourcemaps-wizard.js.map +1 -1
- package/dist/src/sourcemaps/tools/angular.js +3 -3
- package/dist/src/sourcemaps/tools/angular.js.map +1 -1
- package/dist/src/sourcemaps/tools/create-react-app.js +3 -3
- package/dist/src/sourcemaps/tools/create-react-app.js.map +1 -1
- package/dist/src/sourcemaps/tools/esbuild.js +6 -6
- package/dist/src/sourcemaps/tools/esbuild.js.map +1 -1
- package/dist/src/sourcemaps/tools/nextjs.js +5 -5
- package/dist/src/sourcemaps/tools/nextjs.js.map +1 -1
- package/dist/src/sourcemaps/tools/remix.js +4 -4
- package/dist/src/sourcemaps/tools/remix.js.map +1 -1
- package/dist/src/sourcemaps/tools/rollup.js +6 -6
- package/dist/src/sourcemaps/tools/rollup.js.map +1 -1
- package/dist/src/sourcemaps/tools/sentry-cli.js +15 -15
- package/dist/src/sourcemaps/tools/sentry-cli.js.map +1 -1
- package/dist/src/sourcemaps/tools/tsc.js +6 -6
- package/dist/src/sourcemaps/tools/tsc.js.map +1 -1
- package/dist/src/sourcemaps/tools/vite.js +12 -12
- package/dist/src/sourcemaps/tools/vite.js.map +1 -1
- package/dist/src/sourcemaps/tools/webpack.js +10 -10
- package/dist/src/sourcemaps/tools/webpack.js.map +1 -1
- package/dist/src/sourcemaps/utils/detect-tool.js +2 -2
- package/dist/src/sourcemaps/utils/detect-tool.js.map +1 -1
- package/dist/src/sourcemaps/utils/other-wizards.js +5 -5
- package/dist/src/sourcemaps/utils/other-wizards.js.map +1 -1
- package/dist/src/sourcemaps/utils/sdk-version.js +7 -7
- package/dist/src/sourcemaps/utils/sdk-version.js.map +1 -1
- package/dist/src/sveltekit/sdk-example.js +1 -1
- package/dist/src/sveltekit/sdk-example.js.map +1 -1
- package/dist/src/sveltekit/sdk-setup.js +15 -14
- package/dist/src/sveltekit/sdk-setup.js.map +1 -1
- package/dist/src/sveltekit/sveltekit-wizard.js +25 -20
- package/dist/src/sveltekit/sveltekit-wizard.js.map +1 -1
- package/dist/src/sveltekit/templates.js +126 -37
- package/dist/src/sveltekit/templates.js.map +1 -1
- package/dist/src/telemetry.js +11 -0
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/utils/{clack-utils.d.ts → clack/index.d.ts} +45 -7
- package/dist/src/utils/{clack-utils.js → clack/index.js} +75 -20
- package/dist/src/utils/clack/index.js.map +1 -0
- package/dist/src/utils/debug.js +1 -1
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/find-files-with-extension.d.ts +1 -0
- package/dist/src/utils/find-files-with-extension.js +39 -0
- package/dist/src/utils/find-files-with-extension.js.map +1 -0
- package/dist/src/utils/package-manager.d.ts +8 -1
- package/dist/src/utils/package-manager.js +79 -23
- package/dist/src/utils/package-manager.js.map +1 -1
- package/dist/src/utils/sentrycli-utils.js +0 -1
- package/dist/src/utils/sentrycli-utils.js.map +1 -1
- package/dist/src/utils/types.d.ts +4 -0
- package/dist/src/utils/types.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/test/android/code-tools.test.js +13 -13
- package/dist/test/android/code-tools.test.js.map +1 -1
- package/dist/test/apple/cocoapod.test.js +78 -73
- package/dist/test/apple/cocoapod.test.js.map +1 -1
- package/dist/test/apple/code-tools.test.js +174 -167
- package/dist/test/apple/code-tools.test.js.map +1 -1
- package/dist/test/apple/fastfile.test.js +87 -84
- package/dist/test/apple/fastfile.test.js.map +1 -1
- package/dist/test/apple/templates.test.js +32 -27
- package/dist/test/apple/templates.test.js.map +1 -1
- package/dist/test/apple/xcode-manager.test.js +208 -185
- package/dist/test/apple/xcode-manager.test.js.map +1 -1
- package/dist/test/flutter/code-tools.test.js +29 -30
- package/dist/test/flutter/code-tools.test.js.map +1 -1
- package/dist/test/flutter/templates.test.js +38 -37
- package/dist/test/flutter/templates.test.js.map +1 -1
- package/dist/test/nextjs/templates.test.js +155 -103
- package/dist/test/nextjs/templates.test.js.map +1 -1
- package/dist/test/nuxt/templates.test.js +25 -24
- package/dist/test/nuxt/templates.test.js.map +1 -1
- package/dist/test/react-native/expo-metro.test.js +12 -11
- package/dist/test/react-native/expo-metro.test.js.map +1 -1
- package/dist/test/react-native/expo.test.js +11 -10
- package/dist/test/react-native/expo.test.js.map +1 -1
- package/dist/test/react-native/gradle.test.js +27 -26
- package/dist/test/react-native/gradle.test.js.map +1 -1
- package/dist/test/react-native/javascript.test.js +109 -59
- package/dist/test/react-native/javascript.test.js.map +1 -1
- package/dist/test/react-native/metro.test.js +66 -65
- package/dist/test/react-native/metro.test.js.map +1 -1
- package/dist/test/react-native/xcode.test.js +138 -37
- package/dist/test/react-native/xcode.test.js.map +1 -1
- package/dist/test/remix/client-entry.test.js +8 -7
- package/dist/test/remix/client-entry.test.js.map +1 -1
- package/dist/test/remix/server-instrumentation.test.js +6 -5
- package/dist/test/remix/server-instrumentation.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/sentry-cli.test.js +21 -21
- package/dist/test/sourcemaps/tools/sentry-cli.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/tsc.test.js +13 -14
- package/dist/test/sourcemaps/tools/tsc.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/vite.test.js +13 -14
- package/dist/test/sourcemaps/tools/vite.test.js.map +1 -1
- package/dist/test/sourcemaps/tools/webpack.test.js +19 -20
- package/dist/test/sourcemaps/tools/webpack.test.js.map +1 -1
- package/dist/test/sveltekit/templates.test.js +13 -12
- package/dist/test/sveltekit/templates.test.js.map +1 -1
- package/dist/test/utils/ast-utils.test.js +45 -44
- package/dist/test/utils/ast-utils.test.js.map +1 -1
- package/dist/test/utils/clack/index.test.d.ts +1 -0
- package/dist/test/utils/clack/index.test.js +375 -0
- package/dist/test/utils/clack/index.test.js.map +1 -0
- package/dist/test/utils/package-manager.test.d.ts +1 -0
- package/dist/test/utils/package-manager.test.js +30 -0
- package/dist/test/utils/package-manager.test.js.map +1 -0
- package/package.json +10 -38
- package/dist/e2e-tests/jest.config.d.ts +0 -17
- package/dist/e2e-tests/jest.config.js +0 -23
- package/dist/e2e-tests/jest.config.js.map +0 -1
- package/dist/src/utils/clack-utils.js.map +0 -1
- package/dist/test/utils/clack-utils.test.js +0 -306
- package/dist/test/utils/clack-utils.test.js.map +0 -1
- /package/dist/{test/utils/clack-utils.test.d.ts → e2e-tests/tests/help-message.test.d.ts} +0 -0
|
@@ -23,12 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports._detectPackageManger = exports.packageManagers = exports.NPM = exports.PNPM = exports.YARN_V2 = exports.YARN_V1 = exports.DENO = exports.BUN = void 0;
|
|
27
27
|
const fs = __importStar(require("node:fs"));
|
|
28
28
|
const path = __importStar(require("node:path"));
|
|
29
29
|
const Sentry = __importStar(require("@sentry/node"));
|
|
30
30
|
const telemetry_1 = require("../telemetry");
|
|
31
|
-
const
|
|
31
|
+
const clack_1 = require("./clack");
|
|
32
32
|
exports.BUN = {
|
|
33
33
|
name: 'bun',
|
|
34
34
|
label: 'Bun',
|
|
@@ -37,11 +37,47 @@ exports.BUN = {
|
|
|
37
37
|
runScriptCommand: 'bun run',
|
|
38
38
|
flags: '',
|
|
39
39
|
forceInstallFlag: '--force',
|
|
40
|
-
detect: () => ['bun.lockb', 'bun.lock'].some((lockFile) =>
|
|
40
|
+
detect: () => ['bun.lockb', 'bun.lock'].some((lockFile) => {
|
|
41
|
+
try {
|
|
42
|
+
return fs.existsSync(path.join(process.cwd(), lockFile));
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}),
|
|
41
48
|
addOverride: async (pkgName, pkgVersion) => {
|
|
42
|
-
const packageDotJson = await (0,
|
|
49
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
43
50
|
const overrides = packageDotJson.overrides || {};
|
|
44
|
-
await (0,
|
|
51
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
52
|
+
...packageDotJson,
|
|
53
|
+
overrides: {
|
|
54
|
+
...overrides,
|
|
55
|
+
[pkgName]: pkgVersion,
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
exports.DENO = {
|
|
61
|
+
name: 'deno',
|
|
62
|
+
label: 'Deno',
|
|
63
|
+
installCommand: 'install',
|
|
64
|
+
buildCommand: 'deno task build',
|
|
65
|
+
runScriptCommand: 'deno task',
|
|
66
|
+
flags: '',
|
|
67
|
+
forceInstallFlag: '--force',
|
|
68
|
+
registry: 'npm',
|
|
69
|
+
detect: () => {
|
|
70
|
+
try {
|
|
71
|
+
return fs.existsSync(path.join(process.cwd(), 'deno.lock'));
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
addOverride: async (pkgName, pkgVersion) => {
|
|
78
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
79
|
+
const overrides = packageDotJson.overrides || {};
|
|
80
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
45
81
|
...packageDotJson,
|
|
46
82
|
overrides: {
|
|
47
83
|
...overrides,
|
|
@@ -70,9 +106,9 @@ exports.YARN_V1 = {
|
|
|
70
106
|
}
|
|
71
107
|
},
|
|
72
108
|
addOverride: async (pkgName, pkgVersion) => {
|
|
73
|
-
const packageDotJson = await (0,
|
|
109
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
74
110
|
const resolutions = packageDotJson.resolutions || {};
|
|
75
|
-
await (0,
|
|
111
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
76
112
|
...packageDotJson,
|
|
77
113
|
resolutions: {
|
|
78
114
|
...resolutions,
|
|
@@ -102,9 +138,9 @@ exports.YARN_V2 = {
|
|
|
102
138
|
}
|
|
103
139
|
},
|
|
104
140
|
addOverride: async (pkgName, pkgVersion) => {
|
|
105
|
-
const packageDotJson = await (0,
|
|
141
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
106
142
|
const resolutions = packageDotJson.resolutions || {};
|
|
107
|
-
await (0,
|
|
143
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
108
144
|
...packageDotJson,
|
|
109
145
|
resolutions: {
|
|
110
146
|
...resolutions,
|
|
@@ -121,12 +157,19 @@ exports.PNPM = {
|
|
|
121
157
|
runScriptCommand: 'pnpm',
|
|
122
158
|
flags: '--ignore-workspace-root-check',
|
|
123
159
|
forceInstallFlag: '--force',
|
|
124
|
-
detect: () =>
|
|
160
|
+
detect: () => {
|
|
161
|
+
try {
|
|
162
|
+
return fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'));
|
|
163
|
+
}
|
|
164
|
+
catch (e) {
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
125
168
|
addOverride: async (pkgName, pkgVersion) => {
|
|
126
|
-
const packageDotJson = await (0,
|
|
169
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
127
170
|
const pnpm = packageDotJson.pnpm || {};
|
|
128
171
|
const overrides = pnpm.overrides || {};
|
|
129
|
-
await (0,
|
|
172
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
130
173
|
...packageDotJson,
|
|
131
174
|
pnpm: {
|
|
132
175
|
...pnpm,
|
|
@@ -146,11 +189,18 @@ exports.NPM = {
|
|
|
146
189
|
runScriptCommand: 'npm run',
|
|
147
190
|
flags: '',
|
|
148
191
|
forceInstallFlag: '--force',
|
|
149
|
-
detect: () =>
|
|
192
|
+
detect: () => {
|
|
193
|
+
try {
|
|
194
|
+
return fs.existsSync(path.join(process.cwd(), 'package-lock.json'));
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
},
|
|
150
200
|
addOverride: async (pkgName, pkgVersion) => {
|
|
151
|
-
const packageDotJson = await (0,
|
|
201
|
+
const packageDotJson = await (0, clack_1.getPackageDotJson)();
|
|
152
202
|
const overrides = packageDotJson.overrides || {};
|
|
153
|
-
await (0,
|
|
203
|
+
await (0, clack_1.updatePackageDotJson)({
|
|
154
204
|
...packageDotJson,
|
|
155
205
|
overrides: {
|
|
156
206
|
...overrides,
|
|
@@ -159,18 +209,24 @@ exports.NPM = {
|
|
|
159
209
|
});
|
|
160
210
|
},
|
|
161
211
|
};
|
|
162
|
-
exports.packageManagers = [exports.
|
|
163
|
-
|
|
212
|
+
exports.packageManagers = [exports.NPM, exports.YARN_V1, exports.YARN_V2, exports.PNPM, exports.BUN, exports.DENO];
|
|
213
|
+
/**
|
|
214
|
+
* Exported only for testing.
|
|
215
|
+
* DO NOT call this function directly!
|
|
216
|
+
* Use `getPackageManger` instead.
|
|
217
|
+
*/
|
|
218
|
+
function _detectPackageManger(managers) {
|
|
164
219
|
return (0, telemetry_1.traceStep)('detect-package-manager', () => {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
220
|
+
const foundPackageMangers = (managers ?? exports.packageManagers).filter((packageManager) => packageManager.detect());
|
|
221
|
+
// Only consider a package manager detected if we found exactly one.
|
|
222
|
+
// If we find more than one, we should not make any assumptions.
|
|
223
|
+
if (foundPackageMangers.length === 1) {
|
|
224
|
+
Sentry.setTag('package-manager', foundPackageMangers[0].name);
|
|
225
|
+
return foundPackageMangers[0];
|
|
170
226
|
}
|
|
171
227
|
Sentry.setTag('package-manager', 'not-detected');
|
|
172
228
|
return null;
|
|
173
229
|
});
|
|
174
230
|
}
|
|
175
|
-
exports.
|
|
231
|
+
exports._detectPackageManger = _detectPackageManger;
|
|
176
232
|
//# sourceMappingURL=package-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/utils/package-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAElC,qDAAuC;AACvC,4CAAyC;AACzC,+CAAwE;AAe3D,QAAA,GAAG,GAAmB;IACjC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,eAAe;IAC7B,gBAAgB,EAAE,SAAS;IAC3B,KAAK,EAAE,EAAE;IACT,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,GAAG,EAAE,CACX,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC1C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC,CAClD;IACH,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAiB,EAAE;QACxD,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAiB,GAAE,CAAC;QACjD,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,IAAI,EAAE,CAAC;QAEjD,MAAM,IAAA,kCAAoB,EAAC;YACzB,GAAG,cAAc;YACjB,SAAS,EAAE;gBACT,GAAG,SAAS;gBACZ,CAAC,OAAO,CAAC,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AACW,QAAA,OAAO,GAAmB;IACrC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,SAAS;IAChB,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;IAC1B,gBAAgB,EAAE,MAAM;IACxB,KAAK,EAAE,+BAA+B;IACtC,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,GAAG,EAAE;QACX,IAAI;YACF,OAAO,EAAE;iBACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC;iBAC5D,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACb,QAAQ,CAAC,kBAAkB,CAAC,CAAC;SACjC;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAiB,EAAE;QACxD,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAiB,GAAE,CAAC;QACjD,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,IAAI,EAAE,CAAC;QAErD,MAAM,IAAA,kCAAoB,EAAC;YACzB,GAAG,cAAc;YACjB,WAAW,EAAE;gBACX,GAAG,WAAW;gBACd,CAAC,OAAO,CAAC,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AACF,kBAAkB;AACL,QAAA,OAAO,GAAmB;IACrC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,aAAa;IACpB,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;IAC1B,gBAAgB,EAAE,MAAM;IACxB,KAAK,EAAE,EAAE;IACT,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,GAAG,EAAE;QACX,IAAI;YACF,OAAO,EAAE;iBACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC;iBAC5D,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iBACb,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC3B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IACD,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAiB,EAAE;QACxD,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAiB,GAAE,CAAC;QACjD,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,IAAI,EAAE,CAAC;QAErD,MAAM,IAAA,kCAAoB,EAAC;YACzB,GAAG,cAAc;YACjB,WAAW,EAAE;gBACX,GAAG,WAAW;gBACd,CAAC,OAAO,CAAC,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AACW,QAAA,IAAI,GAAmB;IAClC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,cAAc,EAAE,KAAK;IACrB,YAAY,EAAE,YAAY;IAC1B,gBAAgB,EAAE,MAAM;IACxB,KAAK,EAAE,+BAA+B;IACtC,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAiB,EAAE;QACxD,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAiB,GAAE,CAAC;QACjD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QAEvC,MAAM,IAAA,kCAAoB,EAAC;YACzB,GAAG,cAAc;YACjB,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,SAAS,EAAE;oBACT,GAAG,SAAS;oBACZ,CAAC,OAAO,CAAC,EAAE,UAAU;iBACtB;aACF;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AACW,QAAA,GAAG,GAAmB;IACjC,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,KAAK;IACZ,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,eAAe;IAC7B,gBAAgB,EAAE,SAAS;IAC3B,KAAK,EAAE,EAAE;IACT,gBAAgB,EAAE,SAAS;IAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC1E,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAiB,EAAE;QACxD,MAAM,cAAc,GAAG,MAAM,IAAA,+BAAiB,GAAE,CAAC;QACjD,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,IAAI,EAAE,CAAC;QAEjD,MAAM,IAAA,kCAAoB,EAAC;YACzB,GAAG,cAAc;YACjB,SAAS,EAAE;gBACT,GAAG,SAAS;gBACZ,CAAC,OAAO,CAAC,EAAE,UAAU;aACtB;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEW,QAAA,eAAe,GAAG,CAAC,WAAG,EAAE,eAAO,EAAE,eAAO,EAAE,YAAI,EAAE,WAAG,CAAC,CAAC;AAElE,SAAgB,mBAAmB;IACjC,OAAO,IAAA,qBAAS,EAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9C,KAAK,MAAM,cAAc,IAAI,uBAAe,EAAE;YAC5C,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE;gBAC3B,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;gBACtD,OAAO,cAAc,CAAC;aACvB;SACF;QACD,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAXD,kDAWC","sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport * as Sentry from '@sentry/node';\nimport { traceStep } from '../telemetry';\nimport { getPackageDotJson, updatePackageDotJson } from './clack-utils';\n\nexport interface PackageManager {\n name: string;\n label: string;\n installCommand: string;\n buildCommand: string;\n /* The command that the package manager uses to run a script from package.json */\n runScriptCommand: string;\n flags: string;\n forceInstallFlag: string;\n detect: () => boolean;\n addOverride: (pkgName: string, pkgVersion: string) => Promise<void>;\n}\n\nexport const BUN: PackageManager = {\n name: 'bun',\n label: 'Bun',\n installCommand: 'add',\n buildCommand: 'bun run build',\n runScriptCommand: 'bun run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () =>\n ['bun.lockb', 'bun.lock'].some((lockFile) =>\n fs.existsSync(path.join(process.cwd(), lockFile)),\n ),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const YARN_V1: PackageManager = {\n name: 'yarn',\n label: 'Yarn V1',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('yarn lockfile v1');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n/** YARN V2/3/4 */\nexport const YARN_V2: PackageManager = {\n name: 'yarn',\n label: 'Yarn V2/3/4',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('__metadata');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const PNPM: PackageManager = {\n name: 'pnpm',\n label: 'PNPM',\n installCommand: 'add',\n buildCommand: 'pnpm build',\n runScriptCommand: 'pnpm',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml')),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const pnpm = packageDotJson.pnpm || {};\n const overrides = pnpm.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n pnpm: {\n ...pnpm,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n });\n },\n};\nexport const NPM: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => fs.existsSync(path.join(process.cwd(), 'package-lock.json')),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n\nexport const packageManagers = [BUN, YARN_V1, YARN_V2, PNPM, NPM];\n\nexport function detectPackageManger(): PackageManager | null {\n return traceStep('detect-package-manager', () => {\n for (const packageManager of packageManagers) {\n if (packageManager.detect()) {\n Sentry.setTag('package-manager', packageManager.name);\n return packageManager;\n }\n }\n Sentry.setTag('package-manager', 'not-detected');\n return null;\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/utils/package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'node:fs';\nimport * as path from 'node:path';\n\nimport * as Sentry from '@sentry/node';\nimport { traceStep } from '../telemetry';\nimport { getPackageDotJson, updatePackageDotJson } from './clack';\n\nexport interface PackageManager {\n name: string;\n label: string;\n installCommand: string;\n buildCommand: string;\n /* The command that the package manager uses to run a script from package.json */\n runScriptCommand: string;\n flags: string;\n forceInstallFlag: string;\n registry?: string;\n detect: () => boolean;\n addOverride: (pkgName: string, pkgVersion: string) => Promise<void>;\n}\n\nexport const BUN: PackageManager = {\n name: 'bun',\n label: 'Bun',\n installCommand: 'add',\n buildCommand: 'bun run build',\n runScriptCommand: 'bun run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () =>\n ['bun.lockb', 'bun.lock'].some((lockFile) => {\n try {\n return fs.existsSync(path.join(process.cwd(), lockFile));\n } catch (e) {\n return false;\n }\n }),\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const DENO: PackageManager = {\n name: 'deno',\n label: 'Deno',\n installCommand: 'install',\n buildCommand: 'deno task build',\n runScriptCommand: 'deno task',\n flags: '',\n forceInstallFlag: '--force',\n registry: 'npm',\n detect: () => {\n try {\n return fs.existsSync(path.join(process.cwd(), 'deno.lock'));\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const YARN_V1: PackageManager = {\n name: 'yarn',\n label: 'Yarn V1',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('yarn lockfile v1');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n/** YARN V2/3/4 */\nexport const YARN_V2: PackageManager = {\n name: 'yarn',\n label: 'Yarn V2/3/4',\n installCommand: 'add',\n buildCommand: 'yarn build',\n runScriptCommand: 'yarn',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs\n .readFileSync(path.join(process.cwd(), 'yarn.lock'), 'utf-8')\n .slice(0, 500)\n .includes('__metadata');\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const resolutions = packageDotJson.resolutions || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n resolutions: {\n ...resolutions,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\nexport const PNPM: PackageManager = {\n name: 'pnpm',\n label: 'PNPM',\n installCommand: 'add',\n buildCommand: 'pnpm build',\n runScriptCommand: 'pnpm',\n flags: '--ignore-workspace-root-check',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'));\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const pnpm = packageDotJson.pnpm || {};\n const overrides = pnpm.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n pnpm: {\n ...pnpm,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n },\n });\n },\n};\nexport const NPM: PackageManager = {\n name: 'npm',\n label: 'NPM',\n installCommand: 'install',\n buildCommand: 'npm run build',\n runScriptCommand: 'npm run',\n flags: '',\n forceInstallFlag: '--force',\n detect: () => {\n try {\n return fs.existsSync(path.join(process.cwd(), 'package-lock.json'));\n } catch (e) {\n return false;\n }\n },\n addOverride: async (pkgName, pkgVersion): Promise<void> => {\n const packageDotJson = await getPackageDotJson();\n const overrides = packageDotJson.overrides || {};\n\n await updatePackageDotJson({\n ...packageDotJson,\n overrides: {\n ...overrides,\n [pkgName]: pkgVersion,\n },\n });\n },\n};\n\nexport const packageManagers = [NPM, YARN_V1, YARN_V2, PNPM, BUN, DENO];\n\n/**\n * Exported only for testing.\n * DO NOT call this function directly!\n * Use `getPackageManger` instead.\n */\nexport function _detectPackageManger(\n managers?: PackageManager[],\n): PackageManager | null {\n return traceStep('detect-package-manager', () => {\n const foundPackageMangers = (managers ?? packageManagers).filter(\n (packageManager) => packageManager.detect(),\n );\n\n // Only consider a package manager detected if we found exactly one.\n // If we find more than one, we should not make any assumptions.\n if (foundPackageMangers.length === 1) {\n Sentry.setTag('package-manager', foundPackageMangers[0].name);\n return foundPackageMangers[0];\n }\n\n Sentry.setTag('package-manager', 'not-detected');\n return null;\n });\n}\n"]}
|
|
@@ -24,7 +24,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.createSentryCLIRC = void 0;
|
|
27
|
-
// @ts-ignore - clack is ESM and TS complains about that. It works though
|
|
28
27
|
const fs = __importStar(require("fs"));
|
|
29
28
|
const path = __importStar(require("path"));
|
|
30
29
|
function createSentryCLIRC(directory, params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentrycli-utils.js","sourceRoot":"","sources":["../../../src/utils/sentrycli-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"sentrycli-utils.js","sourceRoot":"","sources":["../../../src/utils/sentrycli-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAM7B,SAAgB,iBAAiB,CAC/B,SAAiB,EACjB,MAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACpD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAE/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;KAChD;SAAM;QACL,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACvC,EAAE,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;SACnD;KACF;AACH,CAAC;AAfD,8CAeC","sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\n\nexport interface SentryCLIConfiguration {\n auth_token: string;\n}\n\nexport function createSentryCLIRC(\n directory: string,\n params: SentryCLIConfiguration,\n) {\n const rcPath = path.join(directory, '.sentryclirc');\n fs.writeFileSync(rcPath, '[auth]\\ntoken=' + params.auth_token);\n\n if (!fs.existsSync('.gitignore')) {\n fs.writeFileSync('.gitignore', '.sentryclirc');\n } else {\n const gitIgnore = fs.readFileSync('.gitignore').toString();\n if (!gitIgnore.includes('.sentryclirc')) {\n fs.appendFileSync('.gitignore', '\\n.sentryclirc');\n }\n }\n}\n"]}
|
|
@@ -68,6 +68,10 @@ export type WizardOptions = {
|
|
|
68
68
|
* through the partner.
|
|
69
69
|
*/
|
|
70
70
|
comingFrom?: string;
|
|
71
|
+
/**
|
|
72
|
+
* If this is set, the wizard will ignore any git changes in the project and not prompt for confirmation.
|
|
73
|
+
*/
|
|
74
|
+
ignoreGitChanges?: boolean;
|
|
71
75
|
};
|
|
72
76
|
export interface Feature {
|
|
73
77
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface SentryProjectData {\n id: string;\n slug: string;\n organization: {\n id: string;\n name: string;\n slug: string;\n };\n keys: [{ dsn: { public: string } }];\n}\n\nexport type PreselectedProject = {\n project: SentryProjectData;\n authToken: string;\n selfHosted: boolean;\n};\n\nexport type WizardOptions = {\n /**\n * Controls whether the wizard should send telemetry data to Sentry.\n */\n telemetryEnabled: boolean;\n\n /**\n * The promo code to use while signing up for Sentry.\n * This can be passed via the --promo-code arg.\n */\n promoCode?: string;\n\n /**\n * The url of the Sentry instance to use.\n * This can be passed via the `-u` or `--url` arg.\n */\n url?: string;\n\n /**\n * The org to pre-select in the wizard.\n * This can be passed via the `--org` arg.\n * Example: `--org my-org`\n */\n orgSlug?: string;\n\n /**\n * Project slug to pre-select in the wizard.\n * This can be passed via the `--project` arg.\n * Example: `--project my-project`\n */\n projectSlug?: string;\n\n /**\n * If this option is set, the wizard will skip the self-hosted or SaaS\n * selection step and directly assume that the wizard is used for Sentry SaaS.\n */\n saas?: boolean;\n\n /**\n * If this is set, the wizard will skip the login and project selection step.\n */\n preSelectedProject?: PreselectedProject;\n\n /**\n * Force-install the SDK package to continue with the installation in case\n * any package manager checks are failing (e.g. peer dependency versions).\n *\n * Use with caution and only if you know what you're doing.\n *\n * Does not apply to all wizard flows (currently NPM only)\n */\n forceInstall?: boolean;\n\n /**\n * Used when the wizard command is copied from partner sites (e.g. Vercel)\n * to display login/signup instructions specific to organizations provisioned\n * through the partner.\n */\n comingFrom?: string;\n};\n\nexport interface Feature {\n id: string;\n prompt: string;\n enabledHint?: string;\n disabledHint?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"","sourcesContent":["export interface SentryProjectData {\n id: string;\n slug: string;\n organization: {\n id: string;\n name: string;\n slug: string;\n };\n keys: [{ dsn: { public: string } }];\n}\n\nexport type PreselectedProject = {\n project: SentryProjectData;\n authToken: string;\n selfHosted: boolean;\n};\n\nexport type WizardOptions = {\n /**\n * Controls whether the wizard should send telemetry data to Sentry.\n */\n telemetryEnabled: boolean;\n\n /**\n * The promo code to use while signing up for Sentry.\n * This can be passed via the --promo-code arg.\n */\n promoCode?: string;\n\n /**\n * The url of the Sentry instance to use.\n * This can be passed via the `-u` or `--url` arg.\n */\n url?: string;\n\n /**\n * The org to pre-select in the wizard.\n * This can be passed via the `--org` arg.\n * Example: `--org my-org`\n */\n orgSlug?: string;\n\n /**\n * Project slug to pre-select in the wizard.\n * This can be passed via the `--project` arg.\n * Example: `--project my-project`\n */\n projectSlug?: string;\n\n /**\n * If this option is set, the wizard will skip the self-hosted or SaaS\n * selection step and directly assume that the wizard is used for Sentry SaaS.\n */\n saas?: boolean;\n\n /**\n * If this is set, the wizard will skip the login and project selection step.\n */\n preSelectedProject?: PreselectedProject;\n\n /**\n * Force-install the SDK package to continue with the installation in case\n * any package manager checks are failing (e.g. peer dependency versions).\n *\n * Use with caution and only if you know what you're doing.\n *\n * Does not apply to all wizard flows (currently NPM only)\n */\n forceInstall?: boolean;\n\n /**\n * Used when the wizard command is copied from partner sites (e.g. Vercel)\n * to display login/signup instructions specific to organizations provisioned\n * through the partner.\n */\n comingFrom?: string;\n\n /**\n * If this is set, the wizard will ignore any git changes in the project and not prompt for confirmation.\n */\n ignoreGitChanges?: boolean;\n};\n\nexport interface Feature {\n id: string;\n prompt: string;\n enabledHint?: string;\n disabledHint?: string;\n}\n"]}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WIZARD_VERSION = "4.
|
|
1
|
+
export declare const WIZARD_VERSION = "4.7.0";
|
package/dist/src/version.js
CHANGED
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,2CAA2C;;;AAE9B,QAAA,cAAc,GAAG,OAAO,CAAC","sourcesContent":["// DO NOT modify this file manually!\n// This is file is updated at release time.\n\nexport const WIZARD_VERSION = '4.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,2CAA2C;;;AAE9B,QAAA,cAAc,GAAG,OAAO,CAAC","sourcesContent":["// DO NOT modify this file manually!\n// This is file is updated at release time.\n\nexport const WIZARD_VERSION = '4.7.0';\n"]}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
4
|
const code_tools_1 = require("../../src/android/code-tools");
|
|
5
|
-
describe('code-tools', () => {
|
|
6
|
-
describe('getLastImportLineLocation', () => {
|
|
7
|
-
it('returns proper line index', () => {
|
|
5
|
+
(0, vitest_1.describe)('code-tools', () => {
|
|
6
|
+
(0, vitest_1.describe)('getLastImportLineLocation', () => {
|
|
7
|
+
(0, vitest_1.it)('returns proper line index', () => {
|
|
8
8
|
const code = `import a.b.c;\n` + `//<insert-location>\n` + `class X {}`;
|
|
9
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
9
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
10
10
|
});
|
|
11
|
-
it('returns proper line index when static import is used', () => {
|
|
11
|
+
(0, vitest_1.it)('returns proper line index when static import is used', () => {
|
|
12
12
|
const code = `import static a.b.c;\n` + `//<insert-location>\n` + `class X {}`;
|
|
13
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
13
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
14
14
|
});
|
|
15
|
-
it('returns proper line index when wildcard import is used', () => {
|
|
15
|
+
(0, vitest_1.it)('returns proper line index when wildcard import is used', () => {
|
|
16
16
|
const code = `import a.b.*\n` + `//<insert-location>\n` + `class X {}`;
|
|
17
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
17
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
18
18
|
});
|
|
19
|
-
it('returns proper line index when alias import is used', () => {
|
|
19
|
+
(0, vitest_1.it)('returns proper line index when alias import is used', () => {
|
|
20
20
|
const code = `import static a.b.c as d\n` + `//<insert-location>\n` + `class X {}`;
|
|
21
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
21
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
22
22
|
});
|
|
23
|
-
it('returns proper line index when multiple imports are present', () => {
|
|
23
|
+
(0, vitest_1.it)('returns proper line index when multiple imports are present', () => {
|
|
24
24
|
const code = `import static a.b.c as d\n` +
|
|
25
25
|
`import a.b.*\n` +
|
|
26
26
|
`import static a.b.c;\n` +
|
|
27
27
|
`import a.b.c;\n` +
|
|
28
28
|
`//<insert-location>\n` +
|
|
29
29
|
`class X {}`;
|
|
30
|
-
expect((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
30
|
+
(0, vitest_1.expect)((0, code_tools_1.getLastImportLineLocation)(code)).toBe(code.indexOf('//<insert-location>'));
|
|
31
31
|
});
|
|
32
32
|
});
|
|
33
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-tools.test.js","sourceRoot":"","sources":["../../../test/android/code-tools.test.ts"],"names":[],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"file":"code-tools.test.js","sourceRoot":"","sources":["../../../test/android/code-tools.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,6DAAyE;AAEzE,IAAA,iBAAQ,EAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAA,WAAE,EAAC,2BAA2B,EAAE,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,iBAAiB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,IAAI,GACR,wBAAwB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACpE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,IAAI,GAAG,gBAAgB,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACvE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,IAAI,GACR,4BAA4B,GAAG,uBAAuB,GAAG,YAAY,CAAC;YACxE,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,WAAE,EAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,IAAI,GACR,4BAA4B;gBAC5B,gBAAgB;gBAChB,wBAAwB;gBACxB,iBAAiB;gBACjB,uBAAuB;gBACvB,YAAY,CAAC;YACf,IAAA,eAAM,EAAC,IAAA,sCAAyB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CACpC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from 'vitest';\nimport { getLastImportLineLocation } from '../../src/android/code-tools';\n\ndescribe('code-tools', () => {\n describe('getLastImportLineLocation', () => {\n it('returns proper line index', () => {\n const code = `import a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when static import is used', () => {\n const code =\n `import static a.b.c;\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when wildcard import is used', () => {\n const code = `import a.b.*\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when alias import is used', () => {\n const code =\n `import static a.b.c as d\\n` + `//<insert-location>\\n` + `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n\n it('returns proper line index when multiple imports are present', () => {\n const code =\n `import static a.b.c as d\\n` +\n `import a.b.*\\n` +\n `import static a.b.c;\\n` +\n `import a.b.c;\\n` +\n `//<insert-location>\\n` +\n `class X {}`;\n expect(getLastImportLineLocation(code)).toBe(\n code.indexOf('//<insert-location>'),\n );\n });\n });\n});\n"]}
|
|
@@ -29,31 +29,36 @@ const os = __importStar(require("os"));
|
|
|
29
29
|
const path = __importStar(require("path"));
|
|
30
30
|
const cocoapod_1 = require("../../src/apple/cocoapod");
|
|
31
31
|
const bash = __importStar(require("../../src/utils/bash"));
|
|
32
|
-
// @ts-
|
|
32
|
+
// @ts-expect-error - clack is ESM and TS complains about that. It works though
|
|
33
33
|
const clack = __importStar(require("@clack/prompts"));
|
|
34
|
-
|
|
34
|
+
const vitest_1 = require("vitest");
|
|
35
|
+
vitest_1.vi.mock('@clack/prompts', async () => ({
|
|
35
36
|
__esModule: true,
|
|
36
|
-
...
|
|
37
|
+
...(await vitest_1.vi.importActual('@clack/prompts')),
|
|
37
38
|
}));
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
vitest_1.vi.mock('../../src/utils/bash');
|
|
40
|
+
vitest_1.vi.spyOn(Sentry, 'setTag').mockImplementation(() => {
|
|
41
|
+
/* empty */
|
|
42
|
+
});
|
|
43
|
+
vitest_1.vi.spyOn(Sentry, 'captureException').mockImplementation(() => 'id');
|
|
41
44
|
const clackSpinnerMock = {
|
|
42
|
-
start:
|
|
43
|
-
stop:
|
|
44
|
-
message:
|
|
45
|
+
start: vitest_1.vi.fn(),
|
|
46
|
+
stop: vitest_1.vi.fn(),
|
|
47
|
+
message: vitest_1.vi.fn(),
|
|
45
48
|
};
|
|
46
|
-
describe('cocoapod', () => {
|
|
47
|
-
beforeEach(() => {
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
(0, vitest_1.describe)('cocoapod', () => {
|
|
50
|
+
(0, vitest_1.beforeEach)(() => {
|
|
51
|
+
vitest_1.vi.spyOn(clack, 'spinner').mockReturnValue(clackSpinnerMock);
|
|
52
|
+
vitest_1.vi.spyOn(clack.log, 'error').mockImplementation(() => {
|
|
53
|
+
/* empty */
|
|
54
|
+
});
|
|
50
55
|
});
|
|
51
|
-
afterEach(() => {
|
|
52
|
-
|
|
56
|
+
(0, vitest_1.afterEach)(() => {
|
|
57
|
+
vitest_1.vi.clearAllMocks();
|
|
53
58
|
});
|
|
54
|
-
describe('usesCocoaPod', () => {
|
|
55
|
-
describe('Podfile exists', () => {
|
|
56
|
-
it('should return true', () => {
|
|
59
|
+
(0, vitest_1.describe)('usesCocoaPod', () => {
|
|
60
|
+
(0, vitest_1.describe)('Podfile exists', () => {
|
|
61
|
+
(0, vitest_1.it)('should return true', () => {
|
|
57
62
|
// -- Arrange --
|
|
58
63
|
const projPath = path.join(os.tmpdir(), 'test-project-with-podfile');
|
|
59
64
|
const tempDir = fs.mkdtempSync(projPath);
|
|
@@ -62,33 +67,33 @@ describe('cocoapod', () => {
|
|
|
62
67
|
// -- Act --
|
|
63
68
|
const result = (0, cocoapod_1.usesCocoaPod)(tempDir);
|
|
64
69
|
// -- Assert --
|
|
65
|
-
expect(result).toBeTruthy();
|
|
70
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
66
71
|
});
|
|
67
72
|
});
|
|
68
|
-
describe('Podfile does not exist', () => {
|
|
69
|
-
it('should return false', () => {
|
|
73
|
+
(0, vitest_1.describe)('Podfile does not exist', () => {
|
|
74
|
+
(0, vitest_1.it)('should return false', () => {
|
|
70
75
|
// -- Arrange --
|
|
71
76
|
const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');
|
|
72
77
|
const tempDir = fs.mkdtempSync(projPath);
|
|
73
78
|
// -- Act --
|
|
74
79
|
const result = (0, cocoapod_1.usesCocoaPod)(tempDir);
|
|
75
80
|
// -- Assert --
|
|
76
|
-
expect(result).toBeFalsy();
|
|
81
|
+
(0, vitest_1.expect)(result).toBeFalsy();
|
|
77
82
|
});
|
|
78
83
|
});
|
|
79
84
|
});
|
|
80
|
-
describe('addCocoaPods', () => {
|
|
81
|
-
describe('Podfile does not exist', () => {
|
|
82
|
-
it('should throw an error', async () => {
|
|
85
|
+
(0, vitest_1.describe)('addCocoaPods', () => {
|
|
86
|
+
(0, vitest_1.describe)('Podfile does not exist', () => {
|
|
87
|
+
(0, vitest_1.it)('should throw an error', async () => {
|
|
83
88
|
// -- Arrange --
|
|
84
89
|
const projPath = path.join(os.tmpdir(), 'test-project-without-podfile');
|
|
85
90
|
const tempDir = fs.mkdtempSync(projPath);
|
|
86
91
|
// -- Act & Assert --
|
|
87
|
-
await expect((0, cocoapod_1.addCocoaPods)(tempDir)).rejects.toThrow('ENOENT: no such file or directory, open');
|
|
92
|
+
await (0, vitest_1.expect)((0, cocoapod_1.addCocoaPods)(tempDir)).rejects.toThrow('ENOENT: no such file or directory, open');
|
|
88
93
|
});
|
|
89
94
|
});
|
|
90
|
-
describe('Podfile exists', () => {
|
|
91
|
-
describe('Podfile includes Sentry pod', () => {
|
|
95
|
+
(0, vitest_1.describe)('Podfile exists', () => {
|
|
96
|
+
(0, vitest_1.describe)('Podfile includes Sentry pod', () => {
|
|
92
97
|
const variations = [
|
|
93
98
|
{
|
|
94
99
|
case: 'simple',
|
|
@@ -124,7 +129,7 @@ describe('cocoapod', () => {
|
|
|
124
129
|
},
|
|
125
130
|
];
|
|
126
131
|
for (const variation of variations) {
|
|
127
|
-
it(`should not change the Podfile for ${variation.case}`, async () => {
|
|
132
|
+
(0, vitest_1.it)(`should not change the Podfile for ${variation.case}`, async () => {
|
|
128
133
|
// -- Arrange --
|
|
129
134
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
130
135
|
fs.mkdirSync(projPath, {
|
|
@@ -135,14 +140,14 @@ describe('cocoapod', () => {
|
|
|
135
140
|
// -- Act --
|
|
136
141
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
137
142
|
// -- Assert --
|
|
138
|
-
expect(result).toBeTruthy();
|
|
139
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe(variation.content);
|
|
143
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
144
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe(variation.content);
|
|
140
145
|
});
|
|
141
146
|
}
|
|
142
147
|
});
|
|
143
|
-
describe('Podfile includes no other pods', () => {
|
|
144
|
-
describe('Podfile does not include use_frameworks!', () => {
|
|
145
|
-
it('should not change the Podfile', async () => {
|
|
148
|
+
(0, vitest_1.describe)('Podfile includes no other pods', () => {
|
|
149
|
+
(0, vitest_1.describe)('Podfile does not include use_frameworks!', () => {
|
|
150
|
+
(0, vitest_1.it)('should not change the Podfile', async () => {
|
|
146
151
|
// -- Arrange --
|
|
147
152
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
148
153
|
fs.mkdirSync(projPath, {
|
|
@@ -153,12 +158,12 @@ describe('cocoapod', () => {
|
|
|
153
158
|
// -- Act --
|
|
154
159
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
155
160
|
// -- Assert --
|
|
156
|
-
expect(result).toBeFalsy();
|
|
157
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe('');
|
|
161
|
+
(0, vitest_1.expect)(result).toBeFalsy();
|
|
162
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe('');
|
|
158
163
|
});
|
|
159
164
|
});
|
|
160
|
-
describe('Podfile includes use_frameworks!', () => {
|
|
161
|
-
it('should change the Podfile', async () => {
|
|
165
|
+
(0, vitest_1.describe)('Podfile includes use_frameworks!', () => {
|
|
166
|
+
(0, vitest_1.it)('should change the Podfile', async () => {
|
|
162
167
|
// -- Arrange --
|
|
163
168
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
164
169
|
fs.mkdirSync(projPath, {
|
|
@@ -169,13 +174,13 @@ describe('cocoapod', () => {
|
|
|
169
174
|
// -- Act --
|
|
170
175
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
171
176
|
// -- Assert --
|
|
172
|
-
expect(result).toBeTruthy();
|
|
173
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe(`use_frameworks!\npod 'Sentry'\n`);
|
|
177
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
178
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe(`use_frameworks!\npod 'Sentry'\n`);
|
|
174
179
|
});
|
|
175
180
|
});
|
|
176
181
|
});
|
|
177
|
-
describe('Podfile includes other pods', () => {
|
|
178
|
-
it('should append Sentry pod after last pod', async () => {
|
|
182
|
+
(0, vitest_1.describe)('Podfile includes other pods', () => {
|
|
183
|
+
(0, vitest_1.it)('should append Sentry pod after last pod', async () => {
|
|
179
184
|
// -- Arrange --
|
|
180
185
|
const projPath = fs.mkdtempSync(path.join(os.tmpdir(), 'project'));
|
|
181
186
|
fs.mkdirSync(projPath, {
|
|
@@ -186,77 +191,77 @@ describe('cocoapod', () => {
|
|
|
186
191
|
// -- Act --
|
|
187
192
|
const result = await (0, cocoapod_1.addCocoaPods)(projPath);
|
|
188
193
|
// -- Assert --
|
|
189
|
-
expect(result).toBeTruthy();
|
|
190
|
-
expect(fs.readFileSync(podfile, 'utf8')).toBe(`pod "OtherPod"\npod 'Sentry'\n`);
|
|
194
|
+
(0, vitest_1.expect)(result).toBeTruthy();
|
|
195
|
+
(0, vitest_1.expect)(fs.readFileSync(podfile, 'utf8')).toBe(`pod "OtherPod"\npod 'Sentry'\n`);
|
|
191
196
|
});
|
|
192
197
|
});
|
|
193
198
|
});
|
|
194
199
|
});
|
|
195
|
-
describe('podInstall', () => {
|
|
200
|
+
(0, vitest_1.describe)('podInstall', () => {
|
|
196
201
|
let workDir;
|
|
197
|
-
beforeEach(() => {
|
|
202
|
+
(0, vitest_1.beforeEach)(() => {
|
|
198
203
|
workDir = path.join(os.tmpdir(), 'test-project');
|
|
199
204
|
});
|
|
200
|
-
describe('any bash scripts fail', () => {
|
|
201
|
-
beforeEach(() => {
|
|
202
|
-
|
|
205
|
+
(0, vitest_1.describe)('any bash scripts fail', () => {
|
|
206
|
+
(0, vitest_1.beforeEach)(() => {
|
|
207
|
+
vitest_1.vi.spyOn(bash, 'execute').mockRejectedValue(new Error('test error'));
|
|
203
208
|
});
|
|
204
|
-
it('should not throw an error', async () => {
|
|
209
|
+
(0, vitest_1.it)('should not throw an error', async () => {
|
|
205
210
|
// -- Act & Assert --
|
|
206
|
-
await expect((0, cocoapod_1.podInstall)(workDir)).resolves.not.toThrow();
|
|
211
|
+
await (0, vitest_1.expect)((0, cocoapod_1.podInstall)(workDir)).resolves.not.toThrow();
|
|
207
212
|
});
|
|
208
|
-
it('should set tag', async () => {
|
|
213
|
+
(0, vitest_1.it)('should set tag', async () => {
|
|
209
214
|
// -- Act --
|
|
210
215
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
211
216
|
// -- Assert --
|
|
212
|
-
expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', false);
|
|
217
|
+
(0, vitest_1.expect)(Sentry.setTag).toHaveBeenCalledWith('pods-installed', false);
|
|
213
218
|
});
|
|
214
|
-
it('should capture exception', async () => {
|
|
219
|
+
(0, vitest_1.it)('should capture exception', async () => {
|
|
215
220
|
// -- Act --
|
|
216
221
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
217
222
|
// -- Assert --
|
|
218
|
-
expect(Sentry.captureException).toHaveBeenCalledWith('Sentry pod install failed.');
|
|
223
|
+
(0, vitest_1.expect)(Sentry.captureException).toHaveBeenCalledWith('Sentry pod install failed.');
|
|
219
224
|
});
|
|
220
|
-
it('should start and stop spinner', async () => {
|
|
225
|
+
(0, vitest_1.it)('should start and stop spinner', async () => {
|
|
221
226
|
// -- Act --
|
|
222
227
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
223
228
|
// -- Assert --
|
|
224
|
-
expect(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
225
|
-
expect(clackSpinnerMock.stop).toHaveBeenCalledWith('Failed to install pods.');
|
|
229
|
+
(0, vitest_1.expect)(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
230
|
+
(0, vitest_1.expect)(clackSpinnerMock.stop).toHaveBeenCalledWith('Failed to install pods.');
|
|
226
231
|
});
|
|
227
232
|
});
|
|
228
|
-
describe('all bash scripts work', () => {
|
|
229
|
-
beforeEach(() => {
|
|
230
|
-
|
|
233
|
+
(0, vitest_1.describe)('all bash scripts work', () => {
|
|
234
|
+
(0, vitest_1.beforeEach)(() => {
|
|
235
|
+
vitest_1.vi.spyOn(bash, 'execute').mockResolvedValue('');
|
|
231
236
|
});
|
|
232
|
-
it('should call pod update and install', async () => {
|
|
237
|
+
(0, vitest_1.it)('should call pod update and install', async () => {
|
|
233
238
|
// -- Act --
|
|
234
239
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
235
240
|
// -- Assert --
|
|
236
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod repo update`);
|
|
237
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod install --silent`);
|
|
241
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod repo update`);
|
|
242
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd ${workDir} && pod install --silent`);
|
|
238
243
|
});
|
|
239
|
-
it('should set tag', async () => {
|
|
244
|
+
(0, vitest_1.it)('should set tag', async () => {
|
|
240
245
|
// -- Act --
|
|
241
246
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
242
247
|
// -- Assert --
|
|
243
|
-
expect(Sentry.setTag).toHaveBeenCalledWith('pods-installed', true);
|
|
248
|
+
(0, vitest_1.expect)(Sentry.setTag).toHaveBeenCalledWith('pods-installed', true);
|
|
244
249
|
});
|
|
245
|
-
it('should start and stop spinner', async () => {
|
|
250
|
+
(0, vitest_1.it)('should start and stop spinner', async () => {
|
|
246
251
|
// -- Act --
|
|
247
252
|
await (0, cocoapod_1.podInstall)(workDir);
|
|
248
253
|
// -- Assert --
|
|
249
|
-
expect(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
250
|
-
expect(clackSpinnerMock.stop).toHaveBeenCalledWith('Pods installed.');
|
|
254
|
+
(0, vitest_1.expect)(clackSpinnerMock.start).toHaveBeenCalledWith("Running 'pod install'. This may take a few minutes...");
|
|
255
|
+
(0, vitest_1.expect)(clackSpinnerMock.stop).toHaveBeenCalledWith('Pods installed.');
|
|
251
256
|
});
|
|
252
257
|
});
|
|
253
|
-
describe('dir not given', () => {
|
|
254
|
-
it('should use current directory', async () => {
|
|
258
|
+
(0, vitest_1.describe)('dir not given', () => {
|
|
259
|
+
(0, vitest_1.it)('should use current directory', async () => {
|
|
255
260
|
// -- Act --
|
|
256
261
|
await (0, cocoapod_1.podInstall)();
|
|
257
262
|
// -- Assert --
|
|
258
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd . && pod repo update`);
|
|
259
|
-
expect(bash.execute).toHaveBeenCalledWith(`cd . && pod install --silent`);
|
|
263
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd . && pod repo update`);
|
|
264
|
+
(0, vitest_1.expect)(bash.execute).toHaveBeenCalledWith(`cd . && pod install --silent`);
|
|
260
265
|
});
|
|
261
266
|
});
|
|
262
267
|
});
|