tvl-depot/tools/run/main.go
William Carroll fabf1c9334 Tidy up structure of briefcase
I had a spare fifteen minutes and decided that I should tidy up my
monorepo. The work of tidying up is not finished; this is a small step in the
right direction.

TL;DR
- Created a tools directory
- Created a scratch directory (see README.md for more information)
- Added README.md to third_party
- Renamed delete_dotfile_symlinks -> symlinkManager
- Packaged symlinkManager as an executable symlink-mgr using buildGo
2020-02-12 16:58:29 +00:00

49 lines
1.1 KiB
Go

package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
"utils"
)
func main() {
if len(os.Args) != 2 {
log.Fatal("You can only call run with a single file at a time.")
}
rulesPath := utils.Resolve("run.json", []string{"/home/wpcarro/.config/run/run.json"})
b, err := ioutil.ReadFile(rulesPath)
if err != nil {
log.Fatal("Could not locate a run.json file: ", err)
}
rules := map[string]string{}
err = json.Unmarshal(b, &rules)
if err != nil {
log.Fatal("Could not decode run.json as JSON: ", err)
}
fileName := os.Args[1]
ext := filepath.Ext(fileName)
cmd, ok := rules[ext]
if !ok {
log.Fatalf("No rules for extension, %s, have been defined.", ext)
}
// TODO(wpcarro): Support more sophisticated parsing than just string
// splitting. To handle 'cases like this'.
tokens := strings.Split(strings.Replace(cmd, "$file", fileName, 1), " ")
c := exec.Command(tokens[0], tokens[1:]...)
err = c.Start()
// TODO(wpcarro): Forward STDERR and STDOUT.
if err != nil {
log.Fatal(err)
}
fmt.Println(c.Wait())
}