Files
openide/native/repair-utility/helpers/java_runner.go
konstantin.annikov 01f61d2d78 [Repair Utility] move to community
GitOrigin-RevId: af0c92f448088c53578857b0e1b84b95c2664a4e
2022-11-09 16:13:29 +00:00

43 lines
1.2 KiB
Go

package helpers
import (
"io/ioutil"
"os"
"os/exec"
"repair/logger"
"runtime"
"strings"
)
func GetJavaProperty(javaBinary string, property string) (output string, err error) {
javaText := "class Main {" +
"public static void main(String[] ideBinary) {" +
"System.out.print(System.getProperty(\"" + property + "\"));" +
"}" +
"}"
return RunJavaProgram(javaBinary, javaText)
}
func RunJavaProgram(javaBinary string, javaText string) (output string, err error) {
if runtime.GOOS == "windows" {
javaBinary = strings.TrimRight(javaBinary, ".exe")
}
javacBinary := javaBinary + "c"
if runtime.GOOS == "windows" {
javacBinary = javacBinary + ".exe"
}
className := "Main"
err = ioutil.WriteFile(className+".java", []byte(javaText), 0644)
logger.ExitWithExceptionOnError(err)
_, err = exec.Command(javacBinary, className+".java").CombinedOutput()
logger.ExitWithExceptionOnError(err)
outputBytes, err := exec.Command(javaBinary, className).CombinedOutput()
logger.ExitWithExceptionOnError(err)
output = string(outputBytes)
err = os.Remove(className + ".class")
logger.WriteToLogOnError(err, logger.DebugLogger)
err = os.Remove(className + ".java")
logger.WriteToLogOnError(err, logger.DebugLogger)
return output, nil
}