- This library works as a wrapper over the compilers installed in your system.
- It provides APIs to execute programs by spawning child processes.
- It has built in supports for types.
- It can work with
async/await
andpromises
.
- C
- Cpp
- Java
- JavaScript(Node.js env)
- Python
The following should be installed on your machine and be added to the path.
Language | Software |
---|---|
C | gcc |
C++ | gcc |
Java | jdk or jre |
Python | python |
JavaScript(in node.js environment) | node.js |
You can install it by using npm
like below.
npm install compile-run --save
It have 5 modules each for a language containing namely.
const {c, cpp, node, python, java} = require('compile-run');
Each module have 2 functions :-
This enables you to run a file and takes filepath as an argument with options and callback as optional arguments.
This enables you to directly execute a source code in a stored in a string. It takes source code as an argument with options and callback as optional arguments.
let resultPromise = cpp.runFile('E:\\abcd.cpp', { stdin:'3\n2 '});
resultPromise
.then(result => {
console.log(result);//result object
})
.catch(err => {
console.log(err);
});
const sourcecode = `print("Hell0 W0rld!")`;
let resultPromise = python.runSource(sourcecode);
resultPromise
.then(result => {
console.log(result);
})
.catch(err => {
console.log(err);
});
You can also use callback by passing it like -
- with options
cpp.runFile('E:\\abcd.cpp', { stdin:'3\n2 '}, (err, result) => {
if(err){
console.log(err);
}
else{
console.log(result);
}
});
- without options
cpp.runFile('E:\\abcd.cpp', (err, result) => {
if(err){
console.log(err);
}
else{
console.log(result);
}
});
Result is an object with the following keys:-
stdout
<string> - stdout of the program execution. For empty stdout an empty string is returned.stderr
<string> - stderr of the program execution, compilation or if public class name is not found in provided source string(In java). For empty stderr empty string is returned.exitCode
<number> - exit code of the program.errorType
<string|undefined> - It is set to the below values if there is some stderr or in case of a non-zero exitCode.'pre-compile-time'
- Only in case ofjava
. Can be arised due to invalid public class name if usingrunSource
forjava
.'compile-time'
- If some error has occured at the compile time.'run-time'
- If the error has occured at the run time.
API's offer an optional options object which has following keys:-
stdin
<string> - Input/stdin you want to pass to the program.timeout
<number> - timeout for program execution in milliseconds. Default is 3000 milliseconds.compileTimeout
- timeout during compilation for c, cpp, java in milliseconds. Default is 3000 milliseconds. Would be ignored if passed for node or python
The versions < 2.x.x have been deprecated due to inconsistencies so its recommended to use version > 2.0.0.
You can find compile run version 1.x.x at https://github.com/vibhor1997a/compile-run.