@uns-kit/core
Version:
Core utilities and runtime building blocks for UNS-based realtime transformers.
104 lines • 4.03 kB
JavaScript
import * as azdev from "azure-devops-node-api";
import chalk from "chalk";
import { readFile } from "fs/promises";
import readline from "node:readline";
import * as path from "path";
import { CleanOptions, simpleGit } from "simple-git";
import fs from "fs-extra";
import { basePath } from "./base-path.js";
const git = simpleGit("./").clean(CleanOptions.FORCE);
export const packageJsonPath = path.join(basePath, "package.json");
const orgUrl = "https://example-org@dev.azure.com/example-org";
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let token = "";
const packageJson = JSON.parse(await readFile(packageJsonPath, "utf8"));
const repoName = packageJson.name;
async function run() {
let repos;
let gitApi;
const project = "example-project";
try {
const authHandler = azdev.getPersonalAccessTokenHandler(token);
const connection = new azdev.WebApi(orgUrl, authHandler);
gitApi = await connection.getGitApi();
repos = await gitApi.getRepositories(project);
}
catch (error) {
console.error("Your AZURE_PAT environment variable has probably expired.");
console.log("Please update your AZURE_PAT environment with a new one on.");
console.log("You can create a new one at[https://dev.azure.com/example-org/_usersSettings/tokens]");
}
if (repos.filter((x) => x.name == repoName).length > 0) {
console.log(chalk.red.bold(`Error: Repository ${repoName} in project ${project} already exists.`));
}
else {
process.stdout.write(`Create ${repoName} in project ${project}`);
try {
await gitApi.createRepository({ name: repoName }, project);
console.log(chalk.green.bold(` ... OK`));
}
catch (error) {
console.error(chalk.red.bold(`\n${error}`));
}
process.stdout.write(`Initialize local git repository on branch master`);
try {
await git.init();
await git.checkoutLocalBranch("master");
await git.add(".");
await git.commit("Initial commit");
console.log(chalk.green.bold(` ... OK`));
}
catch (error) {
console.error(chalk.red.bold(`\n${error}`));
}
process.stdout.write(`Add remote origin.`);
try {
await git.remote([
"add",
"origin",
`git@ssh.dev.azure.com:v3/example-org/example-project/${repoName}`,
]);
console.log(chalk.green.bold(` ... OK`));
}
catch (error) {
console.error(chalk.red.bold(`\n${error}`));
}
process.stdout.write(`Push master to remote`);
try {
await git.push("origin", "master");
console.log(chalk.green.bold(` ... OK`));
}
catch (error) {
console.error(chalk.red.bold(`\n${error}`));
}
process.stdout.write(`Create default config.json from config-template.json`);
try {
fs.copyFileSync(path.join(basePath, 'config-template.json'), path.join(basePath, 'config.json'));
console.log(chalk.green.bold(` ... OK`));
}
catch (error) {
console.error(chalk.red.bold(`\n${error}`));
}
console.log(chalk.green.bold(`\nNow you can add pipeline for ${repoName} in Azure DevOps pipelines for the project ${project}.`));
}
}
console.log(chalk.green.bold(`Create new RTT: ${repoName}\n`));
const envPat = process.env.AZURE_PAT;
if (envPat && envPat.length > 10) {
rl.close();
console.log("Using PAT from your AZURE_PAT environment");
token = envPat;
run();
}
else {
console.log("Could not find AZURE_PAT environment.");
rl.question(`Please enter your PAT, you can create one at [https://dev.azure.com/example-org/_usersSettings/tokens]: `, (newToken) => {
rl.close();
token = newToken;
run();
});
}
//# sourceMappingURL=initialize.js.map