@sprucelabs/spruce-cli 22.1.13 → 22.3.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/.DS_Store +0 -0
- package/.env +25 -0
- package/.env-dev +24 -0
- package/.eslintcache +1 -0
- package/build/.spruce/errors/errors.types.d.ts +137 -123
- package/build/.spruce/errors/options.types.d.ts +9 -3
- package/build/.spruce/errors/spruceCli/actionCancelled.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/appViewControllerAlreadyExists.schema.d.ts +3 -0
- package/build/.spruce/errors/spruceCli/appViewControllerAlreadyExists.schema.js +12 -0
- package/build/.spruce/errors/spruceCli/appViewControllerAlreadyExists.schema.js.map +1 -0
- package/build/.spruce/errors/spruceCli/bootError.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/buildFailed.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/cannotPromptInCi.schema.d.ts +3 -0
- package/build/.spruce/errors/spruceCli/cannotPromptInCi.schema.js +12 -0
- package/build/.spruce/errors/spruceCli/cannotPromptInCi.schema.js.map +1 -0
- package/build/.spruce/errors/spruceCli/commandAborted.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandBlocked.schema.js +5 -5
- package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js +5 -5
- package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js +10 -10
- package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/deployFailed.schema.js +3 -13
- package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js +11 -11
- package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/failedToImport.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/fileExists.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/generic.schema.js +4 -4
- package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidCommand.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js +5 -5
- package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/lintFailed.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/missingDependencies.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js +5 -5
- package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/notImplemented.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaExists.schema.js +5 -5
- package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js +9 -9
- package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillNotFound.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/skillViewExists.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/storeExists.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/testFailed.schema.js +7 -7
- package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/themeExists.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/viewPluginAlreadyExists.schema.js +3 -3
- package/build/.spruce/errors/spruceCli/viewPluginAlreadyExists.schema.js.map +1 -1
- package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js +1 -1
- package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
- package/build/GlobalEmitter.js.map +1 -1
- package/build/__tests__/behavioral/features/InstallingFeaturesDirectly.test.d.ts +17 -0
- package/build/__tests__/behavioral/features/InstallingFeaturesDirectly.test.js +142 -0
- package/build/__tests__/behavioral/features/InstallingFeaturesDirectly.test.js.map +1 -0
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingAnAppViewController.test.d.ts +23 -0
- package/build/__tests__/behavioral/views/CreatingAnAppViewController.test.js +136 -0
- package/build/__tests__/behavioral/views/CreatingAnAppViewController.test.js.map +1 -0
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js +1 -1
- package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/views/plugins/CreatingAViewPlugin.test.js +1 -1
- package/build/__tests__/behavioral/views/plugins/CreatingAViewPlugin.test.js.map +1 -1
- package/build/__tests__/implementation/TerminalInterface.test.d.ts +1 -0
- package/build/__tests__/implementation/TerminalInterface.test.js +8 -0
- package/build/__tests__/implementation/TerminalInterface.test.js.map +1 -1
- package/build/cli/Cli.js +0 -1
- package/build/cli/Cli.js.map +1 -1
- package/build/errors/SpruceError.js +6 -0
- package/build/errors/SpruceError.js.map +1 -1
- package/build/errors/appViewControllerAlreadyExists.builder.d.ts +6 -0
- package/build/errors/appViewControllerAlreadyExists.builder.js +9 -0
- package/build/errors/appViewControllerAlreadyExists.builder.js.map +1 -0
- package/build/errors/cannotPromptInCi.builder.d.ts +6 -0
- package/build/errors/cannotPromptInCi.builder.js +9 -0
- package/build/errors/cannotPromptInCi.builder.js.map +1 -0
- package/build/features/cache/CacheFeature.d.ts +8 -5
- package/build/features/cache/CacheFeature.js.map +1 -1
- package/build/features/conversation/ConversationFeature.d.ts +8 -5
- package/build/features/conversation/ConversationFeature.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.d.ts +8 -5
- package/build/features/dependencies/DependencyFeature.js.map +1 -1
- package/build/features/deploy/DeployFeature.d.ts +8 -5
- package/build/features/deploy/DeployFeature.js.map +1 -1
- package/build/features/error/ErrorFeature.d.ts +8 -8
- package/build/features/error/ErrorFeature.js.map +1 -1
- package/build/features/eventContract/EventContractFeature.d.ts +8 -5
- package/build/features/eventContract/EventContractFeature.js.map +1 -1
- package/build/features/onboard/OnboardFeature.d.ts +8 -5
- package/build/features/onboard/OnboardFeature.js.map +1 -1
- package/build/features/organization/OrganizationFeature.d.ts +3 -0
- package/build/features/permission/PermissionFeature.d.ts +3 -0
- package/build/features/person/PersonFeature.d.ts +3 -0
- package/build/features/polish/PolishFeature.d.ts +3 -0
- package/build/features/sandbox/SandboxFeature.d.ts +8 -5
- package/build/features/sandbox/SandboxFeature.js.map +1 -1
- package/build/features/skill/actions/BootAction.d.ts +9 -9
- package/build/features/skill/actions/BootAction.js.map +1 -1
- package/build/features/skill/actions/InstallFeature.d.ts +0 -0
- package/build/features/skill/actions/InstallFeature.js +2 -0
- package/build/features/skill/actions/InstallFeature.js.map +1 -0
- package/build/features/skill/actions/InstallFeatureAction.d.ts +37 -0
- package/build/features/skill/actions/InstallFeatureAction.js +79 -0
- package/build/features/skill/actions/InstallFeatureAction.js.map +1 -0
- package/build/features/store/StoreFeature.d.ts +8 -5
- package/build/features/store/StoreFeature.js.map +1 -1
- package/build/features/test/TestFeature.d.ts +8 -5
- package/build/features/test/TestFeature.js.map +1 -1
- package/build/features/view/ViewFeature.d.ts +8 -8
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/features/view/actions/CreateAppAction.d.ts +17 -0
- package/build/features/view/actions/CreateAppAction.js +28 -0
- package/build/features/view/actions/CreateAppAction.js.map +1 -0
- package/build/features/view/actions/SyncAction.d.ts +1 -2
- package/build/features/view/actions/SyncAction.js +13 -4
- package/build/features/view/actions/SyncAction.js.map +1 -1
- package/build/features/view/writers/ViewWriter.d.ts +1 -0
- package/build/features/view/writers/ViewWriter.js +11 -0
- package/build/features/view/writers/ViewWriter.js.map +1 -1
- package/build/features/vscode/VsCodeFeature.d.ts +8 -5
- package/build/features/vscode/VsCodeFeature.js.map +1 -1
- package/build/index.js +0 -0
- package/build/interfaces/TerminalInterface.js +3 -0
- package/build/interfaces/TerminalInterface.js.map +1 -1
- package/build/tests/fixtures/ViewFixture.js +1 -1
- package/build/tests/fixtures/ViewFixture.js.map +1 -1
- package/build/utilities/isCi.js +3 -0
- package/build/utilities/isCi.js.map +1 -1
- package/dist/spruce-darwin-arm64 +0 -0
- package/dist/spruce-linux-arm64 +0 -0
- package/junit.xml +1782 -0
- package/package.json +29 -29
- package/src/.spruce/errors/errors.types.ts +1180 -911
- package/src/.spruce/errors/options.types.ts +131 -248
- package/src/.spruce/errors/spruceCli/actionCancelled.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/appViewControllerAlreadyExists.schema.ts +16 -0
- package/src/.spruce/errors/spruceCli/bootError.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/buildFailed.schema.ts +16 -15
- package/src/.spruce/errors/spruceCli/cacheNotEnabled.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/cannotPromptInCi.schema.ts +16 -0
- package/src/.spruce/errors/spruceCli/commandAborted.schema.ts +15 -13
- package/src/.spruce/errors/spruceCli/commandBlocked.schema.ts +20 -18
- package/src/.spruce/errors/spruceCli/commandNotImplemented.schema.ts +26 -25
- package/src/.spruce/errors/spruceCli/createAutoloaderFailed.schema.ts +43 -42
- package/src/.spruce/errors/spruceCli/dependencyExists.schema.ts +14 -12
- package/src/.spruce/errors/spruceCli/deployFailed.schema.ts +14 -22
- package/src/.spruce/errors/spruceCli/directoryEmpty.schema.ts +14 -12
- package/src/.spruce/errors/spruceCli/directoryNotSkill.schema.ts +9 -7
- package/src/.spruce/errors/spruceCli/dockerNotStarted.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/executingCommandFailed.schema.ts +41 -40
- package/src/.spruce/errors/spruceCli/failedToImport.schema.ts +17 -15
- package/src/.spruce/errors/spruceCli/featureNotInstalled.schema.ts +15 -14
- package/src/.spruce/errors/spruceCli/fileExists.schema.ts +17 -15
- package/src/.spruce/errors/spruceCli/generic.schema.ts +15 -13
- package/src/.spruce/errors/spruceCli/invalidCommand.schema.ts +17 -15
- package/src/.spruce/errors/spruceCli/invalidEventContract.schema.ts +21 -20
- package/src/.spruce/errors/spruceCli/invalidFeatureCode.schema.ts +15 -14
- package/src/.spruce/errors/spruceCli/invalidTestDirectory.schema.ts +15 -14
- package/src/.spruce/errors/spruceCli/lintFailed.schema.ts +17 -15
- package/src/.spruce/errors/spruceCli/mercuryResponseError.schema.ts +16 -15
- package/src/.spruce/errors/spruceCli/missingDependencies.schema.ts +16 -16
- package/src/.spruce/errors/spruceCli/missingDependenciesDependency.schema.ts +21 -20
- package/src/.spruce/errors/spruceCli/noOrganizationsFound.schema.ts +9 -7
- package/src/.spruce/errors/spruceCli/noSkillsRegistered.schema.ts +9 -7
- package/src/.spruce/errors/spruceCli/notImplemented.schema.ts +9 -6
- package/src/.spruce/errors/spruceCli/notLoggedIn.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/schemaExists.schema.ts +21 -19
- package/src/.spruce/errors/spruceCli/schemaFailedToImport.schema.ts +18 -17
- package/src/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.ts +33 -32
- package/src/.spruce/errors/spruceCli/skillNotFound.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/skillNotRegistered.schema.ts +9 -7
- package/src/.spruce/errors/spruceCli/skillViewExists.schema.ts +14 -12
- package/src/.spruce/errors/spruceCli/storeExists.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/testFailed.schema.ts +26 -24
- package/src/.spruce/errors/spruceCli/themeExists.schema.ts +8 -5
- package/src/.spruce/errors/spruceCli/transportAlreadyExists.schema.ts +16 -15
- package/src/.spruce/errors/spruceCli/viewPluginAlreadyExists.schema.ts +15 -14
- package/src/.spruce/errors/spruceCli/vscodeNotInstalled.schema.ts +9 -7
- package/src/GlobalEmitter.ts +0 -1
- package/src/__tests__/behavioral/features/InstallingFeaturesDirectly.test.ts +149 -0
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingAnAppViewController.test.ts +158 -0
- package/src/__tests__/behavioral/views/KeepingViewsInSync.test.ts +1 -1
- package/src/__tests__/behavioral/views/plugins/CreatingAViewPlugin.test.ts +1 -1
- package/src/__tests__/implementation/TerminalInterface.test.ts +14 -1
- package/src/cli/Cli.ts +1 -2
- package/src/errors/SpruceError.ts +8 -0
- package/src/errors/appViewControllerAlreadyExists.builder.ts +7 -0
- package/src/errors/cannotPromptInCi.builder.ts +7 -0
- package/src/features/cache/CacheFeature.ts +10 -6
- package/src/features/conversation/ConversationFeature.ts +10 -6
- package/src/features/dependencies/DependencyFeature.ts +10 -6
- package/src/features/deploy/DeployFeature.ts +10 -6
- package/src/features/error/ErrorFeature.ts +10 -10
- package/src/features/eventContract/EventContractFeature.ts +10 -6
- package/src/features/onboard/OnboardFeature.ts +10 -6
- package/src/features/organization/OrganizationFeature.ts +4 -0
- package/src/features/permission/PermissionFeature.ts +4 -0
- package/src/features/person/PersonFeature.ts +4 -0
- package/src/features/polish/PolishFeature.ts +4 -0
- package/src/features/sandbox/SandboxFeature.ts +10 -6
- package/src/features/skill/actions/BootAction.ts +11 -11
- package/src/features/skill/actions/InstallFeatureAction.ts +93 -0
- package/src/features/store/StoreFeature.ts +10 -6
- package/src/features/test/TestFeature.ts +10 -6
- package/src/features/view/ViewFeature.ts +10 -10
- package/src/features/view/actions/CreateAppAction.ts +32 -0
- package/src/features/view/actions/SyncAction.ts +13 -7
- package/src/features/view/writers/ViewWriter.ts +19 -0
- package/src/features/vscode/VsCodeFeature.ts +9 -6
- package/src/interfaces/TerminalInterface.ts +5 -0
- package/src/tests/fixtures/ViewFixture.ts +1 -1
- package/src/utilities/isCi.ts +4 -0
- package/yarn-error.log +597 -0
- package/LICENSE +0 -21
|
@@ -5,12 +5,6 @@ import AbstractFeature, {
|
|
|
5
5
|
} from '../AbstractFeature'
|
|
6
6
|
import { FeatureCode } from '../features.types'
|
|
7
7
|
|
|
8
|
-
declare module '../../features/features.types' {
|
|
9
|
-
interface FeatureMap {
|
|
10
|
-
deploy: DeployFeature
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
8
|
export default class DeployFeature extends AbstractFeature {
|
|
15
9
|
public description = 'Deploy your skill with ease.'
|
|
16
10
|
public code: FeatureCode = 'deploy'
|
|
@@ -35,3 +29,13 @@ export default class DeployFeature extends AbstractFeature {
|
|
|
35
29
|
}
|
|
36
30
|
}
|
|
37
31
|
}
|
|
32
|
+
|
|
33
|
+
declare module '../../features/features.types' {
|
|
34
|
+
interface FeatureMap {
|
|
35
|
+
deploy: DeployFeature
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface FeatureOptionsMap {
|
|
39
|
+
deploy: undefined
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -7,16 +7,6 @@ import AbstractFeature, {
|
|
|
7
7
|
} from '../AbstractFeature'
|
|
8
8
|
import { FeatureCode } from '../features.types'
|
|
9
9
|
|
|
10
|
-
declare module '../../features/features.types' {
|
|
11
|
-
interface FeatureMap {
|
|
12
|
-
error: ErrorFeature
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
interface FeatureOptionsMap {
|
|
16
|
-
error: undefined
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
10
|
export default class ErrorFeature extends AbstractFeature {
|
|
21
11
|
public nameReadable = 'error handling'
|
|
22
12
|
public description =
|
|
@@ -102,3 +92,13 @@ export default class ErrorFeature extends AbstractFeature {
|
|
|
102
92
|
return this.Writer('error').writePlugin(this.cwd)
|
|
103
93
|
}
|
|
104
94
|
}
|
|
95
|
+
|
|
96
|
+
declare module '../../features/features.types' {
|
|
97
|
+
interface FeatureMap {
|
|
98
|
+
error: ErrorFeature
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
interface FeatureOptionsMap {
|
|
102
|
+
error: undefined
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -3,12 +3,6 @@ import { FileDescription } from '../../types/cli.types'
|
|
|
3
3
|
import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
|
|
4
4
|
import { FeatureCode } from '../features.types'
|
|
5
5
|
|
|
6
|
-
declare module '../../features/features.types' {
|
|
7
|
-
interface FeatureMap {
|
|
8
|
-
eventContract: EventContractFeature
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
6
|
export default class EventContractFeature extends AbstractFeature {
|
|
13
7
|
public code: FeatureCode = 'eventContract'
|
|
14
8
|
public nameReadable = 'Event Contract'
|
|
@@ -22,3 +16,13 @@ export default class EventContractFeature extends AbstractFeature {
|
|
|
22
16
|
|
|
23
17
|
public isInstalled = async () => true
|
|
24
18
|
}
|
|
19
|
+
|
|
20
|
+
declare module '../../features/features.types' {
|
|
21
|
+
interface FeatureMap {
|
|
22
|
+
eventContract: EventContractFeature
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface FeatureOptionsMap {
|
|
26
|
+
eventContract: undefined
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -9,12 +9,6 @@ import { FeatureCode } from '../features.types'
|
|
|
9
9
|
import ScriptLoader from './ScriptLoader'
|
|
10
10
|
import OnboardingStore from './stores/OnboardingStore'
|
|
11
11
|
|
|
12
|
-
declare module '../../features/features.types' {
|
|
13
|
-
interface FeatureMap {
|
|
14
|
-
onboard: OnboardFeature
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
12
|
export default class OnboardFeature extends AbstractFeature {
|
|
19
13
|
public code: FeatureCode = 'onboard'
|
|
20
14
|
public nameReadable = 'Onboard'
|
|
@@ -150,3 +144,13 @@ export default class OnboardFeature extends AbstractFeature {
|
|
|
150
144
|
return isExpectedCommand
|
|
151
145
|
}
|
|
152
146
|
}
|
|
147
|
+
|
|
148
|
+
declare module '../../features/features.types' {
|
|
149
|
+
interface FeatureMap {
|
|
150
|
+
onboard: OnboardFeature
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
interface FeatureOptionsMap {
|
|
154
|
+
onboard: undefined
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -3,12 +3,6 @@ import uiUtil from '../../utilities/ui.utility'
|
|
|
3
3
|
import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
|
|
4
4
|
import { ActionOptions, FeatureCode } from '../features.types'
|
|
5
5
|
|
|
6
|
-
declare module '../../features/features.types' {
|
|
7
|
-
interface FeatureMap {
|
|
8
|
-
sandbox: SandboxFeature
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
6
|
export default class SandboxFeature extends AbstractFeature {
|
|
13
7
|
public code: FeatureCode = 'sandbox'
|
|
14
8
|
public nameReadable = 'Sandbox'
|
|
@@ -45,3 +39,13 @@ export default class SandboxFeature extends AbstractFeature {
|
|
|
45
39
|
})
|
|
46
40
|
}
|
|
47
41
|
}
|
|
42
|
+
|
|
43
|
+
declare module '../../features/features.types' {
|
|
44
|
+
interface FeatureMap {
|
|
45
|
+
sandbox: SandboxFeature
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface FeatureOptionsMap {
|
|
49
|
+
sandbox: undefined
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -5,17 +5,6 @@ import CommandService from '../../../services/CommandService'
|
|
|
5
5
|
import AbstractAction from '../../AbstractAction'
|
|
6
6
|
import { FeatureActionResponse } from '../../features.types'
|
|
7
7
|
|
|
8
|
-
type OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.BootSkillOptionsSchema
|
|
9
|
-
type Options = SpruceSchemas.SpruceCli.v2020_07_22.BootSkillOptions
|
|
10
|
-
|
|
11
|
-
export interface BootMeta {
|
|
12
|
-
kill: () => void
|
|
13
|
-
pid: number
|
|
14
|
-
promise: Promise<void>
|
|
15
|
-
isBooted: boolean
|
|
16
|
-
bootPromise: Promise<void>
|
|
17
|
-
}
|
|
18
|
-
|
|
19
8
|
export default class BootAction extends AbstractAction<OptionsSchema> {
|
|
20
9
|
public optionsSchema: OptionsSchema = bootSkillOptionsSchema
|
|
21
10
|
public commandAliases = ['boot']
|
|
@@ -125,3 +114,14 @@ export default class BootAction extends AbstractAction<OptionsSchema> {
|
|
|
125
114
|
return null
|
|
126
115
|
}
|
|
127
116
|
}
|
|
117
|
+
|
|
118
|
+
type OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.BootSkillOptionsSchema
|
|
119
|
+
type Options = SpruceSchemas.SpruceCli.v2020_07_22.BootSkillOptions
|
|
120
|
+
|
|
121
|
+
export interface BootMeta {
|
|
122
|
+
kill: () => void
|
|
123
|
+
pid: number
|
|
124
|
+
promise: Promise<void>
|
|
125
|
+
isBooted: boolean
|
|
126
|
+
bootPromise: Promise<void>
|
|
127
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { buildSchema, SchemaValues } from '@sprucelabs/schema'
|
|
2
|
+
import { SelectChoice } from '@sprucelabs/spruce-core-schemas'
|
|
3
|
+
import AbstractAction from '../../AbstractAction'
|
|
4
|
+
import { FeatureActionResponse, FeatureCode } from '../../features.types'
|
|
5
|
+
|
|
6
|
+
export default class InstallFeatureAction extends AbstractAction<OptionsSchema> {
|
|
7
|
+
public optionsSchema = optionsSchema
|
|
8
|
+
public invocationMessage = 'Installing a feature... 🚀'
|
|
9
|
+
public commandAliases = ['install.feature']
|
|
10
|
+
|
|
11
|
+
public async execute(
|
|
12
|
+
options: InstallFeatureActionOptions
|
|
13
|
+
): Promise<FeatureActionResponse> {
|
|
14
|
+
let { code } = options ?? {}
|
|
15
|
+
|
|
16
|
+
if (!code) {
|
|
17
|
+
const choices: SelectChoice[] = await this.buildFeatureChoices()
|
|
18
|
+
|
|
19
|
+
if (!choices.length) {
|
|
20
|
+
return {
|
|
21
|
+
summaryLines: [
|
|
22
|
+
'Nothing to install, you have already installed everything!',
|
|
23
|
+
],
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
code = await this.promptForFeature(choices)
|
|
28
|
+
}
|
|
29
|
+
const results = await this.features.install({
|
|
30
|
+
features: [{ code: code as any }],
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
return results
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
private async promptForFeature(choices: SelectChoice[]) {
|
|
37
|
+
return await this.ui.prompt({
|
|
38
|
+
type: 'select',
|
|
39
|
+
label: 'Which feature do you want to install?',
|
|
40
|
+
isRequired: true,
|
|
41
|
+
options: {
|
|
42
|
+
choices,
|
|
43
|
+
},
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
private async buildFeatureChoices() {
|
|
48
|
+
const choices: SelectChoice[] = []
|
|
49
|
+
|
|
50
|
+
for (const key in features) {
|
|
51
|
+
const isInstalled = await this.features.isInstalled(
|
|
52
|
+
key as FeatureCode
|
|
53
|
+
)
|
|
54
|
+
if (!isInstalled) {
|
|
55
|
+
choices.push({
|
|
56
|
+
label: features[key as keyof typeof features],
|
|
57
|
+
value: key,
|
|
58
|
+
})
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return choices
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const features = {
|
|
66
|
+
error: 'Errors',
|
|
67
|
+
event: 'Events',
|
|
68
|
+
schema: 'Schemas',
|
|
69
|
+
store: 'Stores (including database support)',
|
|
70
|
+
test: 'Tests',
|
|
71
|
+
view: 'Views',
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const allFeatureChoices: SelectChoice[] = Object.keys(features).map((key) => ({
|
|
75
|
+
label: features[key as keyof typeof features],
|
|
76
|
+
value: key,
|
|
77
|
+
}))
|
|
78
|
+
|
|
79
|
+
const optionsSchema = buildSchema({
|
|
80
|
+
id: 'installFeature',
|
|
81
|
+
fields: {
|
|
82
|
+
code: {
|
|
83
|
+
type: 'select',
|
|
84
|
+
label: 'Feature to install',
|
|
85
|
+
options: {
|
|
86
|
+
choices: allFeatureChoices,
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
type OptionsSchema = typeof optionsSchema
|
|
93
|
+
export type InstallFeatureActionOptions = SchemaValues<OptionsSchema>
|
|
@@ -6,12 +6,6 @@ import AbstractFeature, {
|
|
|
6
6
|
} from '../AbstractFeature'
|
|
7
7
|
import { FeatureCode } from '../features.types'
|
|
8
8
|
|
|
9
|
-
declare module '../../features/features.types' {
|
|
10
|
-
interface FeatureMap {
|
|
11
|
-
store: StoreFeature
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
9
|
export default class StoreFeature extends AbstractFeature {
|
|
16
10
|
public nameReadable = 'Data Stores'
|
|
17
11
|
public description = 'For working with remote places of storage.'
|
|
@@ -87,3 +81,13 @@ export default class StoreFeature extends AbstractFeature {
|
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
83
|
}
|
|
84
|
+
|
|
85
|
+
declare module '../../features/features.types' {
|
|
86
|
+
interface FeatureMap {
|
|
87
|
+
store: StoreFeature
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
interface FeatureOptionsMap {
|
|
91
|
+
store: undefined
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -8,12 +8,6 @@ import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
|
|
|
8
8
|
import ParentTestFinder from '../error/ParentTestFinder'
|
|
9
9
|
import { FeatureCode } from '../features.types'
|
|
10
10
|
|
|
11
|
-
declare module '../../features/features.types' {
|
|
12
|
-
interface FeatureMap {
|
|
13
|
-
test: TestFeature
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
11
|
export interface ParentClassCandidate {
|
|
18
12
|
name: string
|
|
19
13
|
label: string
|
|
@@ -149,3 +143,13 @@ export default class TestFeature extends AbstractFeature {
|
|
|
149
143
|
return candidates
|
|
150
144
|
}
|
|
151
145
|
}
|
|
146
|
+
|
|
147
|
+
declare module '../../features/features.types' {
|
|
148
|
+
interface FeatureMap {
|
|
149
|
+
test: TestFeature
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
interface FeatureOptionsMap {
|
|
153
|
+
test: undefined
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -3,16 +3,6 @@ import { NpmPackage } from '../../types/cli.types'
|
|
|
3
3
|
import AbstractFeature, { FeatureDependency } from '../AbstractFeature'
|
|
4
4
|
import { ActionOptions, FeatureCode } from '../features.types'
|
|
5
5
|
|
|
6
|
-
declare module '../../features/features.types' {
|
|
7
|
-
interface FeatureMap {
|
|
8
|
-
view: ViewFeature
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
interface FeatureOptionsMap {
|
|
12
|
-
view: undefined
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
6
|
export default class ViewFeature extends AbstractFeature {
|
|
17
7
|
public nameReadable = 'views'
|
|
18
8
|
public description = 'Views: Create views using the Heartwood framework.'
|
|
@@ -98,3 +88,13 @@ export default class ViewFeature extends AbstractFeature {
|
|
|
98
88
|
return { files }
|
|
99
89
|
}
|
|
100
90
|
}
|
|
91
|
+
|
|
92
|
+
declare module '../../features/features.types' {
|
|
93
|
+
interface FeatureMap {
|
|
94
|
+
view: ViewFeature
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
interface FeatureOptionsMap {
|
|
98
|
+
view: undefined
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { buildSchema } from '@sprucelabs/schema'
|
|
2
|
+
import actionUtil from '../../../utilities/action.utility'
|
|
3
|
+
import AbstractAction from '../../AbstractAction'
|
|
4
|
+
import { FeatureActionResponse } from '../../features.types'
|
|
5
|
+
|
|
6
|
+
export default class CreateAppAction extends AbstractAction<OptionsSchema> {
|
|
7
|
+
public optionsSchema = optionsSchema
|
|
8
|
+
public invocationMessage = 'Creating new app view controller... '
|
|
9
|
+
public readonly commandAliases = ['create.avc']
|
|
10
|
+
|
|
11
|
+
public async execute(): Promise<FeatureActionResponse> {
|
|
12
|
+
const writer = this.Writer('view', {})
|
|
13
|
+
const files = await writer.writeAppViewController(this.cwd)
|
|
14
|
+
|
|
15
|
+
const results = await this.Action('view', 'sync').execute({})
|
|
16
|
+
const merged = actionUtil.mergeActionResults(
|
|
17
|
+
{
|
|
18
|
+
files,
|
|
19
|
+
},
|
|
20
|
+
results
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
return merged
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const optionsSchema = buildSchema({
|
|
28
|
+
id: 'createAppViewControllerOptions',
|
|
29
|
+
fields: {},
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
type OptionsSchema = typeof optionsSchema
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import globby from '@sprucelabs/globby'
|
|
2
|
-
import { buildSchema
|
|
2
|
+
import { buildSchema } from '@sprucelabs/schema'
|
|
3
3
|
import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'
|
|
4
4
|
import {
|
|
5
5
|
VcTemplateItem,
|
|
@@ -16,12 +16,10 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
16
16
|
public commandAliases = ['sync.views']
|
|
17
17
|
public invocationMessage = 'Syncing view controller types... 🌲'
|
|
18
18
|
|
|
19
|
-
public async execute(
|
|
20
|
-
_options: SchemaValues<OptionsSchema>
|
|
21
|
-
): Promise<FeatureActionResponse> {
|
|
19
|
+
public async execute(): Promise<FeatureActionResponse> {
|
|
22
20
|
const targetDir = diskUtil.resolvePath(this.cwd, 'src')
|
|
23
21
|
const matches = await globby(
|
|
24
|
-
['**/*.svc.ts', '**/*.vc.ts', '**/*.view.plugin.ts'],
|
|
22
|
+
['**/*.svc.ts', '**/*.vc.ts', '**/*.view.plugin.ts', '**/*.avc.ts'],
|
|
25
23
|
{
|
|
26
24
|
cwd: targetDir,
|
|
27
25
|
}
|
|
@@ -35,12 +33,13 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
35
33
|
const introspect = introspectionUtil.introspect(paths)
|
|
36
34
|
|
|
37
35
|
const vcTemplateItems: VcTemplateItem[] = []
|
|
36
|
+
let appTemplateItem: VcTemplateItem | undefined
|
|
38
37
|
const svcTemplateItems: VcTemplateItem[] = []
|
|
39
38
|
const viewPluginItems: ViewControllerPluginItem[] = []
|
|
40
39
|
|
|
41
40
|
introspect.forEach(({ classes }) => {
|
|
42
41
|
for (const thisClass of classes) {
|
|
43
|
-
const { vc, svc, plugin } =
|
|
42
|
+
const { vc, svc, plugin, avc } =
|
|
44
43
|
this.mapIntrospectedClassToTemplateItem(thisClass)
|
|
45
44
|
|
|
46
45
|
if (vc) {
|
|
@@ -49,6 +48,8 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
49
48
|
viewPluginItems.push(plugin)
|
|
50
49
|
} else if (svc) {
|
|
51
50
|
svcTemplateItems.push(svc)
|
|
51
|
+
} else if (avc) {
|
|
52
|
+
appTemplateItem = avc
|
|
52
53
|
} else {
|
|
53
54
|
throw new Error('Unexpected class type.')
|
|
54
55
|
}
|
|
@@ -63,6 +64,7 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
63
64
|
vcTemplateItems,
|
|
64
65
|
svcTemplateItems,
|
|
65
66
|
viewPluginItems,
|
|
67
|
+
appTemplateItem,
|
|
66
68
|
}
|
|
67
69
|
)
|
|
68
70
|
|
|
@@ -75,6 +77,7 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
75
77
|
vc?: VcTemplateItem
|
|
76
78
|
svc?: VcTemplateItem
|
|
77
79
|
plugin?: ViewControllerPluginItem
|
|
80
|
+
avc?: VcTemplateItem
|
|
78
81
|
} {
|
|
79
82
|
const item = {
|
|
80
83
|
id: c.staticProperties.id,
|
|
@@ -84,10 +87,13 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
84
87
|
|
|
85
88
|
let vc: VcTemplateItem | undefined
|
|
86
89
|
let svc: VcTemplateItem | undefined
|
|
90
|
+
let avc: VcTemplateItem | undefined
|
|
87
91
|
let plugin: ViewControllerPluginItem | undefined
|
|
88
92
|
|
|
89
93
|
if (c.classPath.endsWith('.svc.ts')) {
|
|
90
94
|
svc = item
|
|
95
|
+
} else if (c.classPath.endsWith('avc.ts')) {
|
|
96
|
+
avc = item
|
|
91
97
|
} else if (c.classPath.endsWith('view.plugin.ts')) {
|
|
92
98
|
const nameCamel = c.classPath.match(/([^/]+).view.plugin.ts$/)![1]
|
|
93
99
|
plugin = { ...item, nameCamel }
|
|
@@ -95,7 +101,7 @@ export default class SyncAction extends AbstractAction<OptionsSchema> {
|
|
|
95
101
|
vc = item
|
|
96
102
|
}
|
|
97
103
|
|
|
98
|
-
return { svc, vc, plugin }
|
|
104
|
+
return { svc, vc, plugin, avc }
|
|
99
105
|
}
|
|
100
106
|
}
|
|
101
107
|
|
|
@@ -214,4 +214,23 @@ export default class ViewWriter extends AbstractWriter {
|
|
|
214
214
|
)
|
|
215
215
|
return { path, filename }
|
|
216
216
|
}
|
|
217
|
+
|
|
218
|
+
public async writeAppViewController(cwd: string) {
|
|
219
|
+
const match = await globby(cwd + '/**/App.avc.ts')
|
|
220
|
+
|
|
221
|
+
if (match.length > 0) {
|
|
222
|
+
throw new SpruceError({
|
|
223
|
+
code: 'APP_VIEW_CONTROLLER_ALREADY_EXISTS',
|
|
224
|
+
})
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const destination = diskUtil.resolvePath(cwd, 'src', 'App.avc.ts')
|
|
228
|
+
const contents = this.templates.appViewController()
|
|
229
|
+
|
|
230
|
+
return this.writeFileIfChangedMixinResults(
|
|
231
|
+
destination,
|
|
232
|
+
contents,
|
|
233
|
+
'Your new app view controller!'
|
|
234
|
+
)
|
|
235
|
+
}
|
|
217
236
|
}
|
|
@@ -3,12 +3,6 @@ import { FileDescription } from '../../types/cli.types'
|
|
|
3
3
|
import AbstractFeature from '../AbstractFeature'
|
|
4
4
|
import { FeatureCode } from '../features.types'
|
|
5
5
|
|
|
6
|
-
declare module '../../features/features.types' {
|
|
7
|
-
interface FeatureMap {
|
|
8
|
-
vscode: VsCodeFeature
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
6
|
export default class VsCodeFeature extends AbstractFeature {
|
|
13
7
|
public nameReadable = 'VSCode'
|
|
14
8
|
public description = 'Create settings and install VSCode extensions'
|
|
@@ -52,3 +46,12 @@ export default class VsCodeFeature extends AbstractFeature {
|
|
|
52
46
|
return true
|
|
53
47
|
}
|
|
54
48
|
}
|
|
49
|
+
|
|
50
|
+
declare module '../../features/features.types' {
|
|
51
|
+
interface FeatureMap {
|
|
52
|
+
vscode: VsCodeFeature
|
|
53
|
+
}
|
|
54
|
+
interface FeatureOptionsMap {
|
|
55
|
+
vscode: undefined
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -414,6 +414,11 @@ export default class TerminalInterface implements GraphicsInterface {
|
|
|
414
414
|
definition: T
|
|
415
415
|
): Promise<FieldDefinitionValueType<T>> {
|
|
416
416
|
this.isPromptActive = true
|
|
417
|
+
|
|
418
|
+
if (isCi()) {
|
|
419
|
+
throw new SpruceError({ code: 'CANNOT_PROMPT_IN_CI' })
|
|
420
|
+
}
|
|
421
|
+
|
|
417
422
|
const name = generateInquirerFieldName()
|
|
418
423
|
const fieldDefinition: FieldDefinitions = definition
|
|
419
424
|
const { defaultValue } = fieldDefinition
|