go-code-runner, v1.0
Posted on

The library that implements the compiling and running of a code written in the Go programming language and running of a test case set for the compiled code (i.e. the executable file).
Major version. Implementing of the compiling and running of a code written in the Go programming language.
Features
- saving of a code to a temporary file:
- storing of the temporary file with the code to an individual temporary directory;
- compiling of a code written in the Go programming language:
- automatic importing of the packages used in the code;
- enriching of an error of the external command running by an output from the stderr stream;
- running of the compiled code (i.e. the executable file):
- passing of a custom input as the stdin stream;
- returning of an output from the stdout stream;
- enriching of an error of the external command running by an output from the stderr stream.
Installation
Prepare the directory:
$ mkdir --parents "$(go env GOPATH)/src/github.com/thewizardplusplus/"
$ cd "$(go env GOPATH)/src/github.com/thewizardplusplus/"
Clone this repository:
$ git clone https://github.com/thewizardplusplus/go-code-runner.git
$ cd go-code-runner
Install dependencies with the dep tool:
$ dep ensure -vendor-only
Examples
package main
import (
"fmt"
"log"
"os"
"path/filepath"
coderunner "github.com/thewizardplusplus/go-code-runner"
)
func main() {
const code = `
package main
func main() {
var x, y int
fmt.Scan(&x, &y)
fmt.Println(x + y)
}
`
pathToCode, err := coderunner.SaveTemporaryCode(code)
if err != nil {
log.Fatal(err)
}
defer os.RemoveAll(filepath.Dir(pathToCode)) // nolint: errcheck
pathToExecutable, err := coderunner.CompileCode(pathToCode)
if err != nil {
log.Fatal(err)
}
output, err := coderunner.RunCode(pathToExecutable, "2 3")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%q\n", output)
// Output:
// "5\n"
}
Repository
Link: https://github.com/thewizardplusplus/go-code-runner/tree/v1.0.
Content: code.
License: MIT.