Skip to content

Commit b074672

Browse files
authored
Merge pull request #421 from coderoad/reset-commands
support multiple reset commands
2 parents ada2f6a + fc38477 commit b074672

File tree

6 files changed

+16
-8
lines changed

6 files changed

+16
-8
lines changed

Diff for: src/actions/onRunReset.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import * as TT from 'typings/tutorial'
33
import Context from '../services/context/context'
44
import { exec } from '../services/node'
55
import reset from '../services/reset'
6+
import * as hooks from '../services/hooks'
67
import getCommitHashByPosition from '../services/reset/lastHash'
78

89
type ResetAction = {
@@ -30,8 +31,9 @@ const onRunReset = async (action: ResetAction, context: Context): Promise<void>
3031
reset({ branch, hash })
3132

3233
// if tutorial.config.reset.command, run it
33-
if (tutorial?.config?.reset?.command) {
34-
await exec({ command: tutorial.config.reset.command })
34+
const resetActions = tutorial?.config?.reset
35+
if (resetActions) {
36+
hooks.onReset({ commands: resetActions?.commands, vscodeCommands: resetActions?.vscodeCommands })
3537
}
3638
}
3739

Diff for: src/commands.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import * as TT from 'typings/tutorial'
33
import * as vscode from 'vscode'
44
import createTestRunner from './services/testRunner'
55
import createWebView from './services/webview'
6-
import logger from './services/logger'
76
import * as hooks from './services/hooks'
7+
import logger from './services/logger'
88

99
export const COMMANDS = {
1010
START: 'coderoad.start',

Diff for: src/services/hooks/index.ts

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ export const onSolutionEnter = async (actions: TT.StepActions): Promise<void> =>
3838
await onRunTest()
3939
}
4040

41+
export const onReset = async (actions: TT.StepActions): Promise<void> => {
42+
await runCommands(actions?.commands)
43+
await runVSCodeCommands(actions?.vscodeCommands)
44+
}
45+
4146
export const onError = async (error: Error): Promise<void> => {
4247
telemetryOnError(error)
4348
}

Diff for: src/services/hooks/utils/loadCommits.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as git from '../../git'
22

3-
const loadCommits = async (commits: string[]): Promise<void> => {
4-
if (commits) {
3+
const loadCommits = async (commits: string[] = []): Promise<void> => {
4+
if (commits && commits.length) {
55
// load the current list of commits for validation
66
for (const commit of commits) {
77
await git.loadCommit(commit)

Diff for: src/services/reset/lastHash.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const getLastCommitHash = (position: T.Position, tutorial: TT.Tutorial | null):
4141
if (!step) {
4242
throw new Error(`No step found matching ${stepId}`)
4343
}
44-
const commits = step.setup.commits
44+
const commits = step.setup?.commits || []
4545
if (!commits.length) {
4646
throw new Error(`No commits found on step ${stepId}`)
4747
}

Diff for: typings/tutorial.d.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { ProgressStatus } from './index'
33
export type Maybe<T> = T | null
44

55
export type ConfigReset = {
6-
command?: string
6+
commands?: string[]
7+
vscodeCommands?: VSCodeCommand[]
78
}
89

910
export type TutorialConfig = {
@@ -57,7 +58,7 @@ export type TutorialSummary = {
5758

5859
export type StepActions = {
5960
commands?: string[]
60-
commits: string[]
61+
commits?: string[]
6162
files?: string[]
6263
watchers?: string[]
6364
filter?: string

0 commit comments

Comments
 (0)