Skip to content
This repository was archived by the owner on Jan 17, 2021. It is now read-only.

Commit bf1da12

Browse files
committed
Add insiders flag
1 parent b2ddce6 commit bf1da12

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

main.go

+22-20
Original file line numberDiff line numberDiff line change
@@ -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 = Sprintf("%s/Code - Insiders/User/", basePath)
318+
} else {
319+
path = 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 = Sprintf("%s/.vscode-insiders/extensions/", basePath)
337+
} else {
338+
path = Sprintf("%s/.vscode/extensions/", basePath)
337339
}
338340

339341
return filepath.Clean(path), nil

0 commit comments

Comments
 (0)