From f78c5debb0f52b29f9d22b2bd2f2e0d073369455 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 26 Sep 2024 17:22:00 +0200 Subject: [PATCH 1/5] feat: Add `--saas` CLI arg to skip self-hosted or SaaS selection step --- src/run.ts | 13 +++++++------ src/telemetry.ts | 1 + src/utils/clack-utils.ts | 10 ++++++---- src/utils/types.ts | 6 ++++++ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/run.ts b/src/run.ts index c6d13a868..7ed961a7e 100644 --- a/src/run.ts +++ b/src/run.ts @@ -41,6 +41,7 @@ type Args = { platform?: Platform[]; org?: string; project?: string; + saas: boolean; }; export async function run(argv: Args) { @@ -79,18 +80,18 @@ export async function run(argv: Args) { } const wizardOptions: WizardOptions = { - telemetryEnabled: !argv.disableTelemetry, - promoCode: argv.promoCode, - url: argv.url, - orgSlug: argv.org, - projectSlug: argv.project, + telemetryEnabled: !finalArgs.disableTelemetry, + promoCode: finalArgs.promoCode, + url: finalArgs.url, + orgSlug: finalArgs.org, + projectSlug: finalArgs.project, }; switch (integration) { case 'reactNative': await runReactNativeWizard({ ...wizardOptions, - uninstall: argv.uninstall, + uninstall: finalArgs.uninstall, }); break; diff --git a/src/telemetry.ts b/src/telemetry.ts index 2b0e401af..c946d28f0 100644 --- a/src/telemetry.ts +++ b/src/telemetry.ts @@ -34,6 +34,7 @@ export async function withTelemetry( // Set tag for passed CLI args sentryHub.setTag('args.project', !!options.wizardOptions.projectSlug); sentryHub.setTag('args.org', !!options.wizardOptions.orgSlug); + sentryHub.setTag('args.saas', !!options.wizardOptions.saas); try { return await startSpan( diff --git a/src/utils/clack-utils.ts b/src/utils/clack-utils.ts index cf56a9579..8bceed2ff 100644 --- a/src/utils/clack-utils.ts +++ b/src/utils/clack-utils.ts @@ -845,10 +845,12 @@ export async function getOrAskForProjectData( selectedProject: options.preSelectedProject.project, }; } - const { url: sentryUrl, selfHosted } = await traceStep( - 'ask-self-hosted', - () => askForSelfHosted(options.url), - ); + const { url: sentryUrl, selfHosted } = options.saas + ? { + url: SAAS_URL, + selfHosted: false, + } + : await traceStep('ask-self-hosted', () => askForSelfHosted(options.url)); const { projects, apiKeys } = await traceStep('login', () => askForWizardLogin({ diff --git a/src/utils/types.ts b/src/utils/types.ts index f1feeed5b..664bb9a9a 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -47,6 +47,12 @@ export type WizardOptions = { */ projectSlug?: string; + /** + * If this option is set, the wizard will skip the self-hosted or SaaS + * selection step and directly assume that the wizard is used for Sentry SaaS. + */ + saas?: boolean; + /** * If this is set, the wizard will skip the login and project selection step. * (This can not yet be set externally but for example when redirecting from From 4430e991a67b17381f3e04de556b7f9f2e2f101b Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 26 Sep 2024 17:23:10 +0200 Subject: [PATCH 2/5] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 160f66352..f44965097 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +- feat: Add `--saas` CLI arg to skip self-hosted or SaaS selection step (#678) + ## 3.31.0 - fix(sveltekit): Create bundler plugin env file instead of sentryclirc (#675) From 140ae5b295bb3a0ad276c0f7e1a9a0021792a6e3 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 26 Sep 2024 17:40:48 +0200 Subject: [PATCH 3/5] add yargs entry --- bin.ts | 5 +++++ src/run.ts | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/bin.ts b/bin.ts index 20c2d9072..d72973d41 100644 --- a/bin.ts +++ b/bin.ts @@ -60,6 +60,11 @@ const argv = yargs(hideBin(process.argv)) alias: 'url', describe: 'The url to your Sentry installation\nenv: SENTRY_WIZARD_URL', }) + .option('saas', { + default: false, + describe: 'If set, skip the self-hosted or SaaS URL selection process', + type: 'boolean', + }) .option('s', { alias: 'signup', default: false, diff --git a/src/run.ts b/src/run.ts index 7ed961a7e..dcf8eacc1 100644 --- a/src/run.ts +++ b/src/run.ts @@ -41,7 +41,7 @@ type Args = { platform?: Platform[]; org?: string; project?: string; - saas: boolean; + saas?: boolean; }; export async function run(argv: Args) { @@ -85,6 +85,7 @@ export async function run(argv: Args) { url: finalArgs.url, orgSlug: finalArgs.org, projectSlug: finalArgs.project, + saas: finalArgs.saas, }; switch (integration) { From 3f6873a3683a27e154434e0d58cf963c748e6537 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 26 Sep 2024 17:47:01 +0200 Subject: [PATCH 4/5] slight refactor to better handle sentry tags --- src/utils/clack-utils.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/utils/clack-utils.ts b/src/utils/clack-utils.ts index 8bceed2ff..fd1e099e5 100644 --- a/src/utils/clack-utils.ts +++ b/src/utils/clack-utils.ts @@ -845,12 +845,10 @@ export async function getOrAskForProjectData( selectedProject: options.preSelectedProject.project, }; } - const { url: sentryUrl, selfHosted } = options.saas - ? { - url: SAAS_URL, - selfHosted: false, - } - : await traceStep('ask-self-hosted', () => askForSelfHosted(options.url)); + const { url: sentryUrl, selfHosted } = await traceStep( + 'ask-self-hosted', + () => askForSelfHosted(options.url, options.saas), + ); const { projects, apiKeys } = await traceStep('login', () => askForWizardLogin({ @@ -910,10 +908,19 @@ ${chalk.cyan( * * @param urlFromArgs the url passed via the --url arg */ -async function askForSelfHosted(urlFromArgs?: string): Promise<{ +async function askForSelfHosted( + urlFromArgs?: string, + saas?: boolean, +): Promise<{ url: string; selfHosted: boolean; }> { + if (saas) { + Sentry.setTag('url', SAAS_URL); + Sentry.setTag('self-hosted', false); + return { url: SAAS_URL, selfHosted: false }; + } + if (!urlFromArgs) { const choice: 'saas' | 'self-hosted' | symbol = await abortIfCancelled( clack.select({ From c82d2aa5e227eb3009fc4b836aac1d60b9989bb2 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Thu, 26 Sep 2024 18:03:35 +0200 Subject: [PATCH 5/5] unreleased --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f44965097..3a3cf70ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ # Changelog +## Unreleased + - feat: Add `--saas` CLI arg to skip self-hosted or SaaS selection step (#678) ## 3.31.0