const fetch = require('node-fetch')
const fs = require("fs")
const util = require("util")
const readFile = util.promisify(fs.readFile)
const path = require("path")
const defaultOpts = {
"userArguments":"-O3", "filters":
{"binary":false,
"commentOnly":true,
"demangle":true,
"directives":true,
"execute":false,
"intel":true,
"labels":true,
"lables":true,
"libraryCode":false,
"trim":false
}
}
async function read_C_source(path) {
return await readFile(path, "utf-8")
}
function JSON_POST_req(data, options) {
const config = fs.readFileSync(options, "utf-8")
var dummy = {"source": data, "options": JSON.parse(config)}
/* if no config found, then run default
var dummy = {"source": data, "options": defaultOpts}
*/
return {method:"POST", body:JSON.stringify(dummy), headers:{"Content-Type":"application/json"}}
}
function compiler_explorer(path, options) {
read_C_source(path).then(data=>
JSON_POST_req(data, options)).then(post_arg=>
fetch("https://godbolt.org/api/compiler/g92/compile", post_arg)).then(res=>
res.text()).then(body=>
console.log(body.split("\n").slice(1,body.split("\n").length).join("\n"))).catch(error=>
console.log(error))
}
if (process.argv.length < 3) {console.log("you did not specify enough args. needs two. path to source code and path to options to pass to compiler explorer.")}
else {compiler_explorer(process.argv[2], process.argv[3])}