Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc7aeeec

Browse files
committed
validate extension version
Signed-off-by: shmck <shawn.j.mckay@gmail.com>
1 parentae956d0 commitc7aeeec

File tree

7 files changed

+46
-12
lines changed

7 files changed

+46
-12
lines changed

‎errors/GitProjectAlreadyExists.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
###GitProject Already Exists
1+
###GitRemote Already Exists
22

3-
CodeRoad requires an emptyGitproject.
3+
Have you started this tutorial before in this workspace? TheGitremote already exists.
44

5-
Open a new workspace to start a tutorial.
5+
Consider deleting your`.git` folder and restarting.

‎errors/GitRemoteAlreadyExists.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
###Git Project Already Exists
2+
3+
CodeRoad requires an empty Git project.
4+
5+
Open a new workspace to start a tutorial.

‎errors/UnmetExtensionVersion.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
###Unmet Tutorial Dependency
2+
3+
This tutorial requires a different version of CodeRoad.

‎errors/UnmetTutorialDependency.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
###Unmet Tutorial Dependency
22

3-
###Unmet Tutorial Dependency
4-
53
Tutorial cannot reun because a dependency version doesn't match. Install the correct dependency and click "Check Again".

‎src/channel/index.ts

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as T from 'typings'
22
import*asTTfrom'typings/tutorial'
33
import*asEfrom'typings/error'
44
import*asvscodefrom'vscode'
5+
import{satisfies}from'semver'
56
importsaveCommitfrom'../actions/saveCommit'
67
importsetupActionsfrom'../actions/setupActions'
78
importsolutionActionsfrom'../actions/solutionActions'
@@ -110,6 +111,25 @@ class Channel implements Channel {
110111
case'EDITOR_TUTORIAL_CONFIG':
111112
try{
112113
constdata:TT.Tutorial=action.payload.tutorial
114+
115+
// validate extension version
116+
constexpectedAppVersion=data.config?.appVersions?.coderoadVSCode
117+
if(expectedAppVersion){
118+
constextension=vscode.extensions.getExtension('coderoad.coderoad')
119+
if(extension){
120+
constcurrentAppVersion=extension.packageJSON.version
121+
constsatisfied=satisfies(currentAppVersion,expectedAppVersion)
122+
if(!satisfied){
123+
consterror:E.ErrorMessage={
124+
type:'UnmetExtensionVersion',
125+
message:`Expected CodeRoad v${expectedAppVersion}, but found${currentAppVersion}`,
126+
}
127+
this.send({type:'TUTORIAL_CONFIGURE_FAIL',payload:{ error}})
128+
return
129+
}
130+
}
131+
}
132+
113133
// setup tutorial config (save watcher, test runner, etc)
114134
awaitthis.context.setTutorial(this.workspaceState,data)
115135

@@ -121,7 +141,7 @@ class Channel implements Channel {
121141
constcurrentVersion:string|null=awaitversion(dep.name)
122142
if(!currentVersion){
123143
// use a custom error message
124-
consterror={
144+
consterror:E.ErrorMessage={
125145
type:'MissingTutorialDependency',
126146
message:
127147
dep.message||`Process "${dep.name}" is required but not found. It may need to be installed`,
@@ -140,7 +160,7 @@ class Channel implements Channel {
140160
constsatisfiedDependency=awaitcompareVersions(currentVersion,dep.version)
141161

142162
if(!satisfiedDependency){
143-
consterror={
163+
consterror:E.ErrorMessage={
144164
type:'UnmetTutorialDependency',
145165
message:`Expected${dep.name} to have version${dep.version}, but found version${currentVersion}`,
146166
actions:[
@@ -155,7 +175,7 @@ class Channel implements Channel {
155175
}
156176

157177
if(satisfiedDependency!==true){
158-
consterror=satisfiedDependency||{
178+
consterror:E.ErrorMessage=satisfiedDependency||{
159179
type:'UnknownError',
160180
message:`Something went wrong comparing dependency for${name}`,
161181
actions:[

‎typings/error.d.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
exporttypeErrorMessageView='FULL_PAGE'|'NOTIFY'|'NONE'
22

33
exporttypeErrorMessageType=
4-
|'UnknownError'
5-
|'NoWorkspaceFound'
6-
|'GitNotFound'
7-
|'WorkspaceNotEmpty'
84
|'FailedToConnectToGitRepo'
5+
|'GitNotFound'
96
|'GitProjectAlreadyExists'
107
|'GitRemoteAlreadyExists'
8+
|'MissingTutorialDependency'
9+
|'NoWorkspaceFound'
10+
|'UnknownError'
11+
|'UnmetExtensionVersion'
12+
|'UnmetTutorialDependency'
13+
|'WorkspaceNotEmpty'
1114

1215
exporttypeErrorAction={
1316
label:string

‎typings/tutorial.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
exporttypeMaybe<T>=T|null
22

33
exporttypeTutorialConfig={
4+
appVersions:TutorialAppVersions
45
testRunner:TutorialTestRunner
56
repo:TutorialRepo
67
dependencies?:TutorialDependency[]
@@ -64,3 +65,7 @@ export interface TutorialDependency {
6465
version:string
6566
message?:string
6667
}
68+
69+
exportinterfaceTutorialAppVersions{
70+
coderoadVSCode:string
71+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp