Skip to content

Instantly share code, notes, and snippets.

@mattn
Created September 18, 2015 02:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mattn/e947a07c4ae42c2faae7 to your computer and use it in GitHub Desktop.
Save mattn/e947a07c4ae42c2faae7 to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
"strings"
"syscall"
)
var (
prefix = `C:\dev\rakudo\install`
)
func main() {
prog, err := filepath.Abs(os.Args[0])
if err != nil {
prog, err = exec.LookPath(os.Args[0])
if err != nil {
prog = os.Args[0]
}
}
if pos := strings.Index(prog, `\bin\`); pos != -1 {
prefix = prog[:pos]
}
ext := filepath.Ext(prog)
args := []string{
prefix + `\bin\moar.exe`,
`--execname=` + prog[0:len(prog)-len(ext)] + ``,
`--libpath=` + prefix + `\share\nqp\lib`,
`--libpath=` + prefix + `\share\perl6\lib`,
`--libpath=` + prefix + `\share\perl6\runtime`,
prefix + `\share\perl6\runtime\perl6.moarvm`,
}
args = append(args, os.Args[1:]...)
cmd := exec.Command(args[0], args[1:]...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.Env = os.Environ()
err = cmd.Run()
if err != nil {
fmt.Fprintf(os.Stderr, "%s: %v", prog, err)
}
if ps, ok := cmd.ProcessState.Sys().(syscall.WaitStatus); ok {
os.Exit(ps.ExitStatus())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment