UNPKG

outers

Version:

outers - a all in one package for your day to day use

124 lines 8.89 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var _repositoryCloner_Provider, _repositoryCloner_UserName, _repositoryCloner_Directory, _repositoryCloner_AutoDelete; Object.defineProperty(exports, "__esModule", { value: true }); // Import Package for executeCommand const exec_command_1 = __importDefault(require("../command/exec.command")); // import package from outer const CheckFolderExistence_1 = __importDefault(require("./functions/CheckFolderExistence")); // import package from outer // Import Cloner Functions const Github_function_1 = __importDefault(require("./functions/Github.function")); // To Clone Github Repos const Gitlab_function_1 = __importDefault(require("./functions/Gitlab.function")); // To Clone Gitlab Repos const BitBucket_function_1 = __importDefault(require("./functions/BitBucket.function")); // To Clone BitBucket Repos // Main Class Definitions class repositoryCloner { /** * Constructs a new RepositoryCloner instance. * @param {string} Provider - The name of the provider to use for the repository. * @param {string} [UserName] - The username for the repository. * @param {boolean} [AutoDelete=false] - Whether to delete the old repository after cloning (default is false). * @param {string} [DirectoryName] - The directory to clone the repository (optional). */ constructor(Provider, UserName, AutoDelete = false, DirectoryName) { // Properties _repositoryCloner_Provider.set(this, void 0); // Name of the provider to use for the repository _repositoryCloner_UserName.set(this, void 0); // Username for the repository _repositoryCloner_Directory.set(this, void 0); // Directory to clone the repository (private) _repositoryCloner_AutoDelete.set(this, void 0); // Delete the old repository after cloning (private) __classPrivateFieldSet(this, _repositoryCloner_Provider, Provider.toUpperCase(), "f"); __classPrivateFieldSet(this, _repositoryCloner_UserName, UserName, "f"); __classPrivateFieldSet(this, _repositoryCloner_Directory, DirectoryName, "f"); __classPrivateFieldSet(this, _repositoryCloner_AutoDelete, AutoDelete, "f"); } // Methods /** * Clone a repository from a specified provider to a directory. * @param {string} [RepositoryName] - The name of the repository to clone. * @param {string} [Branch] - Branch name to clone (Default main) * @returns {Promise<bool | undefined>} - A Promise that resolves to true if the download finishes successfully, false if it fails, or undefined if an error occurs. */ Clone(RepositoryName, Branch = "main") { return __awaiter(this, void 0, void 0, function* () { // Check if Repository Name is provided if (!RepositoryName) { throw new Error("Repository Name is not provided"); } // Check if Provider is provided if (!__classPrivateFieldGet(this, _repositoryCloner_Provider, "f")) { throw new Error("Provider is not provided"); } // Check if Username is provided if (!__classPrivateFieldGet(this, _repositoryCloner_UserName, "f")) { throw new Error("Username is not provided"); } // Set Directory Name to Repository Name if not provided if (!__classPrivateFieldGet(this, _repositoryCloner_Directory, "f")) { __classPrivateFieldSet(this, _repositoryCloner_Directory, RepositoryName, "f"); } // Check if directory exists and if auto-delete is enabled const FolderStatus = yield (0, CheckFolderExistence_1.default)(__classPrivateFieldGet(this, _repositoryCloner_Directory, "f"), __classPrivateFieldGet(this, _repositoryCloner_AutoDelete, "f")); // If auto-delete is enabled and directory already exists, throw an error if (__classPrivateFieldGet(this, _repositoryCloner_AutoDelete, "f") === true && FolderStatus.message === "Directory Not Deleted") { throw new Error("Directory already exists & cannot be deleted Automatically"); } // Clone the Repository from the specified provider to the directory if (__classPrivateFieldGet(this, _repositoryCloner_Provider, "f").toUpperCase() === "GITHUB") { // Execute git clone command for GitHub repository & Return It return yield (0, Github_function_1.default)(__classPrivateFieldGet(this, _repositoryCloner_UserName, "f"), RepositoryName, __classPrivateFieldGet(this, _repositoryCloner_Directory, "f"), Branch); } // Clone the Repository from BitBucket to directory if (__classPrivateFieldGet(this, _repositoryCloner_Provider, "f").toUpperCase() === "BITBUCKET") { // Execute git clone command for BitBucket repository return yield (0, BitBucket_function_1.default)(__classPrivateFieldGet(this, _repositoryCloner_UserName, "f"), RepositoryName, __classPrivateFieldGet(this, _repositoryCloner_Directory, "f"), Branch); } // Clone the Repository from GitLab to directory if (__classPrivateFieldGet(this, _repositoryCloner_Provider, "f").toUpperCase() === "GITLAB") { // Execute git clone command for GitLab repository & Return It return yield (0, Gitlab_function_1.default)(__classPrivateFieldGet(this, _repositoryCloner_UserName, "f"), RepositoryName, __classPrivateFieldGet(this, _repositoryCloner_Directory, "f"), Branch); // Clone Gitlab Repo } }); } /** * Clone a repository from the specified URL using git clone command. * @param {string} [RepositoryURL] - The URL of the repository to clone. * @param {string} [Branch] - Branch name to clone (Default main) * @returns {Promise<bool | undefined>} - A Promise that resolves to true if the download finishes successfully, false if it fails, or undefined if an error occurs. */ static Clone(RepositoryURL, Branch = "main") { return __awaiter(this, void 0, void 0, function* () { // Execute the git clone command to clone the repository specified by RepositoryURL const GitStatus = yield (0, exec_command_1.default)(`git clone -b ${Branch} ${RepositoryURL}.git`); // Check if any error occurred during the cloning process if (GitStatus.error && GitStatus.error.code === 128) { return false; // Return false indicating that the download failed } // If no error occurred during cloning, return true indicating that the download finished successfully return true; }); } } _repositoryCloner_Provider = new WeakMap(), _repositoryCloner_UserName = new WeakMap(), _repositoryCloner_Directory = new WeakMap(), _repositoryCloner_AutoDelete = new WeakMap(); exports.default = repositoryCloner; //# sourceMappingURL=Cloner.js.map