import fs from 'fs' import Path from 'path' import os from 'os' var platform= os.platform() var Package= core.VW.PackageManager /* import Linux from './Linux' import Win from './Win' import Osx from './Osx' */ class Installer{ static getInstaller(){ if(platform=="darwin"){ return new Package.Osx() } else if(platform=="win32"){ return new Package.Win() } else{ return new Package.Linux() } } loadConfig(path){ if(!fs.existsSync(path)) return null var stat= fs.statSync(path) var file= path if(!stat.isFile()) file= Path.join(path, "vox.config.json") if(fs.existsSync(file)){ var data= fs.readFileSync(file, 'utf8') data= JSON.parse(data) data.path= Path.dirname(file) this.installerConfig= data return data } } async generateIconsAsync(config, installConfig){ var tasks=[],conf for(var id in config.bin){ conf= config.bin[id] conf.uid= conf.id conf.id= id conf.execpath= Path.join(installConfig.binarypath, id) await this.generateIconAsync(conf,installConfig) } } generateIconAsync(){ // Método virtual } async generateAutoStarts(config, installConfig){ for(var id in config.bin){ var conf= config.bin[id] if(conf.onstart) await this.generateAutoStart(conf,installConfig) } } async install(/*string */ path, /*object */ options){ var config= this.loadConfig(path) if(config==null) return false options=options||{} var installConfig if(options.global) installConfig= this.getGlobalConfig() else installConfig= this.getLocalConfig() installConfig.global= options.global installConfig.path= path // Generate binaries ... this.generateBinaries(config, installConfig) // Generate icons await this.generateIconsAsync(config, installConfig) // Generate autoInicio await this.generateAutoStarts(config, installConfig) } } export default Installer