@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
72 lines (66 loc) • 2.42 kB
text/typescript
import { diskUtil } from '@sprucelabs/spruce-skill-utils'
import { GraphicsInterface } from '../../../types/cli.types'
import { Script, CallbackPlayer } from '../ScriptPlayer'
const script: Script = [
'Hey there! 👋',
"I'm Sprucebot. 🌲🤖",
"I'll be your narrator on this journey to creating your first experience.",
async (player) => {
await player.ui.waitForEnter('Lets get started...')
},
async (player) => {
player.ui.clear()
},
async (player) => {
await renderDoors(player.ui)
},
'You are strolling through the forest when you stumble into a clearing.',
'You see two heavy, thick, doors.',
'They are free standing. You walk around them a few times before...',
'You see words scribed onto each.',
'The door to the left says, "Quick start. 2.5 hours."',
'The door to the right says, "Immersive. 4-6 weeks."',
'"What, 2 and a half hours is not \'Quick\', my robot friend!", you chuckle aloud.',
'"And also, four to six week onboarding!?, What the actual sh**!?"',
"You don't even have time for a 2 hour onboarding, much less 4-6 weeks!",
'But, you take pride in your work and the things you build.',
"And also... maybe on the other side of these doors is that opportunity everyone's been talking about!",
async (player) => {
return await chooseOnboardingAdventure(player)
},
]
export async function renderDoors(ui: GraphicsInterface) {
await ui.renderImage(
diskUtil.resolvePath(__dirname, '../../../../docs/images/doors.jpg'),
{
width: 100,
height: 35,
}
)
}
export async function chooseOnboardingAdventure(player: CallbackPlayer) {
const answer = await player.ui.prompt({
type: 'select',
label: 'Which door do you choose?',
isRequired: true,
options: {
choices: [
{
label: 'Left door (30 minutes)',
value: 'short',
} as const,
{
label: 'Right door (4-6 weeks)',
value: 'immersive',
} as const,
],
},
})
switch (answer) {
case 'immersive':
return player.redirect('onboarding.immersive')
case 'short':
return player.redirect('onboarding.short')
}
}
export default script