ask-cli-x
Version:
Alexa Skills Kit (ASK) Command Line Interfaces
87 lines (86 loc) • 3.95 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCommand = void 0;
const path_1 = __importDefault(require("path"));
const smapi_client_1 = __importDefault(require("../../../clients/smapi-client"));
const abstract_command_1 = require("../../abstract-command");
const option_model_json_1 = __importDefault(require("../../option-model.json"));
const resources_config_1 = __importDefault(require("../../../model/resources-config"));
const constants_1 = __importDefault(require("../../../utils/constants"));
const profile_helper_1 = __importDefault(require("../../../utils/profile-helper"));
const json_view_1 = __importDefault(require("../../../view/json-view"));
const messenger_1 = __importDefault(require("../../../view/messenger"));
class GitCredentialsHelperCommand extends abstract_command_1.AbstractCommand {
name() {
return "git-credentials-helper";
}
description() {
return "gets git credentials for hosted skill repository";
}
requiredOptions() {
return [];
}
optionalOptions() {
return ["profile", "debug"];
}
async handle(cmd, remaining) {
if (remaining && !["get", "store", "erase"].includes(remaining[0])) {
const NON_GET_OPERATION_ERR = `The ask-cli git credentials helper doesn't support operation "${remaining[0]}".`;
messenger_1.default.getInstance().error(NON_GET_OPERATION_ERR);
throw NON_GET_OPERATION_ERR;
}
if (remaining && (remaining[0] === "store" || remaining[0] === "erase")) {
// TODO: add "erase" enhancement to clean through the entire providerchain: oskeychain, sys, local
return;
}
let profile;
try {
profile = profile_helper_1.default.runtimeProfile(cmd.profile);
new resources_config_1.default(path_1.default.join(process.cwd(), constants_1.default.FILE_PATH.ASK_RESOURCES_JSON_CONFIG));
}
catch (err) {
messenger_1.default.getInstance().error(err);
throw err;
}
const skillId = resources_config_1.default.getInstance().getSkillId(profile);
const smapiClient = new smapi_client_1.default({
profile,
doDebug: cmd.debug,
});
return new Promise((resolve, reject) => {
smapiClient.skill.alexaHosted.getAlexaHostedSkillMetadata(skillId, (metadataErr, metaDataResponse) => {
let error = this._checkError(metadataErr, metaDataResponse);
if (error) {
reject(error);
}
const { repository } = metaDataResponse.body.alexaHosted;
smapiClient.skill.alexaHosted.getGitCredentials(skillId, repository.url, (err, response) => {
error = this._checkError(err, response);
if (error) {
reject(error);
}
const { repositoryCredentials } = response.body;
const output = `username=${repositoryCredentials.username}\npassword=${repositoryCredentials.password}`;
messenger_1.default.getInstance().info(output);
resolve();
});
});
});
}
_checkError(err, response) {
if (err) {
messenger_1.default.getInstance().error(err);
return err;
}
if (response.statusCode >= 300) {
const error = json_view_1.default.toString(response.body);
messenger_1.default.getInstance().error(error);
return error;
}
}
}
exports.default = GitCredentialsHelperCommand;
exports.createCommand = new GitCredentialsHelperCommand(option_model_json_1.default).createCommand();