moved around files
This commit is contained in:
409
panel-mgmt_backend/node_modules/jake/lib/api.js
generated
vendored
Normal file
409
panel-mgmt_backend/node_modules/jake/lib/api.js
generated
vendored
Normal file
@@ -0,0 +1,409 @@
|
||||
/*
|
||||
* Jake JavaScript build tool
|
||||
* Copyright 2112 Matthew Eernisse (mde@fleegix.org)
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
*/
|
||||
let { uuid } = require('./utils');
|
||||
|
||||
let api = new (function () {
|
||||
/**
|
||||
@name task
|
||||
@static
|
||||
@function
|
||||
@description Creates a Jake Task
|
||||
`
|
||||
@param {String} name The name of the Task
|
||||
@param {Array} [prereqs] Prerequisites to be run before this task
|
||||
@param {Function} [action] The action to perform for this task
|
||||
@param {Object} [opts]
|
||||
@param {Boolean} [opts.asyc=false] Perform this task asynchronously.
|
||||
If you flag a task with this option, you must call the global
|
||||
`complete` method inside the task's action, for execution to proceed
|
||||
to the next task.
|
||||
|
||||
@example
|
||||
desc('This is the default task.');
|
||||
task('default', function (params) {
|
||||
console.log('This is the default task.');
|
||||
});
|
||||
|
||||
desc('This task has prerequisites.');
|
||||
task('hasPrereqs', ['foo', 'bar', 'baz'], function (params) {
|
||||
console.log('Ran some prereqs first.');
|
||||
});
|
||||
|
||||
desc('This is an asynchronous task.');
|
||||
task('asyncTask', function () {
|
||||
setTimeout(complete, 1000);
|
||||
}, {async: true});
|
||||
*/
|
||||
this.task = function (name, prereqs, action, opts) {
|
||||
let args = Array.prototype.slice.call(arguments);
|
||||
let createdTask;
|
||||
args.unshift('task');
|
||||
createdTask = jake.createTask.apply(global, args);
|
||||
jake.currentTaskDescription = null;
|
||||
return createdTask;
|
||||
};
|
||||
|
||||
/**
|
||||
@name rule
|
||||
@static
|
||||
@function
|
||||
@description Creates a Jake Suffix Rule
|
||||
`
|
||||
@param {String} pattern The suffix name of the objective
|
||||
@param {String} source The suffix name of the objective
|
||||
@param {Array} [prereqs] Prerequisites to be run before this task
|
||||
@param {Function} [action] The action to perform for this task
|
||||
@param {Object} [opts]
|
||||
@param {Boolean} [opts.asyc=false] Perform this task asynchronously.
|
||||
If you flag a task with this option, you must call the global
|
||||
`complete` method inside the task's action, for execution to proceed
|
||||
to the next task.
|
||||
@example
|
||||
desc('This is a rule, which does not support namespace or pattern.');
|
||||
rule('.o', '.c', {async: true}, function () {
|
||||
let cmd = util.format('gcc -o %s %s', this.name, this.source);
|
||||
jake.exec([cmd], function () {
|
||||
complete();
|
||||
}, {printStdout: true});
|
||||
});
|
||||
|
||||
desc('This rule has prerequisites.');
|
||||
rule('.o', '.c', ['util.h'], {async: true}, function () {
|
||||
let cmd = util.format('gcc -o %s %s', this.name, this.source);
|
||||
jake.exec([cmd], function () {
|
||||
complete();
|
||||
}, {printStdout: true});
|
||||
});
|
||||
|
||||
desc('This is a rule with patterns.');
|
||||
rule('%.o', '%.c', {async: true}, function () {
|
||||
let cmd = util.format('gcc -o %s %s', this.name, this.source);
|
||||
jake.exec([cmd], function () {
|
||||
complete();
|
||||
}, {printStdout: true});
|
||||
});
|
||||
|
||||
desc('This is another rule with patterns.');
|
||||
rule('obj/%.o', 'src/%.c', {async: true}, function () {
|
||||
let cmd = util.format('gcc -o %s %s', this.name, this.source);
|
||||
jake.exec([cmd], function () {
|
||||
complete();
|
||||
}, {printStdout: true});
|
||||
});
|
||||
|
||||
desc('This is an example with chain rules.');
|
||||
rule('%.pdf', '%.dvi', {async: true}, function () {
|
||||
let cmd = util.format('dvipdfm %s',this.source);
|
||||
jake.exec([cmd], function () {
|
||||
complete();
|
||||
}, {printStdout: true});
|
||||
});
|
||||
|
||||
rule('%.dvi', '%.tex', {async: true}, function () {
|
||||
let cmd = util.format('latex %s',this.source);
|
||||
jake.exec([cmd], function () {
|
||||
complete();
|
||||
}, {printStdout: true});
|
||||
});
|
||||
|
||||
desc('This rule has a namespace.');
|
||||
task('default', ['debug:obj/main.o]);
|
||||
|
||||
namespace('debug', {async: true}, function() {
|
||||
rule('obj/%.o', 'src/%.c', function () {
|
||||
// ...
|
||||
});
|
||||
}
|
||||
*/
|
||||
this.rule = function () {
|
||||
let args = Array.prototype.slice.call(arguments);
|
||||
let arg;
|
||||
let pattern = args.shift();
|
||||
let source = args.shift();
|
||||
let prereqs = [];
|
||||
let action = function () {};
|
||||
let opts = {};
|
||||
let key = pattern.toString(); // May be a RegExp
|
||||
|
||||
while ((arg = args.shift())) {
|
||||
if (typeof arg == 'function') {
|
||||
action = arg;
|
||||
}
|
||||
else if (Array.isArray(arg)) {
|
||||
prereqs = arg;
|
||||
}
|
||||
else {
|
||||
opts = arg;
|
||||
}
|
||||
}
|
||||
|
||||
jake.currentNamespace.rules[key] = new jake.Rule({
|
||||
pattern: pattern,
|
||||
source: source,
|
||||
prereqs: prereqs,
|
||||
action: action,
|
||||
opts: opts,
|
||||
desc: jake.currentTaskDescription,
|
||||
ns: jake.currentNamespace
|
||||
});
|
||||
jake.currentTaskDescription = null;
|
||||
};
|
||||
|
||||
/**
|
||||
@name directory
|
||||
@static
|
||||
@function
|
||||
@description Creates a Jake DirectoryTask. Can be used as a prerequisite
|
||||
for FileTasks, or for simply ensuring a directory exists for use with a
|
||||
Task's action.
|
||||
`
|
||||
@param {String} name The name of the DiretoryTask
|
||||
|
||||
@example
|
||||
|
||||
// Creates the package directory for distribution
|
||||
directory('pkg');
|
||||
*/
|
||||
this.directory = function (name) {
|
||||
let args = Array.prototype.slice.call(arguments);
|
||||
let createdTask;
|
||||
args.unshift('directory');
|
||||
createdTask = jake.createTask.apply(global, args);
|
||||
jake.currentTaskDescription = null;
|
||||
return createdTask;
|
||||
};
|
||||
|
||||
/**
|
||||
@name file
|
||||
@static
|
||||
@function
|
||||
@description Creates a Jake FileTask.
|
||||
`
|
||||
@param {String} name The name of the FileTask
|
||||
@param {Array} [prereqs] Prerequisites to be run before this task
|
||||
@param {Function} [action] The action to create this file, if it doesn't
|
||||
exist already.
|
||||
@param {Object} [opts]
|
||||
@param {Array} [opts.asyc=false] Perform this task asynchronously.
|
||||
If you flag a task with this option, you must call the global
|
||||
`complete` method inside the task's action, for execution to proceed
|
||||
to the next task.
|
||||
|
||||
*/
|
||||
this.file = function (name, prereqs, action, opts) {
|
||||
let args = Array.prototype.slice.call(arguments);
|
||||
let createdTask;
|
||||
args.unshift('file');
|
||||
createdTask = jake.createTask.apply(global, args);
|
||||
jake.currentTaskDescription = null;
|
||||
return createdTask;
|
||||
};
|
||||
|
||||
/**
|
||||
@name desc
|
||||
@static
|
||||
@function
|
||||
@description Creates a description for a Jake Task (or FileTask,
|
||||
DirectoryTask). When invoked, the description that iscreated will
|
||||
be associated with whatever Task is created next.
|
||||
`
|
||||
@param {String} description The description for the Task
|
||||
*/
|
||||
this.desc = function (description) {
|
||||
jake.currentTaskDescription = description;
|
||||
};
|
||||
|
||||
/**
|
||||
@name namespace
|
||||
@static
|
||||
@function
|
||||
@description Creates a namespace which allows logical grouping
|
||||
of tasks, and prevents name-collisions with task-names. Namespaces
|
||||
can be nested inside of other namespaces.
|
||||
`
|
||||
@param {String} name The name of the namespace
|
||||
@param {Function} scope The enclosing scope for the namespaced tasks
|
||||
|
||||
@example
|
||||
namespace('doc', function () {
|
||||
task('generate', ['doc:clobber'], function () {
|
||||
// Generate some docs
|
||||
});
|
||||
|
||||
task('clobber', function () {
|
||||
// Clobber the doc directory first
|
||||
});
|
||||
});
|
||||
*/
|
||||
this.namespace = function (name, closure) {
|
||||
let curr = jake.currentNamespace;
|
||||
let ns = curr.childNamespaces[name] || new jake.Namespace(name, curr);
|
||||
let fn = closure || function () {};
|
||||
curr.childNamespaces[name] = ns;
|
||||
jake.currentNamespace = ns;
|
||||
fn();
|
||||
jake.currentNamespace = curr;
|
||||
jake.currentTaskDescription = null;
|
||||
return ns;
|
||||
};
|
||||
|
||||
/**
|
||||
@name complete
|
||||
@static
|
||||
@function
|
||||
@description Completes an asynchronous task, allowing Jake's
|
||||
execution to proceed to the next task. Calling complete globally or without
|
||||
arguments completes the last task on the invocationChain. If you use parallel
|
||||
execution of prereqs this will probably complete a wrong task. You should call this
|
||||
function with this task as the first argument, before the optional return value.
|
||||
Alternatively you can call task.complete()
|
||||
`
|
||||
@example
|
||||
task('generate', ['doc:clobber'], function () {
|
||||
exec('./generate_docs.sh', function (err, stdout, stderr) {
|
||||
if (err || stderr) {
|
||||
fail(err || stderr);
|
||||
}
|
||||
else {
|
||||
console.log(stdout);
|
||||
complete();
|
||||
}
|
||||
});
|
||||
}, {async: true});
|
||||
*/
|
||||
this.complete = function (task, val) {
|
||||
//this should detect if the first arg is a task, but I guess it should be more thorough
|
||||
if(task && task. _currentPrereqIndex >=0 ) {
|
||||
task.complete(val);
|
||||
}
|
||||
else {
|
||||
val = task;
|
||||
if(jake._invocationChain.length > 0) {
|
||||
jake._invocationChain[jake._invocationChain.length-1].complete(val);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@name fail
|
||||
@static
|
||||
@function
|
||||
@description Causes Jake execution to abort with an error.
|
||||
Allows passing an optional error code, which will be used to
|
||||
set the exit-code of exiting process.
|
||||
`
|
||||
@param {Error|String} err The error to thow when aborting execution.
|
||||
If this argument is an Error object, it will simply be thrown. If
|
||||
a String, it will be used as the error-message. (If it is a multi-line
|
||||
String, the first line will be used as the Error message, and the
|
||||
remaining lines will be used as the error-stack.)
|
||||
|
||||
@example
|
||||
task('createTests, function () {
|
||||
if (!fs.existsSync('./tests')) {
|
||||
fail('Test directory does not exist.');
|
||||
}
|
||||
else {
|
||||
// Do some testing stuff ...
|
||||
}
|
||||
});
|
||||
*/
|
||||
this.fail = function (err, code) {
|
||||
let msg;
|
||||
let errObj;
|
||||
if (code) {
|
||||
jake.errorCode = code;
|
||||
}
|
||||
if (err) {
|
||||
if (typeof err == 'string') {
|
||||
// Use the initial or only line of the error as the error-message
|
||||
// If there was a multi-line error, use the rest as the stack
|
||||
msg = err.split('\n');
|
||||
errObj = new Error(msg.shift());
|
||||
if (msg.length) {
|
||||
errObj.stack = msg.join('\n');
|
||||
}
|
||||
throw errObj;
|
||||
}
|
||||
else if (err instanceof Error) {
|
||||
throw err;
|
||||
}
|
||||
else {
|
||||
throw new Error(err.toString());
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw new Error();
|
||||
}
|
||||
};
|
||||
|
||||
this.packageTask = function (name, version, prereqs, definition) {
|
||||
return new jake.PackageTask(name, version, prereqs, definition);
|
||||
};
|
||||
|
||||
this.publishTask = function (name, prereqs, opts, definition) {
|
||||
return new jake.PublishTask(name, prereqs, opts, definition);
|
||||
};
|
||||
|
||||
// Backward-compat
|
||||
this.npmPublishTask = function (name, prereqs, opts, definition) {
|
||||
return new jake.PublishTask(name, prereqs, opts, definition);
|
||||
};
|
||||
|
||||
this.testTask = function () {
|
||||
let ctor = function () {};
|
||||
let t;
|
||||
ctor.prototype = jake.TestTask.prototype;
|
||||
t = new ctor();
|
||||
jake.TestTask.apply(t, arguments);
|
||||
return t;
|
||||
};
|
||||
|
||||
this.setTaskTimeout = function (t) {
|
||||
this._taskTimeout = t;
|
||||
};
|
||||
|
||||
this.setSeriesAutoPrefix = function (prefix) {
|
||||
this._seriesAutoPrefix = prefix;
|
||||
};
|
||||
|
||||
this.series = function (...args) {
|
||||
let prereqs = args.map((arg) => {
|
||||
let name = (this._seriesAutoPrefix || '') + arg.name;
|
||||
jake.task(name, arg);
|
||||
return name;
|
||||
});
|
||||
let seriesName = uuid();
|
||||
let seriesTask = jake.task(seriesName, prereqs);
|
||||
seriesTask._internal = true;
|
||||
let res = function () {
|
||||
return new Promise((resolve) => {
|
||||
seriesTask.invoke();
|
||||
seriesTask.on('complete', (val) => {
|
||||
resolve(val);
|
||||
});
|
||||
});
|
||||
};
|
||||
Object.defineProperty(res, 'name', {value: uuid(),
|
||||
writable: false});
|
||||
return res;
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
module.exports = api;
|
Reference in New Issue
Block a user