@@ -30,6 +30,7 @@ func main() {
30
30
skipSyncFlag = flag .Bool ("skipsync" , false , "skip syncing local settings and extensions to remote host" )
31
31
sshFlags = flag .String ("ssh-flags" , "" , "custom SSH flags" )
32
32
syncBack = flag .Bool ("b" , false , "sync extensions back on termination" )
33
+ insiders = flag .Bool ("insiders" , false , "use configs and extensions from VSCode Insiders" )
33
34
)
34
35
35
36
flag .Usage = func () {
@@ -87,14 +88,14 @@ chmod +x ` + codeServerPath
87
88
if ! * skipSyncFlag {
88
89
start := time .Now ()
89
90
flog .Info ("syncing settings" )
90
- err = syncUserSettings (* sshFlags , host , false )
91
+ err = syncUserSettings (* sshFlags , host , false , * insiders )
91
92
if err != nil {
92
93
flog .Fatal ("failed to sync settings: %v" , err )
93
94
}
94
95
flog .Info ("synced settings in %s" , time .Since (start ))
95
96
96
97
flog .Info ("syncing extensions" )
97
- err = syncExtensions (* sshFlags , host , false )
98
+ err = syncExtensions (* sshFlags , host , false , * insiders )
98
99
if err != nil {
99
100
flog .Fatal ("failed to sync extensions: %v" , err )
100
101
}
@@ -164,12 +165,12 @@ chmod +x ` + codeServerPath
164
165
165
166
flog .Info ("synchronizing VS Code back to local" )
166
167
167
- err = syncExtensions (* sshFlags , host , true )
168
+ err = syncExtensions (* sshFlags , host , true , * insiders )
168
169
if err != nil {
169
170
flog .Fatal ("failed to sync extensions back: %v" , err )
170
171
}
171
172
172
- err = syncUserSettings (* sshFlags , host , true )
173
+ err = syncUserSettings (* sshFlags , host , true , * insiders )
173
174
if err != nil {
174
175
flog .Fatal ("failed to user settigns extensions back: %v" , err )
175
176
}
@@ -237,8 +238,8 @@ func randomPort() (string, error) {
237
238
return "" , xerrors .Errorf ("max number of tries exceeded: %d" , maxTries )
238
239
}
239
240
240
- func syncUserSettings (sshFlags string , host string , back bool ) error {
241
- localConfDir , err := configDir ()
241
+ func syncUserSettings (sshFlags string , host string , back bool , insiders bool ) error {
242
+ localConfDir , err := configDir (insiders )
242
243
if err != nil {
243
244
return err
244
245
}
@@ -257,8 +258,8 @@ func syncUserSettings(sshFlags string, host string, back bool) error {
257
258
return rsync (src , dest , sshFlags , "workspaceStorage" , "logs" , "CachedData" )
258
259
}
259
260
260
- func syncExtensions (sshFlags string , host string , back bool ) error {
261
- localExtensionsDir , err := extensionsDir ()
261
+ func syncExtensions (sshFlags string , host string , back bool , insiders bool ) error {
262
+ localExtensionsDir , err := extensionsDir (insiders )
262
263
if err != nil {
263
264
return err
264
265
}
@@ -300,40 +301,41 @@ func rsync(src string, dest string, sshFlags string, excludePaths ...string) err
300
301
return nil
301
302
}
302
303
303
- func configDir () (string , error ) {
304
+ func configDir (insiders bool ) (string , error ) {
304
305
var path string
305
- var insiderPath string
306
+ var basePath string
306
307
switch runtime .GOOS {
307
308
case "linux" :
308
- path = os .ExpandEnv ("$HOME/.config/Code/User/" )
309
- insiderPath = os .ExpandEnv ("$HOME/.config/Code - Insiders/User/" )
309
+ basePath = os .ExpandEnv ("$HOME/.config" )
310
310
case "darwin" :
311
- path = os .ExpandEnv ("$HOME/Library/Application Support/Code/User/" )
312
- insiderPath = os .ExpandEnv ("$HOME/Library/Application Support/Code - Insiders/User/" )
311
+ basePath = os .ExpandEnv ("$HOME/Library/Application Support" )
313
312
default :
314
313
return "" , xerrors .Errorf ("unsupported platform: %s" , runtime .GOOS )
315
314
}
316
315
317
- if pathExists (insiderPath ) {
318
- return filepath .Clean (insiderPath ), nil
316
+ if insiders {
317
+ path = fmt .Sprintf ("%s/Code - Insiders/User/" , basePath )
318
+ } else {
319
+ path = fmt .Sprintf ("%s/Code/User/" , basePath )
319
320
}
320
321
321
322
return filepath .Clean (path ), nil
322
323
}
323
324
324
- func extensionsDir () (string , error ) {
325
+ func extensionsDir (insiders bool ) (string , error ) {
325
326
var path string
326
- var insiderPath string
327
+ var basePath string
327
328
switch runtime .GOOS {
328
329
case "linux" , "darwin" :
329
- path = os .ExpandEnv ("$HOME/.vscode/extensions/" )
330
- insiderPath = os .ExpandEnv ("$HOME/.vscode-insiders/extensions/" )
330
+ basePath = os .ExpandEnv ("$HOME" )
331
331
default :
332
332
return "" , xerrors .Errorf ("unsupported platform: %s" , runtime .GOOS )
333
333
}
334
334
335
- if pathExists (insiderPath ) {
336
- return filepath .Clean (insiderPath ), nil
335
+ if insiders {
336
+ path = fmt .Sprintf ("%s/.vscode-insiders/extensions/" , basePath )
337
+ } else {
338
+ path = fmt .Sprintf ("%s/.vscode/extensions/" , basePath )
337
339
}
338
340
339
341
return filepath .Clean (path ), nil
0 commit comments