@veecode-platform/safira-cli
Version:
Generate a microservice project from your spec.
77 lines (76 loc) • 3.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GitUtils = void 0;
const tslib_1 = require("tslib");
const color_1 = tslib_1.__importDefault(require("@oclif/color"));
const set_1 = tslib_1.__importDefault(require("../commands/bitbucket/credential/set"));
const set_2 = tslib_1.__importDefault(require("../commands/github/credential/set"));
const set_3 = tslib_1.__importDefault(require("../commands/gitlab/credential/set"));
const git_commands_1 = require("./git-commands");
const git_providers_1 = require("./git-providers");
class GitUtils {
static parseToGitUrl(url) {
url = url.trim();
if (url.startsWith("git@") && url.endsWith(".git")) {
const splitPath = url.replace("git@", "").split(":");
return `https://${splitPath[0]}/${splitPath[1]}`;
}
return url;
}
static async getRepositoryData(urlParam) {
if (!urlParam)
urlParam = await git_commands_1.GitCommand.instance.getRemoteOriginUrl();
const gitUrl = this.parseToGitUrl(urlParam);
const url = new URL(gitUrl);
const host = url.host;
const path = url.pathname.replace(/^\//, "");
const pathSplit = path.split("/");
const repoName = pathSplit[pathSplit.length - 1].replace(".git", "");
const owner = pathSplit[pathSplit.length - 2];
const provider = git_providers_1.GitProviderEnum[host.replace(/\.[.a-z]+\/?.*/, "")];
return {
provider: provider,
host: host,
owner: owner,
name: repoName,
};
}
static generateRepoUrl(projectName, provider) {
projectName = projectName.trim();
switch (provider) {
case git_providers_1.GitProviderEnum.bitbucket:
return `https://bitbucket.org/${projectName}.git`;
case git_providers_1.GitProviderEnum.github:
return `https://github.com/${projectName}.git`;
case git_providers_1.GitProviderEnum.gitlab:
return `https://gitlab.com/${projectName}.git`;
default:
throw new Error("Repository not found, please enter a valid repository");
}
}
static validatePath(path) {
path = path.includes(" ") ? path.replace(/ /g, "") : path;
if (path.startsWith("/"))
return `.${path}`;
if (!path.startsWith("./"))
return `./${path}`;
return path;
}
static async askByGitCredentials(provider) {
console.log(color_1.default.bold(color_1.default.yellowBright(`You need to configure your credentials for ${provider}`)));
switch (provider) {
case git_providers_1.GitProviderEnum.bitbucket:
await set_1.default.run([]);
break;
case git_providers_1.GitProviderEnum.github:
await set_2.default.run([]);
break;
case git_providers_1.GitProviderEnum.gitlab:
await set_3.default.run([]);
break;
default:
throw new Error("Git Provider not implemented");
}
}
}
exports.GitUtils = GitUtils;