@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
1,190 lines (1,052 loc) • 97.2 kB
text/typescript
/* eslint-disable @typescript-eslint/no-namespace */
/* eslint-disable no-redeclare */
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable import/order */
export { SpruceSchemas } from '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schemas.types'
import { default as SchemaEntity } from '@sprucelabs/schema'
import * as SpruceSchema from '@sprucelabs/schema'
import { BaseWidget } from '#spruce/../widgets/types/widgets.types'
import AbstractSpruceError from '@sprucelabs/error'
declare module '@sprucelabs/spruce-core-schemas/build/.spruce/schemas/core.schemas.types' {
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
interface GeneratedDir {
'name': string
'path': string
'description'?: string | undefined | null
'action': ("skipped" | "generated" | "updated" | "deleted")
}
interface GeneratedDirSchema extends SpruceSchema.Schema {
id: 'generatedDir',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: '',
fields: {
/** . */
'name': {
type: 'text',
isRequired: true,
options: undefined
},
/** . */
'path': {
type: 'text',
isRequired: true,
options: undefined
},
/** . */
'description': {
type: 'text',
options: undefined
},
/** . */
'action': {
type: 'select',
isRequired: true,
options: {choices: [{"label":"Skipped","value":"skipped"},{"label":"Generated","value":"generated"},{"label":"Updated","value":"updated"},{"label":"Deleted","value":"deleted"}],}
},
}
}
interface GeneratedDirEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.GeneratedDirSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
interface WatcherDidDetectChangesEmitPayload {
'changes': ({ id: 'generatedFile', values: SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFile } | { id: 'generatedDir', values: SpruceSchemas.SpruceCli.v2020_07_22.GeneratedDir })[]
}
interface WatcherDidDetectChangesEmitPayloadSchema extends SpruceSchema.Schema {
id: 'watcherDidDetectChangesEmitPayload',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Watcher did detect changes emit payload',
fields: {
/** . */
'changes': {
type: 'schema',
isRequired: true,
isArray: true,
options: {schemas: (SpruceSchemas.SpruceCli.v2020_07_22.GeneratedFileSchema | SpruceSchemas.SpruceCli.v2020_07_22.GeneratedDirSchema)[],}
},
}
}
interface WatcherDidDetectChangesEmitPayloadEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.WatcherDidDetectChangesEmitPayloadSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Upgrade. Everything. Heads up, this can take a few minutes. ⏱ */
interface UpgradeSkillOptions {
/** Build after upgrade. Should I build your source after the upgrade? */
'shouldBuild'?: boolean | undefined | null
/** Upgrade mode. */
'upgradeMode'?: ("askForChanged" | "forceEverything" | "forceRequiredSkipRest") | undefined | null
}
interface UpgradeSkillOptionsSchema extends SpruceSchema.Schema {
id: 'upgradeSkillOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Upgrade skill action',
description: 'Upgrade. Everything. Heads up, this can take a few minutes. ⏱',
fields: {
/** Build after upgrade. Should I build your source after the upgrade? */
'shouldBuild': {
label: 'Build after upgrade',
type: 'boolean',
hint: 'Should I build your source after the upgrade?',
defaultValue: true,
options: undefined
},
/** Upgrade mode. */
'upgradeMode': {
label: 'Upgrade mode',
type: 'select',
defaultValue: "askForChanged",
options: {choices: [{"value":"askForChanged","label":"Ask for changed files"},{"value":"forceEverything","label":"Force everything"},{"value":"forceRequiredSkipRest","label":"Force required (skipping all non-essential)"}],}
},
}
}
interface UpgradeSkillOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.UpgradeSkillOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Test your might! 💪 */
interface TestOptions {
/** Report while running. Should I output the test results while they are running? */
'shouldReportWhileRunning'?: boolean | undefined | null
/** Pattern. I'll filter all tests that match this pattern */
'pattern'?: string | undefined | null
/** Inspect. Pass --inspect related args to test process. */
'inspect'?: number | undefined | null
/** Should wait for manual start?. */
'shouldHoldAtStart'?: boolean | undefined | null
/** Wait until tests are finished. For testing. Returns immediately after executing test so the running process can be managed programatically. */
'shouldReturnImmediately'?: boolean | undefined | null
/** Watch. */
'watchMode'?: ("off" | "standard" | "smart") | undefined | null
}
interface TestOptionsSchema extends SpruceSchema.Schema {
id: 'testOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Test skill',
description: 'Test your might! 💪',
fields: {
/** Report while running. Should I output the test results while they are running? */
'shouldReportWhileRunning': {
label: 'Report while running',
type: 'boolean',
hint: 'Should I output the test results while they are running?',
defaultValue: true,
options: undefined
},
/** Pattern. I'll filter all tests that match this pattern */
'pattern': {
label: 'Pattern',
type: 'text',
hint: 'I\'ll filter all tests that match this pattern',
options: undefined
},
/** Inspect. Pass --inspect related args to test process. */
'inspect': {
label: 'Inspect',
type: 'number',
hint: 'Pass --inspect related args to test process.',
options: undefined
},
/** Should wait for manual start?. */
'shouldHoldAtStart': {
label: 'Should wait for manual start?',
type: 'boolean',
defaultValue: false,
options: undefined
},
/** Wait until tests are finished. For testing. Returns immediately after executing test so the running process can be managed programatically. */
'shouldReturnImmediately': {
label: 'Wait until tests are finished',
type: 'boolean',
isPrivate: true,
hint: 'For testing. Returns immediately after executing test so the running process can be managed programatically.',
defaultValue: false,
options: undefined
},
/** Watch. */
'watchMode': {
label: 'Watch',
type: 'select',
options: {choices: [{"value":"off","label":"Off"},{"value":"standard","label":"Standard"},{"value":"smart","label":"Smart"}],}
},
}
}
interface TestOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.TestOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Options for schema.sync. */
interface SyncSchemasOptions {
/** Field types directory. Where field types and interfaces will be generated. */
'fieldTypesDestinationDir'?: string | undefined | null
/** Addons lookup directory. Where I'll look for new schema fields to be registered. */
'addonsLookupDir'?: string | undefined | null
/** Generate field types. Should I generate field types too? */
'generateFieldTypes'?: boolean | undefined | null
/** Schema types destination directory. Where I will generate schema types and interfaces. */
'schemaTypesDestinationDirOrFile'?: string | undefined | null
/** . Where I should look for your schema builders? */
'schemaLookupDir'?: string | undefined | null
/** Module import. When other skills use your schemas, will they import them from a module? */
'moduleToImportFromWhenRemote'?: string | undefined | null
/** Auto install missing dependencies. */
'shouldInstallMissingDependencies'?: boolean | undefined | null
/** Enable versioning. Should we use versioning? */
'shouldEnableVersioning'?: boolean | undefined | null
/** Global namespace. The name you'll use when accessing these schemas, e.g. SpruceSchemas */
'globalSchemaNamespace'?: string | undefined | null
/** Fetch remote schemas. I will pull in schemas from other features. */
'shouldFetchRemoteSchemas'?: boolean | undefined | null
/** Fetch local schemas. I will look in schemaLookupDir to load local schemas. */
'shouldFetchLocalSchemas'?: boolean | undefined | null
/** Fetch core schemas. Should I pull in core schemas too? */
'shouldFetchCoreSchemas'?: boolean | undefined | null
/** Generate core schemas. Used only for updating the @sprucelabs/spruce-core-schemas. Ensures core schemas are generated like local schemas. Also an alias for `--shouldFetchRemoteSchemas=false --shouldFetchCoreSchemas=false --generateStandaloneTypesFile. */
'shouldGenerateCoreSchemaTypes'?: boolean | undefined | null
/** Register built schemas. Should the schemas use the SchemaRegistry for tracking? */
'registerBuiltSchemas'?: boolean | undefined | null
/** Delete directory if no schemas. Should I delete the schema directory if no schemas are found? */
'deleteDestinationDirIfNoSchemas'?: boolean | undefined | null
/** Delete orphaned schemas. Should I delete schemas where the builders are missing? */
'deleteOrphanedSchemas'?: boolean | undefined | null
/** Generate standalone types file. By default, I'll generate a types file that augments core types from @sprucelabs/spruce-core-schemas. Setting this to true will generate a stand alone types file. */
'generateStandaloneTypesFile'?: boolean | undefined | null
/** message. */
'syncingMessage'?: string | undefined | null
}
interface SyncSchemasOptionsSchema extends SpruceSchema.Schema {
id: 'syncSchemasOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Sync schemas action',
description: 'Options for schema.sync.',
fields: {
/** Field types directory. Where field types and interfaces will be generated. */
'fieldTypesDestinationDir': {
label: 'Field types directory',
type: 'text',
isPrivate: true,
hint: 'Where field types and interfaces will be generated.',
defaultValue: "#spruce/schemas",
options: undefined
},
/** Addons lookup directory. Where I'll look for new schema fields to be registered. */
'addonsLookupDir': {
label: 'Addons lookup directory',
type: 'text',
hint: 'Where I\'ll look for new schema fields to be registered.',
defaultValue: "src/addons",
options: undefined
},
/** Generate field types. Should I generate field types too? */
'generateFieldTypes': {
label: 'Generate field types',
type: 'boolean',
isPrivate: true,
hint: 'Should I generate field types too?',
defaultValue: true,
options: undefined
},
/** Schema types destination directory. Where I will generate schema types and interfaces. */
'schemaTypesDestinationDirOrFile': {
label: 'Schema types destination directory',
type: 'text',
hint: 'Where I will generate schema types and interfaces.',
defaultValue: "#spruce/schemas",
options: undefined
},
/** . Where I should look for your schema builders? */
'schemaLookupDir': {
type: 'text',
hint: 'Where I should look for your schema builders?',
defaultValue: "src/schemas",
options: undefined
},
/** Module import. When other skills use your schemas, will they import them from a module? */
'moduleToImportFromWhenRemote': {
label: 'Module import',
type: 'text',
hint: 'When other skills use your schemas, will they import them from a module?',
options: undefined
},
/** Auto install missing dependencies. */
'shouldInstallMissingDependencies': {
label: 'Auto install missing dependencies',
type: 'boolean',
options: undefined
},
/** Enable versioning. Should we use versioning? */
'shouldEnableVersioning': {
label: 'Enable versioning',
type: 'boolean',
isPrivate: true,
hint: 'Should we use versioning?',
defaultValue: true,
options: undefined
},
/** Global namespace. The name you'll use when accessing these schemas, e.g. SpruceSchemas */
'globalSchemaNamespace': {
label: 'Global namespace',
type: 'text',
isPrivate: true,
hint: 'The name you\'ll use when accessing these schemas, e.g. SpruceSchemas',
defaultValue: "SpruceSchemas",
options: undefined
},
/** Fetch remote schemas. I will pull in schemas from other features. */
'shouldFetchRemoteSchemas': {
label: 'Fetch remote schemas',
type: 'boolean',
isPrivate: true,
hint: 'I will pull in schemas from other features.',
defaultValue: true,
options: undefined
},
/** Fetch local schemas. I will look in schemaLookupDir to load local schemas. */
'shouldFetchLocalSchemas': {
label: 'Fetch local schemas',
type: 'boolean',
isPrivate: true,
hint: 'I will look in schemaLookupDir to load local schemas.',
defaultValue: true,
options: undefined
},
/** Fetch core schemas. Should I pull in core schemas too? */
'shouldFetchCoreSchemas': {
label: 'Fetch core schemas',
type: 'boolean',
isPrivate: true,
hint: 'Should I pull in core schemas too?',
defaultValue: true,
options: undefined
},
/** Generate core schemas. Used only for updating the @sprucelabs/spruce-core-schemas. Ensures core schemas are generated like local schemas. Also an alias for `--shouldFetchRemoteSchemas=false --shouldFetchCoreSchemas=false --generateStandaloneTypesFile. */
'shouldGenerateCoreSchemaTypes': {
label: 'Generate core schemas',
type: 'boolean',
isPrivate: true,
hint: 'Used only for updating the @sprucelabs/spruce-core-schemas. Ensures core schemas are generated like local schemas. Also an alias for `--shouldFetchRemoteSchemas=false --shouldFetchCoreSchemas=false --generateStandaloneTypesFile.',
options: undefined
},
/** Register built schemas. Should the schemas use the SchemaRegistry for tracking? */
'registerBuiltSchemas': {
label: 'Register built schemas',
type: 'boolean',
isPrivate: true,
hint: 'Should the schemas use the SchemaRegistry for tracking?',
defaultValue: true,
options: undefined
},
/** Delete directory if no schemas. Should I delete the schema directory if no schemas are found? */
'deleteDestinationDirIfNoSchemas': {
label: 'Delete directory if no schemas',
type: 'boolean',
isPrivate: true,
hint: 'Should I delete the schema directory if no schemas are found?',
defaultValue: false,
options: undefined
},
/** Delete orphaned schemas. Should I delete schemas where the builders are missing? */
'deleteOrphanedSchemas': {
label: 'Delete orphaned schemas',
type: 'boolean',
isPrivate: true,
hint: 'Should I delete schemas where the builders are missing?',
defaultValue: true,
options: undefined
},
/** Generate standalone types file. By default, I'll generate a types file that augments core types from @sprucelabs/spruce-core-schemas. Setting this to true will generate a stand alone types file. */
'generateStandaloneTypesFile': {
label: 'Generate standalone types file',
type: 'boolean',
isPrivate: true,
hint: 'By default, I\'ll generate a types file that augments core types from @sprucelabs/spruce-core-schemas. Setting this to true will generate a stand alone types file.',
defaultValue: false,
options: undefined
},
/** message. */
'syncingMessage': {
label: ' message',
type: 'text',
isPrivate: true,
defaultValue: "Syncing schemas...",
options: undefined
},
}
}
interface SyncSchemasOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SyncSchemasOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Sync schema fields so you can use schemas! */
interface SyncSchemaFieldsOptions {
/** Field types directory. Where field types and interfaces will be generated. */
'fieldTypesDestinationDir'?: string | undefined | null
/** Addons lookup directory. Where I'll look for new schema fields to be registered. */
'addonsLookupDir'?: string | undefined | null
/** Generate field types. Should I generate field types too? */
'generateFieldTypes'?: boolean | undefined | null
}
interface SyncSchemaFieldsOptionsSchema extends SpruceSchema.Schema {
id: 'syncSchemaFieldsOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'syncSchemaFieldsOptions',
description: 'Sync schema fields so you can use schemas!',
fields: {
/** Field types directory. Where field types and interfaces will be generated. */
'fieldTypesDestinationDir': {
label: 'Field types directory',
type: 'text',
isPrivate: true,
hint: 'Where field types and interfaces will be generated.',
defaultValue: "#spruce/schemas",
options: undefined
},
/** Addons lookup directory. Where I'll look for new schema fields to be registered. */
'addonsLookupDir': {
label: 'Addons lookup directory',
type: 'text',
hint: 'Where I\'ll look for new schema fields to be registered.',
defaultValue: "src/addons",
options: undefined
},
/** Generate field types. Should I generate field types too? */
'generateFieldTypes': {
label: 'Generate field types',
type: 'boolean',
isPrivate: true,
hint: 'Should I generate field types too?',
defaultValue: true,
options: undefined
},
}
}
interface SyncSchemaFieldsOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SyncSchemaFieldsOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Pull down event contracts from Mercury to make them available in your skill. */
interface SyncEventOptions {
/** Contract destination. Where I will generate event contracts. */
'contractDestinationDir'?: string | undefined | null
/** Schema types lookup directory. Where I will lookup schema types and interfaces. */
'schemaTypesLookupDir'?: string | undefined | null
/** Sync only core events. For use in @sprucelabs/mercury-types */
'shouldSyncOnlyCoreEvents'?: boolean | undefined | null
/** Event signature types file. */
'skillEventContractTypesFile'?: string | undefined | null
/** Event builder file. */
'eventBuilderFile'?: string | undefined | null
}
interface SyncEventOptionsSchema extends SpruceSchema.Schema {
id: 'syncEventOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'sync event action',
description: 'Pull down event contracts from Mercury to make them available in your skill.',
fields: {
/** Contract destination. Where I will generate event contracts. */
'contractDestinationDir': {
label: 'Contract destination',
type: 'text',
hint: 'Where I will generate event contracts.',
defaultValue: "#spruce/events",
options: undefined
},
/** Schema types lookup directory. Where I will lookup schema types and interfaces. */
'schemaTypesLookupDir': {
label: 'Schema types lookup directory',
type: 'text',
hint: 'Where I will lookup schema types and interfaces.',
defaultValue: "#spruce/schemas",
options: undefined
},
/** Sync only core events. For use in @sprucelabs/mercury-types */
'shouldSyncOnlyCoreEvents': {
label: 'Sync only core events',
type: 'boolean',
hint: 'For use in @sprucelabs/mercury-types',
options: undefined
},
/** Event signature types file. */
'skillEventContractTypesFile': {
label: 'Event signature types file',
type: 'text',
defaultValue: "@sprucelabs/mercury-types/build/types/mercury.types",
options: undefined
},
/** Event builder file. */
'eventBuilderFile': {
label: 'Event builder file',
type: 'text',
defaultValue: "@sprucelabs/mercury-types",
options: undefined
},
}
}
interface SyncEventOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Keep your errors types in sync with your builders */
interface SyncErrorOptions {
/** Field types directory. Where field types and interfaces will be generated. */
'fieldTypesDestinationDir'?: string | undefined | null
/** Addons lookup directory. Where I'll look for new schema fields to be registered. */
'addonsLookupDir'?: string | undefined | null
/** Generate field types. Should I generate field types too? */
'generateFieldTypes'?: boolean | undefined | null
/** Schema types destination directory. Where I will generate schema types and interfaces. */
'schemaTypesDestinationDirOrFile'?: string | undefined | null
/** . Where I should look for your schema builders? */
'schemaLookupDir'?: string | undefined | null
/** Module import. When other skills use your schemas, will they import them from a module? */
'moduleToImportFromWhenRemote'?: string | undefined | null
/** Auto install missing dependencies. */
'shouldInstallMissingDependencies'?: boolean | undefined | null
/** Enable versioning. Should we use versioning? */
'shouldEnableVersioning'?: boolean | undefined | null
/** Global namespace. The name you'll use when accessing these schemas, e.g. SpruceSchemas */
'globalSchemaNamespace'?: string | undefined | null
/** Fetch remote schemas. I will pull in schemas from other features. */
'shouldFetchRemoteSchemas'?: boolean | undefined | null
/** Fetch local schemas. I will look in schemaLookupDir to load local schemas. */
'shouldFetchLocalSchemas'?: boolean | undefined | null
/** Fetch core schemas. Should I pull in core schemas too? */
'shouldFetchCoreSchemas'?: boolean | undefined | null
/** Generate core schemas. Used only for updating the @sprucelabs/spruce-core-schemas. Ensures core schemas are generated like local schemas. Also an alias for `--shouldFetchRemoteSchemas=false --shouldFetchCoreSchemas=false --generateStandaloneTypesFile. */
'shouldGenerateCoreSchemaTypes'?: boolean | undefined | null
/** Register built schemas. Should the schemas use the SchemaRegistry for tracking? */
'registerBuiltSchemas'?: boolean | undefined | null
/** Generate standalone types file. By default, I'll generate a types file that augments core types from @sprucelabs/spruce-core-schemas. Setting this to true will generate a stand alone types file. */
'generateStandaloneTypesFile'?: boolean | undefined | null
/** message. */
'syncingMessage'?: string | undefined | null
/** Error class destination. Where I'll save your new Error class file? */
'errorClassDestinationDir': string
/** . Where I should look for your error builders? */
'errorLookupDir'?: string | undefined | null
/** Types destination dir. This is where error options and type information will be written */
'errorTypesDestinationDir'?: string | undefined | null
}
interface SyncErrorOptionsSchema extends SpruceSchema.Schema {
id: 'syncErrorOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Sync error action',
description: 'Keep your errors types in sync with your builders',
fields: {
/** Field types directory. Where field types and interfaces will be generated. */
'fieldTypesDestinationDir': {
label: 'Field types directory',
type: 'text',
isPrivate: true,
hint: 'Where field types and interfaces will be generated.',
defaultValue: "#spruce/schemas",
options: undefined
},
/** Addons lookup directory. Where I'll look for new schema fields to be registered. */
'addonsLookupDir': {
label: 'Addons lookup directory',
type: 'text',
hint: 'Where I\'ll look for new schema fields to be registered.',
defaultValue: "src/addons",
options: undefined
},
/** Generate field types. Should I generate field types too? */
'generateFieldTypes': {
label: 'Generate field types',
type: 'boolean',
isPrivate: true,
hint: 'Should I generate field types too?',
defaultValue: true,
options: undefined
},
/** Schema types destination directory. Where I will generate schema types and interfaces. */
'schemaTypesDestinationDirOrFile': {
label: 'Schema types destination directory',
type: 'text',
hint: 'Where I will generate schema types and interfaces.',
defaultValue: "#spruce/schemas",
options: undefined
},
/** . Where I should look for your schema builders? */
'schemaLookupDir': {
type: 'text',
hint: 'Where I should look for your schema builders?',
defaultValue: "src/schemas",
options: undefined
},
/** Module import. When other skills use your schemas, will they import them from a module? */
'moduleToImportFromWhenRemote': {
label: 'Module import',
type: 'text',
hint: 'When other skills use your schemas, will they import them from a module?',
options: undefined
},
/** Auto install missing dependencies. */
'shouldInstallMissingDependencies': {
label: 'Auto install missing dependencies',
type: 'boolean',
options: undefined
},
/** Enable versioning. Should we use versioning? */
'shouldEnableVersioning': {
label: 'Enable versioning',
type: 'boolean',
isPrivate: true,
hint: 'Should we use versioning?',
defaultValue: true,
options: undefined
},
/** Global namespace. The name you'll use when accessing these schemas, e.g. SpruceSchemas */
'globalSchemaNamespace': {
label: 'Global namespace',
type: 'text',
isPrivate: true,
hint: 'The name you\'ll use when accessing these schemas, e.g. SpruceSchemas',
defaultValue: "SpruceSchemas",
options: undefined
},
/** Fetch remote schemas. I will pull in schemas from other features. */
'shouldFetchRemoteSchemas': {
label: 'Fetch remote schemas',
type: 'boolean',
isPrivate: true,
hint: 'I will pull in schemas from other features.',
defaultValue: true,
options: undefined
},
/** Fetch local schemas. I will look in schemaLookupDir to load local schemas. */
'shouldFetchLocalSchemas': {
label: 'Fetch local schemas',
type: 'boolean',
isPrivate: true,
hint: 'I will look in schemaLookupDir to load local schemas.',
defaultValue: true,
options: undefined
},
/** Fetch core schemas. Should I pull in core schemas too? */
'shouldFetchCoreSchemas': {
label: 'Fetch core schemas',
type: 'boolean',
isPrivate: true,
hint: 'Should I pull in core schemas too?',
defaultValue: true,
options: undefined
},
/** Generate core schemas. Used only for updating the @sprucelabs/spruce-core-schemas. Ensures core schemas are generated like local schemas. Also an alias for `--shouldFetchRemoteSchemas=false --shouldFetchCoreSchemas=false --generateStandaloneTypesFile. */
'shouldGenerateCoreSchemaTypes': {
label: 'Generate core schemas',
type: 'boolean',
isPrivate: true,
hint: 'Used only for updating the @sprucelabs/spruce-core-schemas. Ensures core schemas are generated like local schemas. Also an alias for `--shouldFetchRemoteSchemas=false --shouldFetchCoreSchemas=false --generateStandaloneTypesFile.',
options: undefined
},
/** Register built schemas. Should the schemas use the SchemaRegistry for tracking? */
'registerBuiltSchemas': {
label: 'Register built schemas',
type: 'boolean',
isPrivate: true,
hint: 'Should the schemas use the SchemaRegistry for tracking?',
defaultValue: true,
options: undefined
},
/** Generate standalone types file. By default, I'll generate a types file that augments core types from @sprucelabs/spruce-core-schemas. Setting this to true will generate a stand alone types file. */
'generateStandaloneTypesFile': {
label: 'Generate standalone types file',
type: 'boolean',
isPrivate: true,
hint: 'By default, I\'ll generate a types file that augments core types from @sprucelabs/spruce-core-schemas. Setting this to true will generate a stand alone types file.',
defaultValue: false,
options: undefined
},
/** message. */
'syncingMessage': {
label: ' message',
type: 'text',
isPrivate: true,
defaultValue: "Syncing schemas...",
options: undefined
},
/** Error class destination. Where I'll save your new Error class file? */
'errorClassDestinationDir': {
label: 'Error class destination',
type: 'text',
isPrivate: true,
isRequired: true,
hint: 'Where I\'ll save your new Error class file?',
defaultValue: "src/errors",
options: undefined
},
/** . Where I should look for your error builders? */
'errorLookupDir': {
type: 'text',
hint: 'Where I should look for your error builders?',
defaultValue: "src/errors",
options: undefined
},
/** Types destination dir. This is where error options and type information will be written */
'errorTypesDestinationDir': {
label: 'Types destination dir',
type: 'text',
hint: 'This is where error options and type information will be written',
defaultValue: "#spruce/errors",
options: undefined
},
}
}
interface SyncErrorOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SyncErrorOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
interface SkillFeature {
'destination'?: string | undefined | null
/** What's the name of your skill?. This marketing focused, like "8-bit Stories" or "Adventures". */
'name': string
/** How would you describe your skill?. */
'description': string
}
interface SkillFeatureSchema extends SpruceSchema.Schema {
id: 'skillFeature',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Skill feature options',
fields: {
/** . */
'destination': {
type: 'text',
defaultValue: ".",
options: undefined
},
/** What's the name of your skill?. This marketing focused, like "8-bit Stories" or "Adventures". */
'name': {
label: 'What\'s the name of your skill?',
type: 'text',
isRequired: true,
hint: 'This marketing focused, like "8-bit Stories" or "Adventures".',
options: undefined
},
/** How would you describe your skill?. */
'description': {
label: 'How would you describe your skill?',
type: 'text',
isRequired: true,
options: undefined
},
}
}
interface SkillFeatureEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SkillFeatureSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Install vscode extensions, launch configs, and settings the Spruce team uses in-house! */
interface SetupVscodeOptions {
/** Install everything. */
'all'?: boolean | undefined | null
}
interface SetupVscodeOptionsSchema extends SpruceSchema.Schema {
id: 'setupVscodeOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Setup vscode action',
description: 'Install vscode extensions, launch configs, and settings the Spruce team uses in-house!',
fields: {
/** Install everything. */
'all': {
label: 'Install everything',
type: 'boolean',
options: undefined
},
}
}
interface SetupVscodeOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SetupVscodeOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Use this with in your CI/CD environment to get your skill ready to run tests. */
interface SetupTestsOptions {
/** Demo phone number. */
'demoNumber': string
/** Namespace. */
'skillSlug': string
}
interface SetupTestsOptionsSchema extends SpruceSchema.Schema {
id: 'setupTestsOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Setup tests options',
description: 'Use this with in your CI/CD environment to get your skill ready to run tests.',
fields: {
/** Demo phone number. */
'demoNumber': {
label: 'Demo phone number',
type: 'phone',
isRequired: true,
options: undefined
},
/** Namespace. */
'skillSlug': {
label: 'Namespace',
type: 'text',
isRequired: true,
options: undefined
},
}
}
interface SetupTestsOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.SetupTestsOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
interface RegisterDashboardWidgetsEmitPayloadSchema {
'widgets'?: (BaseWidget) | undefined | null
}
interface RegisterDashboardWidgetsEmitPayloadSchemaSchema extends SpruceSchema.Schema {
id: 'registerDashboardWidgetsEmitPayloadSchema',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'register dashboard widgets emit payload schema',
fields: {
/** . */
'widgets': {
type: 'raw',
options: {valueType: `BaseWidget`,}
},
}
}
interface RegisterDashboardWidgetsEmitPayloadSchemaEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.RegisterDashboardWidgetsEmitPayloadSchemaSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** A stripped down cli user with token details for login */
interface PersonWithToken {
/** Id. */
'id': string
/** Casual name. The name you can use when talking to this person. */
'casualName': string
'token': string
/** Logged in. */
'isLoggedIn'?: boolean | undefined | null
}
interface PersonWithTokenSchema extends SpruceSchema.Schema {
id: 'personWithToken',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: '',
description: 'A stripped down cli user with token details for login',
fields: {
/** Id. */
'id': {
label: 'Id',
type: 'id',
isRequired: true,
options: undefined
},
/** Casual name. The name you can use when talking to this person. */
'casualName': {
label: 'Casual name',
type: 'text',
isRequired: true,
hint: 'The name you can use when talking to this person.',
options: undefined
},
/** . */
'token': {
type: 'text',
isRequired: true,
options: undefined
},
/** Logged in. */
'isLoggedIn': {
label: 'Logged in',
type: 'boolean',
options: undefined
},
}
}
interface PersonWithTokenEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.PersonWithTokenSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Track onboarding progress and tutorials & quizzes completed. */
interface Onboarding {
/** mode. */
'mode': ("short" | "immersive" | "off")
/** Stage. */
'stage'?: ("create.skill" | "test") | undefined | null
}
interface OnboardingSchema extends SpruceSchema.Schema {
id: 'onboarding',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Onboarding',
description: 'Track onboarding progress and tutorials & quizzes completed.',
fields: {
/** mode. */
'mode': {
label: 'mode',
type: 'select',
isRequired: true,
options: {choices: [{"label":"Short","value":"short"},{"label":"Immersive","value":"immersive"},{"label":"Off","value":"off"}],}
},
/** Stage. */
'stage': {
label: 'Stage',
type: 'select',
options: {choices: [{"label":"Create skill","value":"create.skill"},{"label":"Test","value":"test"}],}
},
}
}
interface OnboardingEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.OnboardingSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** The question is; Are you read? ⚡️ */
interface OnboardOptions {
}
interface OnboardOptionsSchema extends SpruceSchema.Schema {
id: 'onboardOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Onboard action',
description: 'The question is; Are you read? ⚡️',
fields: {
}
}
interface OnboardOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.OnboardOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Create a new node module, to be written in typescript, ready to rock! */
interface NodeFeatureOptions {
'destination'?: string | undefined | null
/** What's the name of your module?. */
'name': string
/** How would you describe your module?. */
'description': string
}
interface NodeFeatureOptionsSchema extends SpruceSchema.Schema {
id: 'nodeFeatureOptions',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'Create node module',
description: 'Create a new node module, to be written in typescript, ready to rock!',
fields: {
/** . */
'destination': {
type: 'text',
defaultValue: ".",
options: undefined
},
/** What's the name of your module?. */
'name': {
label: 'What\'s the name of your module?',
type: 'text',
isRequired: true,
options: undefined
},
/** How would you describe your module?. */
'description': {
label: 'How would you describe your module?',
type: 'text',
isRequired: true,
options: undefined
},
}
}
interface NodeFeatureOptionsEntity extends SchemaEntity<SpruceSchemas.SpruceCli.v2020_07_22.NodeFeatureOptionsSchema> {}
}
namespace SpruceSchemas.SpruceCli.v2020_07_22 {
/** Used to collect input on the names of a class or interface */
interface NamedTemplateItem {
/** Readable name. The name people will read */
'nameReadable': string
/** Readable name (plural). The plural form of the name people will read */
'nameReadablePlural': string
/** Camel case name. camelCase version of the name */
'nameCamel': string
/** Plural camel case name. camelCase version of the name */
'nameCamelPlural'?: string | undefined | null
/** Pascal case name. PascalCase of the name */
'namePascal'?: string | undefined | null
/** Plural Pascal case name. PascalCase of the name */
'namePascalPlural'?: string | undefined | null
/** Constant case name. CONST_CASE of the name */
'nameConst'?: string | undefined | null
/** Kebab case name. kebab-case of the name */
'nameKebab'?: string | undefined | null
/** Snake case name. snake_case of the name */
'nameSnake'?: string | undefined | null
/** Snake case name (plural). snakes_case of the name */
'nameSnakePlural'?: string | undefined | null
/** Description. Describe a bit more here */
'description'?: string | undefined | null
}
interface NamedTemplateItemSchema extends SpruceSchema.Schema {
id: 'namedTemplateItem',
version: 'v2020_07_22',
namespace: 'SpruceCli',
name: 'NamedTemplateItem',
description: 'Used to collect input on the names of a class or interface',
fields: {
/** Readable name. The name people will read */
'nameReadable': {
label: 'Readable name',
type: 'text',
isRequired: true,
hint: 'The name people will read',
options: undefined
},
/** Readable name (plural). The plural form of the name people will read */
'nameReadablePlural': {
label: 'Readable name (plural)',
type: 'text',
isRequired: true,
hint: 'The plural form of the name people will read',
options: undefined
},
/** Camel case name. camelCase version of the name */
'nameCamel': {
label: 'Camel case name',
type: 'text',
isRequired: true,
hint: 'camelCase version of the name',
options: undefined
},
/** Plural camel case name. camelCase version of the name */
'nameCamelPlural': {
label: 'Plural camel case name',
type: 'text',
hint: 'camelCase version of the name',
options: undefined
},
/** Pascal case name. PascalCase of the name */
'namePascal': {
label: 'Pascal case name',
type: 'text',
hint: 'PascalCase of the name',
options: undefined
},
/** Plural Pascal case name. PascalCase of the name */
'namePascalPlural': {
label: 'Plural Pascal case name',
type: 'text',
hint: 'PascalCase of the name',
options: undefined
},
/** Constant case name. CONST_CASE of the name */
'nameConst': {
label: 'Constant case name',
type: 'text',
hint: 'CONST_CASE of the name',
options: undefined
},
/** Kebab case name. kebab-case of the name */
'nameKebab': {
label: 'Kebab case name',
type: 'text',
hint: 'kebab-case of the name',
options: undefined
},
/** Snake case name. snake_case of the name */
'nameSnake': {
label: 'Snake case name',
type: 'text',
hint: 'snake_case of the name',
options: undefined
},
/** Snake case name (plural). snakes_case of the name */
'nameSnakePlural': {
label: 'Snake case name (plural)',
type: 'text',
hint: 'snakes_case of the name',