@hkvstore/taco-cli
Version:
taco-cli is a command-line interface for rapid Apache Cordova development (forked from Microsoft taco-cli)
180 lines (178 loc) • 7.17 kB
JavaScript
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
/// <reference path="../../typings/tacoUtils.d.ts" />
/// <reference path="../../typings/tacoKits.d.ts" />
/// <reference path="../../typings/node.d.ts" />
/// <reference path="../../typings/dictionary.d.ts" />
;
var __extends = (this && this.__extends) || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
var KitHelper = require("./utils/kitHelper");
var resources = require("../resources/resourceManager");
var cordovaComponentCommand = require("./utils/cordovaComponentCommand");
var tacoUtility = require("taco-utils");
var CordovaHelper = tacoUtility.CordovaHelper;
var CordovaWrapper = tacoUtility.CordovaWrapper;
var CordovaComponentCommand = cordovaComponentCommand.CordovaComponentCommand;
var Logger = tacoUtility.Logger;
var LoggerHelper = tacoUtility.LoggerHelper;
/**
* Plugin
*
* Handles "taco plugin"
*/
var Plugin = (function (_super) {
__extends(Plugin, _super);
function Plugin() {
var _this = this;
_super.apply(this, arguments);
this.name = "platform";
this.subcommands = [
{
// taco plaform add <platform>
name: "add",
run: function () { return _this.add(); }
},
{
// taco plaform remote/update/check <platform>
name: "fallback",
run: function () { return _this.passthrough(); },
canHandleArgs: function () { return true; }
},
];
}
Object.defineProperty(Plugin.prototype, "knownOptions", {
get: function () {
return Plugin.KNOWN_OPTIONS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Plugin.prototype, "knownSubCommands", {
get: function () {
return Plugin.KNOWN_SUBCOMMANDS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Plugin.prototype, "shortFlags", {
get: function () {
return Plugin.SHORT_HANDS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Plugin.prototype, "knownTargetsSubCommands", {
get: function () {
return Plugin.KNOWN_TARGETS_SUBCOMMANDS;
},
enumerable: true,
configurable: true
});
Plugin.prototype.getCommandOptions = function (commandData) {
// Sanitize the --variable option flags
var variables = commandData.options["variable"] || [];
var cli_variables = {};
variables.forEach(function (variable) {
var keyval = variable.split("=");
cli_variables[keyval[0].toUpperCase()] = keyval[1];
});
return {
searchpath: commandData.options["searchpath"],
noregistry: commandData.options["noregistry"],
cli_variables: cli_variables,
browserify: commandData.options["browserify"],
link: commandData.options["link"],
save: commandData.options["save"],
shrinkwrap: commandData.options["shrinkwrap"]
};
};
Plugin.prototype.runCordovaCommand = function (targets) {
var commandData = this.data;
return CordovaWrapper.plugin(commandData.subCommand, commandData, targets, commandData.commandOptions);
};
Plugin.prototype.getConfigXmlVersionSpec = function (targetName, projectInfo) {
return CordovaHelper.getPluginVersionSpec(targetName, projectInfo);
};
Plugin.prototype.editVersionOverrideInfo = function (pluginInfos, projectInfo) {
var commandData = this.data;
var infos = pluginInfos.map(function (pluginInfo) {
return {
name: pluginInfo.name,
spec: pluginInfo.spec,
pluginVariables: commandData.commandOptions.cli_variables
};
});
return CordovaHelper.editEngineVersionSpecs(infos, projectInfo);
};
Plugin.prototype.getKitOverride = function (pluginId, kitId) {
return KitHelper.getPluginOverridesForKit(kitId)
.then(function (kitOverrides) {
var version = "";
var src = "";
if (kitOverrides && kitOverrides[pluginId]) {
version = kitOverrides[pluginId].version;
src = kitOverrides[pluginId].src;
if (kitOverrides[pluginId]["supported-platforms"]) {
Logger.log(resources.getString("CommandPluginTestedPlatforms", pluginId, kitOverrides[pluginId]["supported-platforms"]));
}
}
return CordovaComponentCommand.makeCordovaComponentInfo(pluginId, version, src);
});
};
/**
* Prints the platform addition/removal operation progress message
*/
Plugin.prototype.printInProgressMessage = function (plugins) {
// no progress shown for plugin operations
};
/**
* Prints the plugin operations success message
*/
Plugin.prototype.printSuccessMessage = function (plugins) {
var commandData = this.data;
switch (commandData.subCommand) {
case "add": {
Logger.log(resources.getString("CommandPluginWithIdStatusAdded", plugins));
// Print the onboarding experience
Logger.log(resources.getString("OnboardingExperienceTitle"));
LoggerHelper.logList(["HowToUseCommandInstallReqsPlugin",
"HowToUseCommandSetupRemote",
"HowToUseCommandBuildPlatform",
"HowToUseCommandEmulatePlatform",
"HowToUseCommandRunPlatform"].map(function (msg) { return resources.getString(msg); }));
["",
"HowToUseCommandHelp",
"HowToUseCommandDocs"].forEach(function (msg) { return Logger.log(resources.getString(msg)); });
break;
}
case "remove": {
Logger.log(resources.getString("CommandPluginStatusRemoved", plugins));
break;
}
case "update": {
Logger.log(resources.getString("CommandPluginStatusUpdated", plugins));
break;
}
}
};
Plugin.KNOWN_OPTIONS = {
searchpath: String,
noregistry: String,
variable: Array,
browserify: Boolean,
link: Boolean,
save: Boolean,
shrinkwrap: Boolean
};
Plugin.SHORT_HANDS = {};
Plugin.KNOWN_SUBCOMMANDS = ["add", "remove", "list", "search", "check"];
// list of subcommands which require a target (for e.g. a platform name or plugin id)
Plugin.KNOWN_TARGETS_SUBCOMMANDS = ["add", "remove", "update"];
return Plugin;
}(cordovaComponentCommand.CordovaComponentCommand));
module.exports = Plugin;
//# sourceMappingURL=plugin.js.map