import fs from 'fs' import Cp from 'child_process' import Path from 'path' import Os from 'os' class Environment{ static init(){ if(Environment.$init) return var path= process.env.HOME || process.env.USERPROFILE path += "/.vox" if(!fs.existsSync(path)) fs.mkdirSync(path) Environment.path= path Environment.npmpath= Path.join(Environment.path, "npm") Environment.installedPath=undefined Environment.$init= true } static get globalPath(){ var p= Path.join("/usr/local/", ".vox") if(!fs.existsSync(p)) fs.mkdirSync(p) return p } /* static configurePath(){ // Esto configura el global path, puesto que ya no se va a usar sudo // para la instalación ... if(os.platform()!=="win32"){ Environment.init() var path= Environment.globalPath var result= Cp.spawnSync("npm", ["config", "set", "prefix", path]) if(result.stderr.toString()) throw new core.System.Exception(result.stderr.toString()) var str= 'export PATH=~/.vox/go/bin:$PATH' var file= Path.join(process.env.HOME, ".profile") var content= fs.readFileSync(file,'utf8') if(content.indexOf(str)<0) content+="\n"+str result= Cp.spawnSync("source", [file]) if(result.stderr.toString()) throw new core.System.Exception(result.stderr.toString()) } } */ static checkInstalled(){ var f= Environment.path + "/npm-installed", p if(fs.existsSync(f)){ p= fs.readFileSync(f,'utf8') if(p){ Environment.installedPath= p return true } } return false } static getInstalledNpm(){ return require(Environment.installedPath) } static getNpm(/* function */ events){ Environment.init() if(Environment.checkInstalled()) return Environment.getInstalledNpm() var ev={}, cpNpm ev.firsttime= true events&&events(ev) /* cpNpm= Path.normalize(__dirname + "/../npm.vcf2") core.VW.VcfUtil.decompressToFolder(cpNpm, Environment.npmpath, events) fs.writeFileSync(Environment.path + "/npm-installed","") if(!Environment.checkInstalled()) throw new core.System.Exception("No se pudo obtener npm") return Environment.getInstalledNpm() */ // James! // Ahora usa el que viene instalado por defecto con nodejs var result if(Os.platform()=="win32") result= Cp.spawnSync("cmd", ["/C", "npm"]) else result= Cp.spawnSync("npm") if(result.error) throw new core.System.Exception(result.error.toString()) if(result.stderr && result.stderr.toString()) throw new core.System.Exception(result.stderr.toString()) var pathNpm= result.stdout.toString().split("\n") var p2= pathNpm.pop() if(!p2) p2=pathNpm.pop() p2= p2.split(" ") pathNpm= p2.slice(1).join(" ") var f= Environment.path + "/npm-installed" fs.writeFileSync(f, pathNpm) Environment.checkInstalled() return Environment.getInstalledNpm() } } export default Environment