Use Code Insiders by orenc17 · Pull Request #30 · coder/sshcode
flag.Usage = func() { fmt.Printf(`Usage: [-skipsync] %v HOST [DIR] [SSH ARGS...] fmt.Printf(`Usage: [-skipsync] [-insiders] %v HOST [DIR] [SSH ARGS...]
Start code-server over SSH. More info: https://github.com/codercom/sshcode
flog.Info("syncing extensions") err = syncExtensions(*sshFlags, host, false) err = syncExtensions(*sshFlags, host, false, *insiders) if err != nil { flog.Fatal("failed to sync extensions: %v", err) }
flog.Info("synchronizing VS Code back to local")
err = syncExtensions(*sshFlags, host, true) err = syncExtensions(*sshFlags, host, true, *insiders) if err != nil { flog.Fatal("failed to sync extensions back: %v", err) }
err = syncUserSettings(*sshFlags, host, true) err = syncUserSettings(*sshFlags, host, true, *insiders) if err != nil { flog.Fatal("failed to user settigns extensions back: %v", err) }
func syncUserSettings(sshFlags string, host string, back bool) error { localConfDir, err := configDir() func syncUserSettings(sshFlags string, host string, back bool, insiders bool) error { localConfDir, err := configDir(insiders) if err != nil { return err }
func syncExtensions(sshFlags string, host string, back bool) error { localExtensionsDir, err := extensionsDir() func syncExtensions(sshFlags string, host string, back bool, insiders bool) error { localExtensionsDir, err := extensionsDir(insiders) if err != nil { return err }
func configDir() (string, error) { var path string func configDir(insiders bool) (string, error) { var basePath string switch runtime.GOOS { case "linux": path = os.ExpandEnv("$HOME/.config/Code/User/") basePath = os.ExpandEnv("$HOME/.config") case "darwin": path = os.ExpandEnv("$HOME/Library/Application Support/Code/User/") basePath = os.ExpandEnv("$HOME/Library/Application Support") default: return "", xerrors.Errorf("unsupported platform: %s", runtime.GOOS) } return filepath.Clean(path), nil
if insiders { return filepath.Join(basePath, "Code - Insiders", "User"), nil }
return filepath.Join(basePath, "Code", "User"), nil }
func extensionsDir() (string, error) { var path string func extensionsDir(insiders bool) (string, error) { var basePath string switch runtime.GOOS { case "linux", "darwin": path = os.ExpandEnv("$HOME/.vscode/extensions/") basePath = os.ExpandEnv("$HOME") default: return "", xerrors.Errorf("unsupported platform: %s", runtime.GOOS) } return filepath.Clean(path), nil
if insiders { return filepath.Join(basePath,".vscode-insiders", "extensions"), nil }
return filepath.Join(basePath, ".vscode", "extensions"), nil }