UNPKG

@litexa/core

Version:

Litexa, a programming language for writing Alexa skills

75 lines (58 loc) 2.23 kB
### # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ### require('@src/getter.polyfill') extensions = require('../fileExtensions') fs = require 'fs' manifest = require('../manifest') path = require 'path' Generator = require('./generator') skillStoreTitleValidate = require('./validators/skillStoreTitleValidator') class SkillManifestGenerator extends Generator @description: 'skill manifest' constructor: (args) -> super(args) @inquirer = args.inputHandler # public interface generate: -> extension = extensions[@_configLanguage()] unless extension? throw new Error "#{@_configLanguage()} language extension not found" filename = "skill.#{extension}" filePath = path.join @_rootPath(), "skill.#{extension}" if fs.existsSync filePath @logger.log "existing #{filename} found -> skipping creation" return Promise.resolve() options = { type: 'input' name: 'storeTitleName' message: @_inputQuestion() validate: skillStoreTitleValidate } options.default = @defaultProjectName if @defaultProjectName? result = await @inquirer.prompt(options) name = result.storeTitleName skillManifest = manifest.create name, @_configLanguage() fs.writeFileSync filePath, skillManifest, 'utf8' @logger.log "creating #{filename} -> contains skill manifest and should be version controlled" Promise.resolve() # "private" methods _inputQuestion: -> question = 'What would you like the skill store title of the project to be?' if @defaultProjectName? question = "#{question} (default: \"#{@defaultProjectName}\")" question _configLanguage: -> @options.configLanguage # Getters / Setters @getter 'defaultProjectName', -> return @nameCandidate if @nameCandidate nameCandidate = @options.projectConfig?.name try @nameCandidate = nameCandidate if skillStoreTitleValidate(nameCandidate) @nameCandidate module.exports = SkillManifestGenerator