@@ -122,41 +122,40 @@ export function openWorkspaceProjectsWebview(context: vscode.ExtensionContext) {
122122 } ) ;
123123 } ) ;
124124 panel . webview . onDidReceiveMessage ( message => {
125+
125126 switch ( message . command ) {
126127 case 'searchBSPProjects' :
127- let workspaceJson = path . join ( getWorkspaceFolder ( ) + '/' + '.vscode' , 'workspace.json' ) ;
128- if ( fs . existsSync ( workspaceJson ) ) {
129- let j = JSON . parse ( fs . readFileSync ( workspaceJson , 'utf8' ) ) ;
130- if ( j . hasOwnProperty ( "bsps" ) ) {
131- let bsps = j [ "bsps" ] ;
132- if ( bsps . hasOwnProperty ( "folder" ) ) {
133- let bspFolder = getWorkspaceFolder ( ) + '/' + bsps . folder ;
134-
135- findRtconfigDirectories ( bspFolder ) . then ( ( dirs ) => {
136- let stars :string [ ] = [ ] ;
137- if ( bsps . hasOwnProperty ( "stars" ) ) {
138- stars = bsps . stars ;
139- }
140-
141- panel . webview . postMessage ( { command : 'updateProjects' , data : { dirs : dirs , stars : stars } } ) ;
142- } ) ;
128+ {
129+ let workspaceJson = readWorkspaceJson ( ) ;
130+ if ( workspaceJson ) {
131+ if ( workspaceJson . hasOwnProperty ( "bsps" ) ) {
132+ let bsps = workspaceJson [ "bsps" ] ;
133+ if ( bsps . hasOwnProperty ( "folder" ) ) {
134+ let bspFolder = getWorkspaceFolder ( ) + '/' + bsps . folder ;
135+
136+ findRtconfigDirectories ( bspFolder ) . then ( ( dirs ) => {
137+ let stars :string [ ] = [ ] ;
138+ if ( bsps . hasOwnProperty ( "stars" ) ) {
139+ stars = bsps . stars ;
140+ }
141+
142+ panel . webview . postMessage ( { command : 'updateProjects' , data : { dirs : dirs , stars : stars } } ) ;
143+ } ) ;
144+ }
143145 }
144146 }
145147 }
146-
147148 break ;
148149
149150 case 'saveBSPProjects' :
150- let stars = message . args [ 0 ] ;
151- // save the stars to the workspace.json file
152- let workspaceFile = path . join ( getWorkspaceFolder ( ) + '/' + '.vscode' , 'workspace.json' ) ;
153- if ( fs . existsSync ( workspaceFile ) ) {
154- let j = JSON . parse ( fs . readFileSync ( workspaceFile , 'utf8' ) ) ;
155- if ( j . hasOwnProperty ( "bsps" ) ) {
156- let bsps = j [ "bsps" ] ;
157- bsps . stars = stars ;
158- fs . writeFileSync ( workspaceFile , JSON . stringify ( j , null , 4 ) , 'utf8' ) ;
159- }
151+ {
152+ let stars = message . args [ 0 ] ;
153+ // save the stars to the workspace.json file
154+ let workspaceJson = readWorkspaceJson ( ) ;
155+ if ( workspaceJson ) {
156+ workspaceJson . bsps . stars = stars ;
157+ writeWorkspaceJson ( workspaceJson ) ;
158+ }
160159 }
161160 break ;
162161 } } ,
@@ -168,3 +167,36 @@ export function openWorkspaceProjectsWebview(context: vscode.ExtensionContext) {
168167
169168 return workspaceViewPanel ;
170169}
170+
171+ // read workspace.json file
172+ export function readWorkspaceJson ( ) {
173+ let workspaceJson = path . join ( getWorkspaceFolder ( ) + '/' + '.vscode' , 'workspace.json' ) ;
174+ if ( fs . existsSync ( workspaceJson ) ) {
175+ return JSON . parse ( fs . readFileSync ( workspaceJson , 'utf8' ) ) ;
176+ }
177+ return null ;
178+ }
179+
180+ // write workspace.json file
181+ export function writeWorkspaceJson ( data : any ) {
182+ let workspaceJson = path . join ( getWorkspaceFolder ( ) + '/' + '.vscode' , 'workspace.json' ) ;
183+ fs . writeFileSync ( workspaceJson , JSON . stringify ( data , null , 4 ) , 'utf8' ) ;
184+ }
185+
186+ // set current project in workspace.json file
187+ export function setCurrentProjectInWorkspace ( project : string ) {
188+ let workspaceJson = readWorkspaceJson ( ) ;
189+ if ( workspaceJson ) {
190+ workspaceJson . currentProject = project ;
191+ writeWorkspaceJson ( workspaceJson ) ;
192+ }
193+ }
194+
195+ // get current project from workspace.json file
196+ export function getCurrentProjectInWorkspace ( ) {
197+ let workspaceJson = readWorkspaceJson ( ) ;
198+ if ( workspaceJson ) {
199+ return workspaceJson . currentProject ;
200+ }
201+ return null ;
202+ }
0 commit comments