Module: Template
- Included in:
- Exer::Make
- Defined in:
- lib/exer/template/main.rb,
lib/exer/template/functions.rb
Overview
Set of predefined functions in go language. Consist of function definitions, and main function that run it.
Constant Summary collapse
- MAIN_FUNCTION =
Main functions in golang file.
{ binary_exist: 'BinaryExist("COMMAND")', ruby_exist: 'RubyExist()', ruby_exec: 'RubyExec("COMMAND")', gem_install: 'GemInstall("COMMAND")', gem_run: 'GemRun("COMMAND")' }.freeze
- WAIT_FOR_ENTER =
Wait for user to press enter before exit. Useful only when you install gem without running.
"\n fmt.Println(\"\")\n fmt.Println(\"Press [ENTER] key to exit\")\nvar reader = bufio.NewReader(os.Stdin)\nreader.ReadString('\\\\n')\n"- GO_PACKAGES =
"package main\nimport (\"bytes\"; \"fmt\"; \"os\"; \"os/exec\"; \"syscall\"; \"runtime\";)\n"- BINARY_EXIST =
"func BinaryExist(binary string) (string, error) {\n path, err := exec.LookPath(binary)\n if err == nil {\n fmt.Println(\"[+] Found\", binary, \"binary:\", path)\n } else {\n fmt.Println(\"[-]\", binary, \"binary not found in path\")\n }\n return path, err\n}\n"- RUBY_EXIST =
"func RubyExist() (string, error) {\n rbin, rerr := BinaryExist(\"ruby\")\n\n if rerr == nil {\n RubyExec(\"print '[+] Ruby Version: ' + RUBY_VERSION\")\n RubyExec(\"print '[+] Ruby Platform: ' + RUBY_PLATFORM\")\n } else {\n fmt.Println(\"Error:\", rerr)\n os.Exit(1)\n }\n return rbin, rerr\n}\n"- RUBY_EXEC =
"func RubyExec(command string) (string, string, error) {\n var stdout bytes.Buffer\n var stderr bytes.Buffer\n\n cmd := exec.Command(\"ruby\", \"-e\", command)\n\n cmd.Stdout = &stdout\n cmd.Stderr = &stderr\n err := cmd.Run()\n\n sout := stdout.String()\n serr := stderr.String()\n\n if err == nil {\n fmt.Println(sout)\n } else {\n fmt.Println(\"Error:\", serr, err)\n }\n return sout, serr, err\n}\n"- GEM_INSTALL =
"func GemInstall(gem string) (string, string, error) {\n _, gerr := exec.LookPath(\"gem\")\n if gerr != nil { fmt.Println(gerr); os.Exit(1) }\n\n var stdout bytes.Buffer\n var stderr bytes.Buffer\n\n cmd := exec.Command(\"gem\", \"install\", gem, \"--no-doc\")\n\n cmd.Stdout = &stdout\n cmd.Stderr = &stderr\n err := cmd.Run()\n\n sout := stdout.String()\n serr := stderr.String()\n\n if err == nil {\n fmt.Println(sout)\n } else {\n fmt.Println(\"Error:\", serr, err)\n }\n return sout, serr, err\n}\n"- GEM_RUN =
"func GemRun(command string) {\n envs := os.Environ()\n cpath, cerr := BinaryExist(command)\n if cerr != nil { GemInstall(command); cpath, cerr = BinaryExist(command) }\n\n os := runtime.GOOS\n switch os {\n case \"windows\":\n cmd := exec.Command(\"cmd\", \"/c\", \"start\", cpath)\n err := cmd.Run()\n if err != nil { fmt.Println(err) }\n case \"linux\", \"darwin\":\n com := []string{command}\n err := syscall.Exec(cpath, com, envs)\n if err != nil { fmt.Println(err) }\n }\n}\n"- FUNCTION =
Predefined functions in golang. go_packages always go first.
{ go_packages: GO_PACKAGES, binary_exist: BINARY_EXIST, ruby_exist: RUBY_EXIST, ruby_exec: RUBY_EXEC, gem_install: GEM_INSTALL, gem_run: GEM_RUN }.freeze