ajout de Sheebr + support de shutdown + auto install kernel

This commit is contained in:
Marc
2021-11-27 13:51:55 +01:00
parent a40aa1c153
commit 7480c8efc8
30 changed files with 1743 additions and 45 deletions
+3
View File
@@ -0,0 +1,3 @@
if(process.argv.length >= 3){
console.log(process.argv[3])
}
+14
View File
@@ -0,0 +1,14 @@
const fs = require('fs')
let path = process.argv[3] ?? '.'
let optionsArray = process.argv.slice(4) ?? []
let options = []
for(let option of optionsArray){
if(option.startwith("--")) options.push(option.slice)
else if(options.startwith("-")) options.push += option.slice(1).split('').map(el => {return '-' + el})
}
const files = fs.readdirSync(path);
const nonHiddenFiles = files.filter(file => file[0] != '.')
console.log(options.includes('-a') ? files.join(' ') : nonHiddenFiles.join(' '))
+6
View File
@@ -0,0 +1,6 @@
const fs = require('fs')
if(process.argv.length >= 3){
fs.mkdir(process.argv[3], { recursive: true }, (err) => {
if (err) throw err;
});
}
+1
View File
@@ -0,0 +1 @@
console.log(process.cwd())
+60
View File
@@ -0,0 +1,60 @@
const { Lexer } = require('../lib/sheebr/lexer')
const { getline } = require('../lib/sheebr/utils')
const fs = require('fs')
const environment = require('../lib/sheebr/environment')
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout,
terminal: false
});
const readlineSync = require('../lib/sheebr/readLineSync')
let execSync = require('child_process').execSync
let current_dir = process.cwd()
start()
async function start(){
while(true){
input = await getline("sheebr> ");
if(input == "exit") break;
else evaluate(input);
}
}
function evaluate(input){
let lexer = new Lexer(input)
args = lexer.scanTokens()
if(args[0] == "cd"){
if(args.length != 2){
console.log("Wrong number of arguments"); return;}
if(!fs.existsSync(args[1])){console.log("Folder does not exist"); return;}
current_dir = args[1][0] == "/" ? args[1] : current_dir + '/' + args[1];
console.log(current_dir)
return;
}
// check for all folders in path
let found = false;
for(let path of environment.path){
let tobreak = false;
const files = fs.readdirSync(path);
if(files.includes(`${args[0]}.js`)){
found = true;
script = execSync(`node ${path + '/' + args[0]}.js ${args.map(arg => {return arg.includes(' ') ? `"${arg}"` : arg}).join(' ')}`, {cwd: current_dir});
process.stdout.write(script)
tobreak = true;
}
if(tobreak) break;
}
if(!found){
console.log("Program not found")
}
let program = args[0]
}
+4
View File
@@ -0,0 +1,4 @@
const fs = require('fs')
if(process.argv.length >= 3){
fs.openSync(process.argv[3], 'w');
}