UNPKG

2.92 kBJavaScriptView Raw
1'use strict';
2
3function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
4
5function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
6
7function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
9Object.defineProperty(exports, '__esModule', {
10 value: true
11});
12
13const execa = require('execa');
14
15const event = require('@boost/event');
16
17const plugin = require('@boost/plugin');
18
19const isClassInstance = require('./helpers/isClassInstance.js');
20
21function _interopDefault(e) {
22 return e && e.__esModule ? e : {
23 'default': e
24 };
25}
26
27const execa__default = /*#__PURE__*/_interopDefault(execa);
28
29class Script extends plugin.Plugin {
30 constructor(...args) {
31 super(...args);
32 this.tool = void 0;
33 this.onBeforeExecute = new event.ConcurrentEvent('before-execute');
34 this.onAfterExecute = new event.ConcurrentEvent('after-execute');
35 this.onFailedExecute = new event.ConcurrentEvent('failed-execute');
36 }
37
38 static validate(script) {
39 const name = isClassInstance.isClassInstance(script) && script.constructor.name || 'Script';
40
41 if (typeof script.parse !== 'function') {
42 throw new TypeError(`\`${name}\` requires a \`parse()\` method.`);
43 }
44
45 if (typeof script.execute !== 'function') {
46 throw new TypeError(`\`${name}\` requires an \`execute()\` method.`);
47 }
48 }
49
50 blueprint(preds) {
51 return {};
52 }
53
54 bootstrap() {}
55
56 startup(tool) {
57 this.tool = tool;
58 this.bootstrap();
59 }
60 /**
61 * Define a configuration object to parse args with.
62 */
63
64
65 parse() {
66 return {
67 // @ts-expect-error Allow this
68 options: {}
69 };
70 }
71 /**
72 * Execute a command with the given arguments and pass the results through a promise.
73 */
74
75
76 async executeCommand(command, args, options = {})
77 /* infer */
78 {
79 return execa__default['default'](command, args, _objectSpread({
80 preferLocal: true
81 }, options));
82 }
83 /**
84 * Execute the script with the context and parsed args.
85 */
86
87
88}
89
90exports.Script = Script;
91//# sourceMappingURL=Script.js.map