UNPKG

ask-cli-x

Version:

Alexa Skills Kit (ASK) Command Line Interfaces

140 lines (139 loc) 5.28 kB
"use strict"; const fs = require("fs-extra"); const path = require("path"); const CONSTANTS = require("../../utils/constants"); const AskResources = require("./ask-resources"); const AskStates = require("./ask-states"); // instance which stores the singleton let instance = null; module.exports = class ResourcesConfig { constructor(askResourcesPath) { if (instance && instance.askResourcesPath === askResourcesPath) { return instance; } this.askResourcesPath = askResourcesPath; this.projectRootPath = path.dirname(askResourcesPath); this.askStatesPath = path.join(this.projectRootPath, CONSTANTS.FILE_PATH.HIDDEN_ASK_FOLDER, CONSTANTS.FILE_PATH.ASK_STATES_JSON_CONFIG); this._loadModel(); instance = this; } /** * When instantiating ResourcesConfig, AskResources must exist, AskStates will automatically be created. */ _loadModel() { // instantiate ask-resources first to make sure the file does exist new AskResources(this.askResourcesPath); // ensure ask-states will exist if (!fs.existsSync(this.askStatesPath)) { AskStates.withContent(this.askStatesPath); } else { new AskStates(this.askStatesPath); } } static getInstance() { return instance; } static dispose() { AskResources.dispose(); AskStates.dispose(); instance = null; } write() { AskResources.getInstance().write(); AskStates.getInstance().write(); } // getter and setter getProfile(profile) { return AskResources.getInstance().getProfile(profile); } setProfile(profile, profileObj) { AskResources.getInstance().setProfile(profile, profileObj); } getSkillId(profile) { return AskStates.getInstance().getSkillId(profile); } setSkillId(profile, skillId) { AskStates.getInstance().setSkillId(profile, skillId); } // Group for the "skillMetadata" getSkillMetaSrc(profile) { return AskResources.getInstance().getSkillMetaSrc(profile); } setSkillMetaSrc(profile, skillMetaSrc) { AskResources.getInstance().setSkillMetaSrc(profile, skillMetaSrc); } getSkillMetaLastDeployHash(profile) { return AskStates.getInstance().getSkillMetaLastDeployHash(profile); } setSkillMetaLastDeployHash(profile, lastDeployHash) { AskStates.getInstance().setSkillMetaLastDeployHash(profile, lastDeployHash); } /** * Gets the last skill deployment type or undefined if there hasn't been a * deployment yet. * * @param {String} profile * @returns "alexa-conversations" | "interaction-model" | undefined */ getSkillMetaLastDeployType(profile) { return AskStates.getInstance().getSkillMetaLastDeployType(profile); } /** * Sets the lastDeployType property in ask-states to the current skill-type being deployed. * * @param {String} profile - user profile name * @param {String} type - "alexa-conversations" | "interaction-model" */ setSkillMetaLastDeployType(profile, type) { AskStates.getInstance().setSkillMetaLastDeployType(profile, type); } // Group for the "code" getCodeSrcByRegion(profile, region) { return AskResources.getInstance().getCodeSrcByRegion(profile, region); } setCodeSrcByRegion(profile, region, src) { AskResources.getInstance().setCodeSrcByRegion(profile, region, src); } getCodeLastDeployHashByRegion(profile, region) { return AskStates.getInstance().getCodeLastDeployHashByRegion(profile, region); } setCodeLastDeployHashByRegion(profile, region, hash) { AskStates.getInstance().setCodeLastDeployHashByRegion(profile, region, hash); } getCodeRegions(profile) { return AskResources.getInstance().getCodeRegions(profile); } getCodeBuildByRegion(profile, region) { const codeSrc = this.getCodeSrcByRegion(profile, region); return AskStates.getInstance().getCodeBuildByRegion(this.projectRootPath, codeSrc); } getTargetEndpoints(profile) { return AskResources.getInstance().getTargetEndpoint(profile); } // Group for the "skillInfrastructure" getSkillInfraType(profile) { return AskResources.getInstance().getSkillInfraType(profile); } setSkillInfraType(profile, type) { AskResources.getInstance().setSkillInfraType(profile, type); } getSkillInfraUserConfig(profile) { return AskResources.getInstance().getSkillInfraUserConfig(profile); } setSkillInfraUserConfig(profile, userConfig) { AskResources.getInstance().setSkillInfraUserConfig(profile, userConfig); } getSkillInfraDeployState(profile) { const infraType = this.getSkillInfraType(profile); return AskStates.getInstance().getSkillInfraDeployState(profile, infraType); } setSkillInfraDeployState(profile, deployState) { const infraType = this.getSkillInfraType(profile); AskStates.getInstance().setSkillInfraDeployState(profile, infraType, deployState); } }; module.exports.BASE = { askcliResourcesVersion: "2020-03-31", profiles: {}, };