submodule setup, resh draft

pull/1/head
Simon Let 7 years ago
parent c7426e948e
commit f1cb7bfc75
  1. 32
      Makefile
  2. 13
      src/bashrc.sh
  3. 67
      src/resh-collect.go

@ -1,10 +1,30 @@
SHELL=/bin/bash
build: submodules/bash-preexec/bash-preexec.sh build: submodules resh-collect
@echo "build"
install: build install: build $(HOME)/.resh $(HOME)/.resh/bin
@echo "install" cp submodules/bash-preexec/bash-preexec.sh ~/.bash-preexec.sh
cp src/bashrc.sh ~/.resh/bashrc
cp resh-collect ~/.resh/bin/
grep '[[ -f ~/.resh/bashrc ]] && source ~/.resh/bashrc' ~/.bashrc ||\
echo '[[ -f ~/.resh/bashrc ]] && source ~/.resh/bashrc' >> ~/.bashrc
grep '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' ~/.bashrc ||\
echo '[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh' >> ~/.bashrc
resh-collect: src/resh-collect.go
go build -o resh-collect src/resh-collect.go
$(HOME)/.resh:
mkdir $(HOME)/.resh
$(HOME)/.resh/bin:
mkdir $(HOME)/.resh/bin
.PHONY: submodules build install
submodules: submodules/bash-preexec/bash-preexec.sh
# this is always run and updates submodules
git submodule update --recursive
submodules/%: submodules/%:
-git submodule init git submodule init
git submodule update

@ -0,0 +1,13 @@
PATH=$PATH:~/.resh/bin
preexec() {
__RESH_PWD="$PWD"
__RESH_CMDLINE="$1"
}
precmd() {
__RESH_EXIT_CODE=$?
resh-collect $__RESH_EXIT_CODE "$PWD" "$__RESH_CMDLINE"
}

@ -0,0 +1,67 @@
package main
import (
"fmt"
"os"
"os/exec"
"log"
"strconv"
"strings"
)
type record struct {
CmdLine string
Pwd string
GitWorkTree string
Shell string
ExitCode int
//Logs string[]
}
func main() {
exitCode, err := strconv.Atoi(os.Args[1])
if err != nil {
// log this
log.Fatal("First arg is not a number! (expecting $?)", err)
}
pwd := os.Args[2]
cmdLine := os.Args[3]
rec := record{
CmdLine: cmdLine,
Pwd: pwd,
GitWorkTree: getGitDir(),
Shell: os.Getenv("SHELL"),
ExitCode: exitCode,
}
rec.send()
}
func getGitDir() string {
// assume we are in pwd
gitWorkTree := os.Getenv("GIT_WORK_TREE")
if gitWorkTree != "" {
return gitWorkTree
}
// we should look up the git directory ourselves
// OR leave it to resh daemon to not slow down user
out, err := exec.Command("git", "rev-parse", "--show-toplevel").Output()
if err != nil {
if exitError, ok := err.(*exec.ExitError); ok {
if exitError.ExitCode() == 128 {
return ""
}
log.Fatal("git cmd failed")
} else {
log.Fatal("git cmd failed w/o exit code")
}
}
return strings.TrimSuffix(string(out), "\n")
}
func (r record) send() {
fmt.Println("cmd:", r.CmdLine)
fmt.Println("pwd:", r.Pwd)
fmt.Println("git:", r.GitWorkTree)
fmt.Println("exit_code:", r.ExitCode)
}
Loading…
Cancel
Save