UNPKG

terrac

Version:

A minimal private module registry for Terraform and OpenTofu

62 lines (61 loc) 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@oclif/core"); const semver_1 = require("semver"); const Joi = require("joi"); const utils_1 = require("../utils"); const factory_1 = require("../backends/factory"); const requiredConfigSchema = Joi.object({ backend: utils_1.backendConfigSchema.required(), module: utils_1.moduleConfigSchema.optional(), }); class List extends core_1.Command { async run() { const { args, flags } = await this.parse(List); const { name } = args; const workDir = flags['work-directory']; const config = await (0, utils_1.loadConfig)(workDir, (0, utils_1.parseConfigOverwrites)(flags['overwrite-config'])); await (0, utils_1.validateConfig)(requiredConfigSchema, config); const backend = factory_1.BackendFactory.create(config.backend); const modules = await backend.list(name); if (name) { modules.sort((a, b) => { const aVersion = a.version || ''; const bVersion = b.version || ''; return (0, semver_1.gt)(aVersion, bVersion) ? -1 : 1; }); for (const module of modules) { this.log(module.version); } } else { modules.sort((a, b) => a.name.localeCompare(b.name)); for (const module of modules) { this.log(module.name); } } } } exports.default = List; List.description = 'List available modules and versions.'; List.examples = [ '<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> my-module', ]; List.args = { name: core_1.Args.string({ description: 'Module name', required: false, }), }; List.flags = { 'work-directory': core_1.Flags.string({ summary: 'Root directory of the terrac configuration', default: '.', }), 'overwrite-config': core_1.Flags.string({ summary: 'Overwrite terrac configuration', multiple: true, hidden: true, }), };