@sprucelabs/spruce-cli 14.26.16 → 14.27.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/CHANGELOG.md +35 -0
- package/build/.spruce/errors/errors.types.d.ts +19 -0
- package/build/.spruce/errors/options.types.d.ts +4 -1
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.d.ts +3 -0
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +28 -0
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -0
- package/build/__tests__/behavioral/AddingADependency.test.d.ts +6 -3
- package/build/__tests__/behavioral/AddingADependency.test.js +116 -44
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +2 -2
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js +4 -4
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.js +3 -3
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpVscode.test.js +3 -3
- package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +2 -2
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +2 -2
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +3 -2
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +156 -106
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +6 -9
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +7 -4
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +7 -7
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js.map +1 -1
- 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/CreatingASkillView.test.js +3 -3
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +2 -2
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +3 -3
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/errors/SpruceError.js +4 -0
- package/build/errors/SpruceError.js.map +1 -1
- package/build/errors/dependencyExists.builder.d.ts +11 -0
- package/build/errors/dependencyExists.builder.js +22 -0
- package/build/errors/dependencyExists.builder.js.map +1 -0
- package/build/features/AbstractAction.js +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/dependencies/actions/AddAction.js +22 -15
- package/build/features/dependencies/actions/AddAction.js.map +1 -1
- package/build/features/event/actions/CreateAction.js +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/interfaces/SpyInterface.d.ts +1 -1
- package/build/interfaces/SpyInterface.js +2 -2
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/services/DependencyService.d.ts +1 -0
- package/build/services/DependencyService.js +18 -0
- package/build/services/DependencyService.js.map +1 -1
- package/build/tests/AbstractCliTest.js +1 -1
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.d.ts +6 -0
- package/build/tests/utilities/uiAssert.utility.js +51 -0
- package/build/tests/utilities/uiAssert.utility.js.map +1 -0
- package/package.json +30 -28
- package/src/.spruce/errors/errors.types.ts +29 -0
- package/src/.spruce/errors/options.types.ts +4 -1
- package/src/.spruce/errors/spruceCli/dependencyExists.schema.ts +22 -0
- package/src/__tests__/behavioral/AddingADependency.test.ts +45 -8
- package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +3 -3
- package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +4 -4
- package/src/__tests__/behavioral/ManagingDependencies.test.ts +3 -3
- package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
- package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpVscode.test.ts +3 -3
- package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -2
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
- package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +44 -22
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +2 -0
- package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +7 -7
- package/src/__tests__/behavioral/skill/UpgradingASkill3.test.ts +2 -2
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -3
- package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +2 -2
- package/src/__tests__/implementation/ActionExecuter2.test.ts +3 -3
- package/src/errors/SpruceError.ts +4 -0
- package/src/errors/dependencyExists.builder.ts +12 -0
- package/src/features/AbstractAction.ts +1 -4
- package/src/features/dependencies/actions/AddAction.ts +12 -5
- package/src/features/event/actions/CreateAction.ts +4 -1
- package/src/interfaces/SpyInterface.ts +1 -1
- package/src/services/DependencyService.ts +14 -0
- package/src/tests/AbstractCliTest.ts +1 -1
- package/src/tests/utilities/uiAssert.utility.ts +29 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Schema, SchemaValues, SchemaPartialValues } from '@sprucelabs/schema'
|
|
2
2
|
import { versionUtil } from '@sprucelabs/spruce-skill-utils'
|
|
3
|
-
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
|
|
4
3
|
import { Templates } from '@sprucelabs/spruce-templates'
|
|
5
4
|
import { GlobalEmitter } from '../GlobalEmitter'
|
|
6
5
|
import ServiceFactory, {
|
|
@@ -132,9 +131,7 @@ export default abstract class AbstractAction<S extends Schema = Schema>
|
|
|
132
131
|
resolvedDestination: string,
|
|
133
132
|
fallbackVersion: string
|
|
134
133
|
) {
|
|
135
|
-
const versions =
|
|
136
|
-
? versionUtil.getAllVersions(resolvedDestination)
|
|
137
|
-
: []
|
|
134
|
+
const versions = versionUtil.getAllVersions(resolvedDestination)
|
|
138
135
|
const todaysVersion = versionUtil.generateVersion()
|
|
139
136
|
|
|
140
137
|
let version = fallbackVersion
|
|
@@ -27,17 +27,24 @@ export default class DeployAction extends AbstractAction<OptionsSchema> {
|
|
|
27
27
|
let { namespace } = this.validateAndNormalizeOptions(options)
|
|
28
28
|
|
|
29
29
|
const skills = await this.Store('skill').fetchAllSkills()
|
|
30
|
+
const dependencyService = this.Service('dependency')
|
|
30
31
|
|
|
31
32
|
if (!namespace) {
|
|
33
|
+
const dependencies = dependencyService.get().map((d) => d.namespace)
|
|
34
|
+
|
|
35
|
+
const choices = skills
|
|
36
|
+
.filter((s) => dependencies.indexOf(s.slug) === -1)
|
|
37
|
+
.map((s) => ({
|
|
38
|
+
value: s.slug,
|
|
39
|
+
label: s.name,
|
|
40
|
+
}))
|
|
41
|
+
|
|
32
42
|
namespace = await this.ui.prompt({
|
|
33
43
|
type: 'select',
|
|
34
44
|
label: 'Which skill would you like to add as a dependency?',
|
|
35
45
|
isRequired: true,
|
|
36
46
|
options: {
|
|
37
|
-
choices
|
|
38
|
-
value: s.slug,
|
|
39
|
-
label: s.name,
|
|
40
|
-
})),
|
|
47
|
+
choices,
|
|
41
48
|
},
|
|
42
49
|
})
|
|
43
50
|
}
|
|
@@ -51,7 +58,7 @@ export default class DeployAction extends AbstractAction<OptionsSchema> {
|
|
|
51
58
|
})
|
|
52
59
|
}
|
|
53
60
|
|
|
54
|
-
|
|
61
|
+
dependencyService.add({
|
|
55
62
|
id: skill.id,
|
|
56
63
|
namespace: skill.slug,
|
|
57
64
|
})
|
|
@@ -68,7 +68,10 @@ export default class CreateAction extends AbstractAction<OptionsSchema> {
|
|
|
68
68
|
|
|
69
69
|
try {
|
|
70
70
|
const destinationDir = diskUtil.resolvePath(this.cwd, 'src', 'events')
|
|
71
|
-
const resolvedVersion = await this.resolveVersion(
|
|
71
|
+
const resolvedVersion = await this.resolveVersion(
|
|
72
|
+
version,
|
|
73
|
+
diskUtil.resolvePath(destinationDir, '**', '*')
|
|
74
|
+
)
|
|
72
75
|
|
|
73
76
|
const files = await this.Writer('event').writeEvent(destinationDir, {
|
|
74
77
|
nameKebab,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SettingsService } from '@sprucelabs/spruce-skill-utils'
|
|
2
|
+
import SpruceError from '../errors/SpruceError'
|
|
2
3
|
|
|
3
4
|
interface Dependency {
|
|
4
5
|
id: string
|
|
@@ -16,10 +17,23 @@ export default class DependencyService {
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
public add(dependency: Dependency) {
|
|
20
|
+
this.assertDependencyDoesNotExist(dependency.namespace)
|
|
21
|
+
|
|
19
22
|
const dependencies = this.settings.get('dependencies') ?? []
|
|
20
23
|
dependencies.push(dependency)
|
|
21
24
|
this.settings.set('dependencies', dependencies)
|
|
22
25
|
}
|
|
26
|
+
private assertDependencyDoesNotExist(namespace: string) {
|
|
27
|
+
const dependencies = this.get()
|
|
28
|
+
const match = dependencies.find((d) => d.namespace === namespace)
|
|
29
|
+
|
|
30
|
+
if (match) {
|
|
31
|
+
throw new SpruceError({
|
|
32
|
+
code: 'DEPENDENCY_EXISTS',
|
|
33
|
+
namespace,
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
}
|
|
23
37
|
|
|
24
38
|
public get(): Dependency[] {
|
|
25
39
|
return this.settings.get('dependencies') ?? []
|
|
@@ -465,7 +465,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
|
|
|
465
465
|
}
|
|
466
466
|
|
|
467
467
|
protected static selectOptionBasedOnLabel(label: string) {
|
|
468
|
-
const last = this.ui.
|
|
468
|
+
const last = this.ui.getLastInvocation()
|
|
469
469
|
assert.doesInclude(last.options.options.choices, {
|
|
470
470
|
label,
|
|
471
471
|
})
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { assert } from '@sprucelabs/test'
|
|
2
|
+
import SpyInterface from '../../interfaces/SpyInterface'
|
|
3
|
+
|
|
4
|
+
const uiAssertUtil = {
|
|
5
|
+
async assertRendersSelect(ui: SpyInterface) {
|
|
6
|
+
await ui.waitForInput()
|
|
7
|
+
|
|
8
|
+
const last = ui.getLastInvocation()
|
|
9
|
+
assert.isTruthy(
|
|
10
|
+
last.options.options.choices,
|
|
11
|
+
`I expected a select, I did not find one!`
|
|
12
|
+
)
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
assertSelectDidNotRenderChoice(
|
|
16
|
+
ui: SpyInterface,
|
|
17
|
+
value: string,
|
|
18
|
+
label: string
|
|
19
|
+
) {
|
|
20
|
+
const last = ui.getLastInvocation()
|
|
21
|
+
|
|
22
|
+
assert.doesNotInclude(last.options.options.choices, {
|
|
23
|
+
value,
|
|
24
|
+
label,
|
|
25
|
+
})
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export default uiAssertUtil
|