@@ -30,6 +30,7 @@ func main() {
3030 skipSyncFlag = flag .Bool ("skipsync" , false , "skip syncing local settings and extensions to remote host" )
3131 sshFlags = flag .String ("ssh-flags" , "" , "custom SSH flags" )
3232 syncBack = flag .Bool ("b" , false , "sync extensions back on termination" )
33+ insiders = flag .Bool ("insiders" , false , "use configs and extensions from VSCode Insiders" )
3334 )
3435
3536 flag .Usage = func () {
@@ -87,14 +88,14 @@ chmod +x ` + codeServerPath
8788 if ! * skipSyncFlag {
8889 start := time .Now ()
8990 flog .Info ("syncing settings" )
90- err = syncUserSettings (* sshFlags , host , false )
91+ err = syncUserSettings (* sshFlags , host , false , * insiders )
9192 if err != nil {
9293 flog .Fatal ("failed to sync settings: %v" , err )
9394 }
9495 flog .Info ("synced settings in %s" , time .Since (start ))
9596
9697 flog .Info ("syncing extensions" )
97- err = syncExtensions (* sshFlags , host , false )
98+ err = syncExtensions (* sshFlags , host , false , * insiders )
9899 if err != nil {
99100 flog .Fatal ("failed to sync extensions: %v" , err )
100101 }
@@ -164,12 +165,12 @@ chmod +x ` + codeServerPath
164165
165166 flog .Info ("synchronizing VS Code back to local" )
166167
167- err = syncExtensions (* sshFlags , host , true )
168+ err = syncExtensions (* sshFlags , host , true , * insiders )
168169 if err != nil {
169170 flog .Fatal ("failed to sync extensions back: %v" , err )
170171 }
171172
172- err = syncUserSettings (* sshFlags , host , true )
173+ err = syncUserSettings (* sshFlags , host , true , * insiders )
173174 if err != nil {
174175 flog .Fatal ("failed to user settigns extensions back: %v" , err )
175176 }
@@ -237,7 +238,7 @@ func randomPort() (string, error) {
237238 return "" , xerrors .Errorf ("max number of tries exceeded: %d" , maxTries )
238239}
239240
240- func syncUserSettings (sshFlags string , host string , back bool ) error {
241+ func syncUserSettings (sshFlags string , host string , back bool , insiders bool ) error {
241242 localConfDir , err := configDir ()
242243 if err != nil {
243244 return err
@@ -257,7 +258,7 @@ func syncUserSettings(sshFlags string, host string, back bool) error {
257258 return rsync (src , dest , sshFlags , "workspaceStorage" , "logs" , "CachedData" )
258259}
259260
260- func syncExtensions (sshFlags string , host string , back bool ) error {
261+ func syncExtensions (sshFlags string , host string , back bool , insiders bool ) error {
261262 localExtensionsDir , err := extensionsDir ()
262263 if err != nil {
263264 return err
@@ -300,40 +301,41 @@ func rsync(src string, dest string, sshFlags string, excludePaths ...string) err
300301 return nil
301302}
302303
303- func configDir () (string , error ) {
304+ func configDir (insiders bool ) (string , error ) {
304305 var path string
305- var insiderPath string
306+ var basePath string
306307 switch runtime .GOOS {
307308 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" )
310310 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" )
313312 default :
314313 return "" , xerrors .Errorf ("unsupported platform: %s" , runtime .GOOS )
315314 }
316315
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 )
319320 }
320321
321322 return filepath .Clean (path ), nil
322323}
323324
324- func extensionsDir () (string , error ) {
325+ func extensionsDir (insiders bool ) (string , error ) {
325326 var path string
326- var insiderPath string
327+ var basePath string
327328 switch runtime .GOOS {
328329 case "linux" , "darwin" :
329- path = os .ExpandEnv ("$HOME/.vscode/extensions/" )
330- insiderPath = os .ExpandEnv ("$HOME/.vscode-insiders/extensions/" )
330+ basePath = os .ExpandEnv ("$HOME" )
331331 default :
332332 return "" , xerrors .Errorf ("unsupported platform: %s" , runtime .GOOS )
333333 }
334334
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 )
337339 }
338340
339341 return filepath .Clean (path ), nil
0 commit comments