UNPKG

ask-cli-x

Version:

Alexa Skills Kit (ASK) Command Line Interfaces

103 lines (102 loc) 3.82 kB
"use strict"; const fs = require("fs-extra"); const path = require("path"); const CONSTANTS = require("../../utils/constants"); const ConfigFile = require("../abstract-config-file"); // instance which stores the singleton let instance = null; const BASE = { askcliStatesVersion: "2020-03-31", profiles: {}, }; module.exports = class AskStates extends ConfigFile { /** * Constructor for AskStates class * @param {string} filePath * @throws {Error} */ constructor(filePath) { if (instance && instance.path === filePath) { return instance; } // init by calling super() if instance not exists super(filePath); this.read(); instance = this; } static withContent(filePath, content = BASE) { super.withContent(filePath, content); new AskStates(filePath); } static getInstance() { return instance; } static dispose() { instance = null; } // getter and setter getSkillId(profile) { return this.getProperty(["profiles", profile, "skillId"]); } setSkillId(profile, skillId) { this.setProperty(["profiles", profile, "skillId"], skillId); } // Group for the "skillMetadata" getSkillMetaLastDeployHash(profile) { return this.getProperty(["profiles", profile, "skillMetadata", "lastDeployHash"]); } setSkillMetaLastDeployHash(profile, lastDeployHash) { this.setProperty(["profiles", profile, "skillMetadata", "lastDeployHash"], 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 this.getProperty(["profiles", profile, "skillMetadata", "lastDeployType"]); } /** * Sets the last deploy type 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) { this.setProperty(["profiles", profile, "skillMetadata", "lastDeployType"], type); } // Group for the "code" getCodeLastDeployHashByRegion(profile, region) { return this.getProperty(["profiles", profile, "code", region, "lastDeployHash"]); } setCodeLastDeployHashByRegion(profile, region, hash) { this.setProperty(["profiles", profile, "code", region, "lastDeployHash"], hash); } getCodeBuildByRegion(projRoot, codeSrc) { if (!codeSrc) { return null; } /** * Resolve the base path for build folder: * if src is a folder, direct add build folder inside of it; * if src is a file, use the path to the folder it's located as base folder. */ const base = path.resolve(fs.statSync(codeSrc).isDirectory() ? codeSrc : codeSrc.replace(path.basename(codeSrc), "")); const mirrorPath = path.relative(projRoot, base); return { folder: path.join(projRoot, CONSTANTS.FILE_PATH.HIDDEN_ASK_FOLDER, mirrorPath), file: path.join(projRoot, CONSTANTS.FILE_PATH.HIDDEN_ASK_FOLDER, mirrorPath, "build.zip"), }; } // Group for the "skillInfrastructure" getSkillInfraDeployState(profile, infraType) { return this.getProperty(["profiles", profile, "skillInfrastructure", infraType, "deployState"]); } setSkillInfraDeployState(profile, infraType, deployState) { this.setProperty(["profiles", profile, "skillInfrastructure", infraType, "deployState"], deployState); } }; module.exports.BASE = BASE;