import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step'; import type { Docs, DocsParams, OnboardingConfig, } from 'sentry/components/onboarding/gettingStartedDoc/types'; import { getCrashReportBackendInstallStep, getCrashReportModalConfigDescription, getCrashReportModalIntroduction, } from 'sentry/components/onboarding/gettingStartedDoc/utils/feedbackOnboarding'; import {t, tct} from 'sentry/locale'; import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion'; type Params = DocsParams; const getInstallSnippet = (params: Params) => ` [dependencies] sentry = "${getPackageVersion(params, 'sentry.rust', '0.32.1')}"`; const getConfigureSnippet = (params: Params) => ` let _guard = sentry::init(("${params.dsn.public}", sentry::ClientOptions { release: sentry::release_name!(), ..Default::default() }));`; const getVerifySnippet = (params: Params) => ` fn main() { let _guard = sentry::init(("${params.dsn.public}", sentry::ClientOptions { release: sentry::release_name!(), ..Default::default() })); // Sentry will capture this panic!("Everything is on fire!"); }`; const onboarding: OnboardingConfig = { install: params => [ { type: StepType.INSTALL, description: tct( 'To add Sentry to your Rust project you just need to add a new dependency to your [code:Cargo.toml]:', {code: } ), configurations: [ { language: 'toml', partialLoading: params.sourcePackageRegistries.isLoading, code: getInstallSnippet(params), }, ], }, ], configure: params => [ { type: StepType.CONFIGURE, description: tct( '[code:Sentry.init()] will return you a guard that when freed, will prevent process exit until all events have been sent (within a timeout):', {code: } ), configurations: [ { language: 'rust', code: getConfigureSnippet(params), }, ], }, ], verify: params => [ { type: StepType.VERIFY, description: t( 'The quickest way to verify Sentry in your Rust application is to cause a panic:' ), configurations: [ { language: 'rust', code: getVerifySnippet(params), }, ], }, ], }; const crashReportOnboarding: OnboardingConfig = { introduction: () => getCrashReportModalIntroduction(), install: (params: Params) => getCrashReportBackendInstallStep(params), configure: () => [ { type: StepType.CONFIGURE, description: getCrashReportModalConfigDescription({ link: 'https://docs.sentry.io/platforms/rust/user-feedback/configuration/#crash-report-modal', }), }, ], verify: () => [], nextSteps: () => [], }; const docs: Docs = { onboarding, crashReportOnboarding, }; export default docs;