UNPKG

@dappnode/dappnodesdk

Version:

dappnodesdk is a tool to make the creation of new dappnode packages as simple as possible. It helps to initialize and publish in ethereum blockchain

103 lines 3.53 kB
import inquirer from "inquirer"; import semver from "semver"; import { defaultVariantsEnvName, defaultVariantsDirName, defaultVariantsEnvValues } from "../../params.js"; import { shell } from "../../utils/shell.js"; import { defaultVersion } from "./params.js"; import { validateVariantsInput } from "./validation.js"; export async function getUserAnswers({ useVariants, useDefaults, defaultName }) { const defaultAuthor = await shell("whoami"); const defaultVariantAnswers = { envName: defaultVariantsEnvName, variantsDir: defaultVariantsDirName, variants: defaultVariantsEnvValues }; const defaultAnswers = { name: defaultName, version: defaultVersion, description: `${defaultName} description`, avatar: "", type: "service", author: defaultAuthor, license: "GPL-3.0", ...(useVariants ? defaultVariantAnswers : {}) }; if (useDefaults) return defaultAnswers; console.log(`This utility will walk you through creating a dappnode_package.json file. It only covers the most common items, and tries to guess sensible defaults. `); const answers = await getSinglePackageAnswers(defaultAnswers); if (useVariants) { const variantAnswers = await getVariantAnswers(); return { ...answers, ...variantAnswers }; } return answers; } async function getSinglePackageAnswers(defaultAnswers) { return inquirer.prompt([ { type: "input", name: "name", default: defaultAnswers.name, message: "DAppNodePackage name" }, { type: "input", name: "version", default: defaultAnswers.version, message: "Version", validate: (val) => !semver.valid(val) || !(semver.eq(val, "1.0.0") || semver.eq(val, "0.1.0") || semver.eq(val, "0.0.1")) ? "the version needs to be valid semver. If this is the first release, the version must be 1.0.0, 0.1.0 or 0.0.1 " : true }, { type: "input", name: "description", message: "Description", default: defaultAnswers.description }, { type: "input", message: "Author", name: "author", default: defaultAnswers.author }, { type: "input", message: "License", name: "license", default: defaultAnswers.license } ]); } async function getVariantAnswers() { const variantAnswers = await inquirer.prompt([ { type: "input", name: "variantsDir", default: defaultVariantsDirName, message: "Variants directory, where the different package variants are located" }, { type: "input", name: "variants", message: "Variants (comma separated)", default: defaultVariantsEnvValues, validate: (input) => validateVariantsInput(input) }, { type: "input", name: "envName", message: "Environment variable name to differentiate the variants (Example: NETWORK)", default: defaultVariantsEnvName } ]); return { ...variantAnswers, variants: variantAnswers.variants.split(",").map((s) => s.trim()) }; } //# sourceMappingURL=prompt.js.map