UNPKG

@sanity/cli

Version:

Sanity CLI tool for managing Sanity installations, managing plugins, schemas and datasets

90 lines (80 loc) 3.13 kB
import {type ConsentStatus} from '@sanity/telemetry' import {type CliCommandContext, type CliCommandDefinition} from '../../types' import {resolveConsent} from '../../util/createTelemetryStore' const helpText = ` Examples # Check telemetry consent status for your logged in user sanity telemetry status ` export function telemetryStatusMessage(status: ConsentStatus, {chalk}: CliCommandContext): string { switch (status) { case 'granted': return `Status: ${chalk.green('Enabled')}` case 'denied': return `Status: ${chalk.red('Disabled')}` case 'unset': return `Status: ${chalk.yellow('Not set')}` default: return '' } } export function telemetryLearnMoreMessage(status: ConsentStatus): string { const url = 'https://www.sanity.io/telemetry' switch (status) { case 'granted': return `Learn more about the data being collected here:\n${url}` default: return `Learn more here:\n${url}` } } const telemetryStatusCommand: CliCommandDefinition = { name: 'status', group: 'telemetry', helpText, signature: '', description: 'Check telemetry consent status for your logged in user', action: async (_, context) => { const {chalk, output} = context // eslint-disable-next-line no-process-env const {status, reason} = await resolveConsent({env: process.env}) switch (true) { case status === 'undetermined' && reason === 'unauthenticated': output.print('You need to log in first to see telemetry status.') break case status === 'undetermined' && reason === 'fetchError': output.print(chalk.yellow('Could not fetch telemetry consent status.')) break case status === 'denied' && reason === 'localOverride': output.print(`${telemetryStatusMessage(status, context)}\n`) output.print( `You've opted out of telemetry data collection.\nNo data will be collected from your machine.\n`, ) output.print(`Using ${chalk.cyan('DO_NOT_TRACK')} environment variable.`) break case status === 'denied': output.print(`${telemetryStatusMessage(status, context)}\n`) output.print( `You've opted out of telemetry data collection.\nNo data will be collected from your Sanity account.`, ) break case status === 'granted': output.print(`${telemetryStatusMessage(status, context)}\n`) output.print( 'Telemetry data on general usage and errors is collected to help us improve Sanity.', ) break case status === 'unset': output.print(`${telemetryStatusMessage(status, context)}\n`) output.print(`You've not set your preference for telemetry collection.\n`) output.print(`Run ${chalk.cyan('npx sanity telemetry enable/disable')} to opt in or out.`) output.print( `You can also use the ${chalk.cyan('DO_NOT_TRACK')} environment variable to opt out.`, ) break default: break } output.print(`\n${telemetryLearnMoreMessage(status)}`) }, } export default telemetryStatusCommand