getPdf = Q.promise(function(resolve) { var pdf = file + '.pdf'; Q.nfcall(tool.office2pdf, file, pdf).then(function() { resolve(pdf); }); });
.fcall(function() { if (!doClean) return; console.log("Deleting build directory"); return Q.nfcall(rimraf, "build"); })
}).map(function (file) { return Q.nfcall(fs.readFile, repositoryDir + '/' + file, "utf-8").then(function (content) { return {fileName: file, content: content}; }) })
.then(function () { return Q.nfcall(fs.readFile, metaFile); })
function cpdf(action, args) { let command = `${cpdfBinPath} ${args}`; debug(`${action} with command ${command}`); return Q.nfcall(childProcess.exec, command); }
Pfs.prototype.pReadFile = function (file, options) { return Q.nfcall(fs.readFile, file, options); };
Q.allSettled(queries.map(function (query) { return Q.nfcall(db.query, query); })).then(function () {
function Project(e,n){this._config=defaultConfig(e),this._logger=n||new Logger,this._manager=new Manager(this._config,this._logger),this._options={}}var glob=require("glob"),path=require("path"),fs=require("graceful-fs"),Q=require("q"),mout=require("mout"),rimraf=require("rimraf"),endpointParser=require("bower-endpoint-parser"),Logger=require("bower-logger"),Manager=require("./Manager"),defaultConfig=require("../config"),semver=require("../util/semver"),md5=require("../util/md5"),createError=require("../util/createError"),readJson=require("../util/readJson"),validLink=require("../util/validLink"),scripts=require("./scripts");Project.prototype.install=function(e,n,t){var r=this,o=[],i={},s=[];return this._working?Q.reject(createError("Already working","EWORKING")):(this._options=n||{},this._config=t||{},this._working=!0,this._analyse().spread(function(n,t){if(!r._jsonFile&&0===e.length)throw createError("No bower.json present","ENOENT");return r.walkTree(t,function(e,n){e.incompatible?s.push(e):e.missing||e.different||r._config.force?o.push(e):i[n]=e},!0),e=e||[],e.forEach(function(e){e.newly=!0,o.push(e)}),r._bootstrap(o,i,s)}).then(function(){return r._manager.preinstall(r._json)}).then(function(){return r._manager.install(r._json)}).then(function(n){return(r._options.save||r._options.saveDev)&&e.forEach(function(e){var n;n=endpointParser.decomposed2json(e),r._options.save&&(r._json.dependencies=mout.object.mixIn(r._json.dependencies||{},n)),r._options.saveDev&&(r._json.devDependencies=mout.object.mixIn(r._json.devDependencies||{},n))}),r.saveJson().then(function(){return r._manager.postinstall(r._json).then(function(){return n})})}).fin(function(){r._installed=null,r._working=!1}))},Project.prototype.update=function(e,n){var t=this,r=[],o={},i=[];return this._working?Q.reject(createError("Already working","EWORKING")):(this._options=n||{},this._working=!0,this._analyse().spread(function(n,s,a){return e?(e.forEach(function(e){if(!a[e])throw createError("Package "+e+" is not installed","ENOTINS",{name:e})}),t.walkTree(s,function(n,t){return-1!==e.indexOf(t)?(n.linked?r.push.apply(r,mout.object.values(n.dependencies)):r.push(n),!1):void 0},!0),t.walkTree(s,function(e,n){e.missing||e.different?r.push(e):e.incompatible?i.push(e):o[n]=e},!0)):t.walkTree(s,function(e){return e.linked?r.push.apply(r,mout.object.values(e.dependencies)):r.push(e),!1},!0),t._bootstrap(r,o,i).then(function(){return t._manager.preinstall(t._json)}).then(function(){return t._manager.install(t._json)}).then(function(e){return t.saveJson().then(function(){return t._manager.postinstall(t._json).then(function(){return e})})})}).fin(function(){t._installed=null,t._working=!1}))},Project.prototype.uninstall=function(e,n){var t=this,r={};return this._working?Q.reject(createError("Already working","EWORKING")):(this._options=n||{},this._working=!0,this._analyse().spread(function(n,o,i){var s=Q.resolve();return e.forEach(function(n){var a=i[n];return!a||a.missing?void(r[n]=null):void(s=s.then(function(){var i,s,u,c=[];if(t.walkTree(o,function(e,t){n===t&&c.push.apply(c,mout.object.values(e.dependants))},!0),c=mout.array.unique(c),c=c.filter(function(n){return!n.root&&-1===e.indexOf(n.name)}),!c.length||t._config.force)return void(r[n]=a.canonicalDir);if(u=c.map(function(e){return e.name}),u.sort(function(e,n){return e.localeCompare(n)}),u=mout.array.unique(u),c=c.map(function(e){return t._manager.toData(e)}),i=u.join(", ")+" depends on "+a.name,s={name:a.name,dependants:c},!t._config.interactive)throw createError(i,"ECONFLICT",{data:s});return t._logger.conflict("mutual",i,s),Q.nfcall(t._logger.prompt.bind(t._logger),{type:"confirm",message:"Continue anyway?","default":!0}).then(function(t){t?r[n]=a.canonicalDir:mout.array.remove(e,n)})}))}),s}).then(function(){return t._removePackages(r)}).fin(function(){t._installed=null,t._working=!1}))},Project.prototype.getTree=function(e){return this._options=e||{},this._analyse().spread(function(e,n,t){var r=[],o=["missing","extraneous","different","linked"];return n=this._manager.toData(n,o),this.walkTree(n,function(e){var n,t=e.endpoint.target;if(e.pkgMeta&&semver.validRange(t)){if(n=e.pkgMeta.version,!n&&"*"===t)return;n&&semver.satisfies(n,t)||(e.incompatible=!0)}},!0),mout.object.forOwn(t,function(e){e.extraneous&&r.push(this._manager.toData(e,o))},this),t=mout.object.map(t,function(e){return this._manager.toData(e,o)},this),[n,t,r]}.bind(this))},Project.prototype.walkTree=function(e,n,t){var r,o,i=mout.object.values(e.dependencies);for(t===!0&&(t=[]);i.length;)e=i.shift(),r=n(e,e.endpoint?e.endpoint.name:e.name),r!==!1&&(o=mout.object.values(e.dependencies),t&&(o=o.filter(function(e){return!mout.array.find(t,function(n){return e.endpoint?mout.object.equals(e.endpoint,n.endpoint):e.name===n.name&&e.source===n.source&&e.target===n.target})}),t.push.apply(t,o)),i.unshift.apply(i,o))},Project.prototype.saveJson=function(e){var n,t=JSON.stringify(this._json,null," ")+"\n",r=md5(t);return r===this._jsonHash?Q.resolve():this._jsonFile||e?(n=this._jsonFile||path.join(this._config.cwd,"bower.json"),Q.nfcall(fs.writeFile,n,t).then(function(){return this._jsonHash=r,this._jsonFile=n,this._json}.bind(this))):(this._logger.warn("no-json","No bower.json file to save to, use bower init to create one"),Q.resolve())},Project.prototype.hasJson=function(){return this._readJson().then(function(e){return e?this._jsonFile:!1}.bind(this))},Project.prototype.getJson=function(){return this._readJson()},Project.prototype.getManager=function(){return this._manager},Project.prototype.getPackageRepository=function(){return this._manager.getPackageRepository()},Project.prototype._analyse=function(){return Q.all([this._readJson(),this._readInstalled(),this._readLinks()]).spread(function(e,n,t){var r,o=mout.lang.deepClone(e);return r={name:e.name,source:this._config.cwd,target:e.version||"*",pkgMeta:o,canonicalDir:this._config.cwd,root:!0},mout.object.mixIn(n,t),o.dependencies=o.dependencies||{},o.devDependencies=o.devDependencies||{},mout.object.forOwn(n,function(e,n){var t=e.pkgMeta,r=o.dependencies[n]||o.devDependencies[n];!r&&t&&t._direct&&(e.extraneous=!0,o.dependencies[n]=e.linked?t.version||"*":(t._originalSource||t._source)+"#"+t._target)}),this._restoreNode(r,n,"dependencies"),this._options.production||this._restoreNode(r,n,"devDependencies"),mout.object.forOwn(n,function(e,t){e.dependants||(e.extraneous=!0,this._restoreNode(e,n,"dependencies"),r.dependencies[t]=e)},this),delete n[e.name],[e,r,n]}.bind(this))},Project.prototype._bootstrap=function(e,n,t){var r=mout.object.map(this._installed,function(e){return e.pkgMeta});return this._json.resolutions=this._json.resolutions||{},this._manager.configure({targets:e,resolved:n,incompatibles:t,resolutions:this._json.resolutions,installed:r,forceLatest:this._options.forceLatest}).resolve().then(function(){mout.object.size(this._json.resolutions)||delete this._json.resolutions}.bind(this))},Project.prototype._readJson=function(){var e=this;return this._json?Q.resolve(this._json):this._json=readJson(this._config.cwd,{assume:{name:path.basename(this._config.cwd)||"root"}}).spread(function(n,t,r){var o;return t&&e._logger.warn("deprecated","You are using the deprecated "+t+" file"),r||(e._jsonFile=path.join(e._config.cwd,t?t:"bower.json")),o=JSON.stringify(n,null," ")+"\n",e._jsonHash=md5(o),e._json=n})},Project.prototype._readInstalled=function(){var e,n=this;return this._installed?Q.resolve(this._installed):(e=path.join(this._config.cwd,this._config.directory),this._installed=Q.nfcall(glob,"*/.bower.json",{cwd:e,dot:!0}).then(function(t){var r,o={};return r=t.map(function(n){var t=path.dirname(n),r=path.join(e,n);return readJson(r).spread(function(e){o[t]={name:t,source:e._originalSource||e._source,target:e._target,canonicalDir:path.dirname(r),pkgMeta:e}})}),Q.all(r).then(function(){return n._installed=o})}))},Project.prototype._readLinks=function(){var e,n=this;return e=path.join(this._config.cwd,this._config.directory),Q.nfcall(fs.readdir,e).then(function(t){var r,o={};return r=t.map(function(t){var r=path.join(e,t);return validLink(r).spread(function(e,t){var i;if(!e)return void(t&&n._logger.debug("read-link","Link "+r+" is invalid",{filename:r,error:t}));if(e.isDirectory())return i=path.basename(r),readJson(r,{assume:{name:i}}).spread(function(e,t){t&&n._logger.warn("deprecated","Package "+i+" is using the deprecated "+t),e._direct=!0,o[i]={name:i,source:r,target:"*",canonicalDir:r,pkgMeta:e,linked:!0}})})}),Q.all(r).then(function(){return o})},function(e){if("ENOENT"!==e.code)throw e;return{}})},Project.prototype._removePackages=function(e){var n=this,t=[];return scripts.preuninstall(n._config,n._logger,e,n._installed,n._json).then(function(){return mout.object.forOwn(e,function(e,r){var o;e?(o=Q.nfcall(rimraf,e),n._logger.action("uninstall",r,{name:r,dir:e})):(o=Q.resolve(),n._logger.warn("not-installed","'"+r+"' cannot be uninstalled as it is not currently installed",{name:r})),n._options.save&&n._json.dependencies&&(o=o.then(function(){delete n._json.dependencies[r]})),n._options.saveDev&&n._json.devDependencies&&(o=o.then(function(){delete n._json.devDependencies[r]})),t.push(o)}),Q.all(t)}).then(function(){return n.saveJson()}).then(function(){return mout.object.filter(e,function(e){return!!e})})},Project.prototype._restoreNode=function(e,n,t,r){var o;e.missing||(e.dependencies=e.dependencies||{},e.dependants=e.dependants||{},r=r||{},o=mout.object.filter(e.pkgMeta[t],function(n,t){return!r[e.name+":"+t]}),mout.object.forOwn(o,function(t,o){var i,s,a,u=n[o],c=endpointParser.json2decomposed(o,t);u?(s=u.linked||!u.missing&&c.target===u.pkgMeta._target,s?(i=u,mout.object.mixIn(u,c)):(i=c,u.missing?i.missing=!0:(i.pkgMeta=u.pkgMeta,i.canonicalDir=u.canonicalDir,i.incompatible=!0)),e.root&&s&&(a=mout.object.get(u,"pkgMeta._originalSource"),a&&a!==c.source&&(i.different=!0))):(n[o]=i=c,i.missing=!0),e.dependencies[o]=i,r[e.name+":"+o]=!0,i.dependants=i.dependants||{},i.dependants[e.name]=mout.object.mixIn({},e),this._restoreNode(i,n,"dependencies",r),u&&i!==u&&this._restoreNode(u,n,"dependencies",r)},this))},module.exports=Project;
return Q.all(files.map(f => { return Q.nfcall(fs.readFile, f, { encoding: "utf8" }); })).then(sources => {
this.unlink = function() { return Q.nfcall(fs.unlink, this.root); };
this.isSymlink = function() { return Q.nfcall(fs.lstat, this.root).then(function(stats) { return stats.isSymbolicLink(); }); };
this.optimizeClient = function(force) { var that = this; var d = Q.defer(); if (!this.isClientside() || (this.isOptmized() && !force)) { return Q(this); } // R.js bin var rjs = path.resolve(__dirname, "../../node_modules/.bin/r.js"); // Base directory for the addon var addonPath = this.root; // Path to the require-tools var requiretoolsPath = path.resolve(__dirname, "../../client/build/static/require-tools"); // Base main var main = this.infos.client.main; // Output file var output = path.resolve(addonPath, "addon-built.js"); // Build config (todo: use this config for the command) var optconfig = { 'baseUrl': addonPath, 'name': main, 'out': output, 'paths': { 'require-tools': requiretoolsPath }, 'optimize': "none", 'map': { '*': { 'css': "require-tools/css/css", 'less': "require-tools/less/less", 'text': "require-tools/text/text" } } }; var command = rjs+" -o baseUrl="+addonPath+" paths.require-tools="+requiretoolsPath+" name="+main+" map.*.css=require-tools/css/css map.*.less=require-tools/less/less map.*.text=require-tools/text/text out="+output; // Run optimization logger.log("Optimizing", this.infos.name); return Q.nfcall(fs.unlink, output).fail(function() { return Q(); }).then(function() { return exec(command) }).then(function() { logger.log("Finished", that.infos.name, "optimization"); return Q(that); }, function(err) { logger.error("error for optimization of", that.infos.name); logger.error("command=",command); logger.error(err.stdout); logger.exception(err, false); return Q.reject(err); }); };
PackageRepository.prototype.clear = function () { return Q.all([ this._resolveCache.clear(), Q.nfcall(this._registryClient.clearCache.bind(this._registryClient)) ]); };
PackageRepository.prototype.eliminate = function (pkgMeta) { return Q.all([ this._resolveCache.eliminate(pkgMeta), Q.nfcall(this._registryClient.clearCache.bind(this._registryClient), pkgMeta.name) ]); };
Pfs.prototype.pChmod = function (path, mode) { return Q.nfcall(fs.chmod, path, mode); };
Pfs.prototype.pHashFile = function (f) { return Q.nfcall(this.hashFile, f, true); };
Pfs.prototype.pReadDir = function (path) { return Q.nfcall(fs.readdir, path); };
Pfs.prototype.pOpen = function (path, flags, mode) { return Q.nfcall(fs.open, path, flags, mode); };
Pfs.prototype.pWriteFile = function (file, data, options) { return Q.nfcall(fs.writeFile, file, data, options); };
Pfs.prototype.pClose = function (fd) { return Q.nfcall(fs.close, fd); };
init: function(resourceTemplate) { var swaggerFile = './swagger.json'; packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8')); /* - If "swagger-lamba" node is null, create it. - If "swagger-lamba.gatewayName" is null, prompt the user for a name, default to the name in package.json - If "swagger-lambda.restApi" is null, create an API for the gateway name, store the restApi value in this key */ if (packageJson['swagger-lamba'] == null) { packageJson['swagger-lamba'] = {}; } if (packageJson['swagger-lamba'].stages == null) { packageJson['swagger-lamba'].stages = {}; } if (packageJson['swagger-lamba'].stages.local == null) { packageJson['swagger-lamba'].stages.local = { apiKey: '1234567890' }; } fs.writeFileSync('package.json', JSON.stringify(packageJson, null, '\t', 'utf8')); var promise = Q(); if (packageJson['swagger-lamba'].name == null || packageJson['swagger-lamba'].restApiId == null) { var schema = { properties: { apiName: { pattern: /^[a-zA-Z\s\-]+$/, message: 'Name must be only letters, spaces, or dashes', required: true, default: packageJson.name }, apiDescription: { message: 'Describe the purpose of the API.', required: true, default: packageJson.name }, bucket: { message: 'S3 Bucket Name', required: true, default: process.env.BUCKET_NAME }, awsCustomerId: { message: 'AWS Customer Id', required: true, default: process.env.AWS_CUSTOMER_ID }, "lambda-role": { message: 'AWS lambda role', required: false } } }; prompt.start(); // // Get two properties from the user: email, password // promise = Q.nfcall(prompt.get, schema).then(function(result) { packageJson['swagger-lamba'].name = result.apiName; packageJson['swagger-lamba'].description = result.apiDescription; packageJson['swagger-lamba'].bucket = result.bucket; packageJson['swagger-lamba'].customerId = result.awsCustomerId; var rolePromise; if (result['lambda-role'] == null || result['lambda-role'] == '') { rolePromise = lambda.createRole('swaggy-lambda-basic') } else { rolePromise = Q(result['lambda-role']) } return rolePromise.then(function(roleArn) { packageJson['swagger-lamba']['lambda-role'] = roleArn; return apiGateway.initializeGateway(result.apiName, result.apiDescription) }); }).then(function(result) { console.log('API Gateway Created'); packageJson['swagger-lamba'].restApiId = result.id; fs.writeFileSync('package.json', JSON.stringify(packageJson, null, '\t', 'utf8')); }).catch(function(err) { console.log('API Gateway Created error', err); }); } promise.done(function(lastItem) { try { var swaggerAccess = fs.accessSync(swaggerFile); // console.log('Using existing swagger file'); } catch (err) { // file dows not exist, put a placeholder file there // console.log('Initializing swagger file'); fs.writeFileSync(swaggerFile, JSON.stringify(sampleSwagger, null, '\t') + '\n', 'utf8'); } try { var swaggerAccess = fs.accessSync('api/'); // console.log('Using api folder'); } catch (err) { // file dows not exist, put a placeholder file there // console.log('Initializing api folder'); fs.mkdirSync('api'); } wrench.rmdirSyncRecursive('swagger-ui', true); // copy the swagger-ui folder wrench.copyDirSyncRecursive(__dirname + '/swagger-ui', 'swagger-ui', { forceDelete: false }); var utilJs = fs.readFileSync(__dirname + '/util.js', 'utf8'); fs.writeFileSync('util.js', utilJs, 'utf8'); var lambdaInvokeJs = fs.readFileSync(__dirname + '/lambda-invoke.js', 'utf8'); fs.writeFileSync('lambda-invoke.js', lambdaInvokeJs, 'utf8'); var expressApp = fs.readFileSync(__dirname + '/app.template.js', 'utf8'); fs.writeFileSync('app.js', expressApp, 'utf8'); var indexApp = fs.readFileSync(__dirname + '/index.template.js', 'utf8'); fs.writeFileSync('index.js', indexApp, 'utf8'); var swaggerDef = util.parseSwaggerFile('swagger.json'); var resources = swaggerDef.resources; for (var resource in resources) { try { stats = fs.statSync('api/' + resource + '.js'); } catch (e) { var resourceJs = fs.readFileSync(__dirname + '/' + resourceTemplate + '.js', 'utf8'); var template = Handlebars.compile(resourceJs); var path = swaggerDef.paths var data = { "resourceName": resource, "methods": resources[resource].methods }; for (var item in data.methods) { var p = data.methods[item]; var m = (item == 'list') ? 'get' : item; data.methods[item] = path[p][m] } console.log('data:', data); var result = template(data); fs.writeFileSync('api/' + resource + '.js', result, 'utf8'); } } try { stats = fs.statSync('contextExtensions.js'); } catch (e) { var contextExtensions = fs.readFileSync(__dirname + '/contextExtensions.js', 'utf8'); fs.writeFileSync('contextExtensions.js', contextExtensions, 'utf8'); } }); }
Pfs.prototype.pMkdir = function (path, mode) { return Q.nfcall(fs.mkdir, path, mode); };
.then(function () { return Q.nfcall(fs.readFile, path.join(tempDir, '.bower.json')); }, null)
Pfs.prototype.pRmdir = function (path) { return Q.nfcall(fs.rmdir, path); };
function execPromise(cmd) { var cmd_ = cmd.cmd + ' ' + cmd.args.join(' '); var r = Q.nfcall(child_process.exec, cmd_); return r; }
Pfs.prototype.pUnlink = function (path) { return Q.nfcall(fs.unlink, path); };
service.cloneRepo = function (repoUrl, repoDir) { return Q.nfcall(childProcess.exec, 'git clone ' + repoUrl + ' ' + repoDir, {cwd: process.cwd, timeout: 30000}) };
Pfs.prototype.pSymlink = function (target, path, type) { return Q.nfcall(fs.symlink, target, path, type); };
service.loadFileFromRepo = function (fileName) { checkRepoInitialized(); return Q.nfcall(fs.readFile, repositoryDir + '/' + fileName, "utf-8"); };
/** * Boot up the framework with the models found in basedir. * @param app the application server. * @param basedir the base directory for the models. * @param completeFn a function to be executed when booting is complete. **/ function bootModels(app, plugin, config, completeFn) { var bootModelsDefer = Q.defer(); var basedir = plugin.baseDir; logger.log('trace', 'booting models for ' + basedir); Q.nfcall(fs.readdir, basedir + '/models') .then(function(files) { if (_.isNull(files) || _.isUndefined(files)) { logger.log('warning', "No models were found."); bootModelsDefer.resolve(); } else if (files.length <= 0) { logger.log('warning', "No models were found."); // completeFn(); bootModelsDefer.resolve(); } else { var filesIndex = files.length; files.forEach(function(file) { fs.stat(basedir + '/models/' + file, function(err, stats) { if (err) { logger.log('trace', "error stating file " + file + ": " + err); bootModelsDefer.resolve(); } if (stats.isFile()) { logger.log('trace', "model: " + file); bootModel(app, basedir, file, function() { filesIndex--; if (filesIndex <= 0) { bootModelsDefer.resolve(); } }); } else { filesIndex--; if (filesIndex <= 0) { bootModelsDefer.resolve(); } } }); }); logger.log("trace", "files = " + files.join()); } }, function(err) { logger.log('warning', err); bootModelsDefer.resolve(); }); // fs.readdir(basedir + '/models', function(err, files) { // if (err) { // logger.log('warning', err); // bootModelsDefer.resolve(err); // } else if (_.isNull(files) || _.isUndefined(files)) { // logger.log('warning', "No models were found."); // bootModelsDefer.resolve(); // // completeFn(); // } else if (files.length <= 0) { // logger.log('warning', "No models were found."); // // completeFn(); // bootModelsDefer.resolve(); // } else { // var filesIndex = files.length; // files.forEach(function(file) { // fs.stat(basedir + '/models/' + file, function(err, stats) { // if (stats.isFile()) { // logger.log('trace', "model: " + file); // bootModel(app, basedir, file, function() { // filesIndex--; // if (filesIndex <= 0) { // bootModelsDefer.resolve(); // } // }); // } else { // filesIndex--; // if (filesIndex <= 0) { // bootModelsDefer.resolve(); // } // } // }); // }); // } // }); return bootModelsDefer.promise; }