UNPKG

@pagopa/dx-cli

Version:

A CLI useful to manage DX tools.

25 lines (24 loc) 1.68 kB
import { DefaultAzureCredential } from "@azure/identity"; import { Result, ResultAsync } from "neverthrow"; import nodePlop from "node-plop"; import path from "node:path"; import { Octokit } from "octokit"; import { AzureSubscriptionRepository } from "../azure/cloud-account-repository.js"; import { AzureCloudAccountService } from "../azure/cloud-account-service.js"; import createDeploymentEnvironmentGenerator from "../plop/generators/environment/index.js"; import createMonorepoGenerator from "../plop/generators/monorepo/index.js"; export const initPlop = () => ResultAsync.fromPromise(nodePlop(), () => new Error("Failed to initialize plop")); export const getGenerator = (plopAPI) => Result.fromThrowable(plopAPI.getGenerator, () => new Error("Generator not found")); export const getPrompts = (generator) => ResultAsync.fromPromise(generator.runPrompts(), (cause) => new Error("Failed to run the generator prompts", { cause })); export const setMonorepoGenerator = (plop) => { const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN }); const templatesPath = path.join(import.meta.dirname, "../../../templates/monorepo"); createMonorepoGenerator(plop, templatesPath, octokit); }; export const setDeploymentEnvironmentGenerator = (plop) => { const credential = new DefaultAzureCredential(); const cloudAccountRepository = new AzureSubscriptionRepository(credential); const cloudAccountService = new AzureCloudAccountService(credential); const templatesPath = path.join(import.meta.dirname, "../../../templates/environment"); createDeploymentEnvironmentGenerator(plop, templatesPath, cloudAccountRepository, cloudAccountService); };