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

Adding git bash support, closes #94 #124

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ vendor
bin
.vscode
sshcode
sshcode.exe
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ We currently support:
- Linux
- MacOS
- WSL
- Windows Git Bash (MINGW64) - Requires [rsynch for Windows](http://repo.msys2.org/msys/x86_64/rsync-3.1.3-1-x86_64.pkg.tar.xz)

For the remote server, we currently only support Linux `x86_64` (64-bit)
servers with `glibc`. `musl` libc (which is most notably used by Alpine Linux)
Expand Down
30 changes: 30 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import (
"fmt"
"math/rand"
"os"
"os/user"
"path/filepath"
"runtime"
"strings"
"time"

Expand Down Expand Up @@ -77,6 +80,12 @@ func (c *rootCmd) Run(fl *flag.FlagSet) {
dir = "~"
}

// Get linux relative path if on windows
if runtime.GOOS == "windows" {
dir = relativeWindowsPath(dir)
fmt.Printf("relative path is %s\n", dir)
}

err := sshCode(host, dir, options{
skipSync: c.skipSync,
sshFlags: c.sshFlags,
Expand Down Expand Up @@ -112,3 +121,24 @@ Arguments:
helpTab,
)
}

func relativeWindowsPath(dir string) string {
fmt.Printf("Received '%s'\n", dir)
usr, err := user.Current()
if err != nil {
fmt.Printf("Could not get user: %v", err)
return dir
}
rel, err := filepath.Rel(usr.HomeDir, dir)
if err != nil {
return dir
}
rel = "~/" + filepath.ToSlash(rel)
return rel
}

func gitbashWindowsDir(dir string) (res string) {
res = filepath.ToSlash(dir)
res = "/" + strings.Replace(res, ":", "", -1)
return res
}
6 changes: 6 additions & 0 deletions settings.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ func configDir() (string, error) {
path = os.ExpandEnv("$HOME/.config/Code/User/")
case "darwin":
path = os.ExpandEnv("$HOME/Library/Application Support/Code/User/")
case "windows":
// Can't use the filepath.Clean function to keep Linux format path that works well with gitbash
return gitbashWindowsDir(os.ExpandEnv("$HOME/.config/Code/User")), nil
default:
return "", xerrors.Errorf("unsupported platform: %s", runtime.GOOS)
}
Expand All @@ -39,6 +42,9 @@ func extensionsDir() (string, error) {
switch runtime.GOOS {
case "linux", "darwin":
path = os.ExpandEnv("$HOME/.vscode/extensions/")
case "windows":
// Can't use the filepath.Clean function to keep Linux format path that works well with gitbash
return gitbashWindowsDir(os.ExpandEnv("$HOME/.vscode/extensions")), nil
default:
return "", xerrors.Errorf("unsupported platform: %s", runtime.GOOS)
}
Expand Down
6 changes: 4 additions & 2 deletions sshcode.go
Original file line number Diff line number Diff line change
Expand Up @@ -490,8 +490,10 @@ wget -N https://codesrv-ci.cdr.sh/latest-linux
ln latest-linux %v
chmod +x %v`,
codeServerPath,
filepath.Dir(codeServerPath),
filepath.Dir(codeServerPath),
filepath.ToSlash(filepath.Dir(codeServerPath)),
filepath.ToSlash(filepath.Dir(codeServerPath)),
// filepath.Dir(codeServerPath),
// filepath.Dir(codeServerPath),
codeServerPath,
codeServerPath,
codeServerPath,
Expand Down