ness
Version:
✪ No-effort static sites deployed to your AWS account.
55 lines • 6.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getBranch = exports.getProjectName = exports.getStackId = exports.NessContext = void 0;
const path_1 = __importDefault(require("path"));
const git_branch_1 = __importDefault(require("git-branch"));
const react_1 = __importDefault(require("react"));
const file_1 = require("./utils/file");
exports.NessContext = react_1.default.createContext({});
/**
* Get a valid, stable stack ID for this stack in this project on the current branch.
*
* @param stack Stack name (ie, 'web', 'domain', or 'alias').
* @param entry Path to the project root. Defaults to process.cwd().
*/
function getStackId(stack, entry = process.cwd()) {
if (stack === 'support')
return 'ness-toolkit';
return `ness-${stack}-${getProjectName(entry)}-${getBranch(entry)}`;
}
exports.getStackId = getStackId;
/**
* Get the project name. This is pulled from package.name, if package.json is
* present; otherwise, the name of the current working directory is used.
*
* @param entry Path to the project root. Defaults to process.cwd().
*/
function getProjectName(entry = process.cwd()) {
var _a;
const packageJson = (0, file_1.getPackageJson)(entry);
const workingDir = path_1.default.basename(path_1.default.resolve(entry));
return clean((_a = packageJson === null || packageJson === void 0 ? void 0 : packageJson.name) !== null && _a !== void 0 ? _a : workingDir);
}
exports.getProjectName = getProjectName;
/**
* Get the current git branch. Defaults to 'main' if there is no git repository.
*
* @param entry Path to the project root. Defaults to process.cwd().
*/
function getBranch(path = process.cwd()) {
try {
const branchName = git_branch_1.default.sync(path) || 'main';
return clean(branchName);
}
catch (_a) {
return 'main';
}
}
exports.getBranch = getBranch;
function clean(input) {
return input === null || input === void 0 ? void 0 : input.replace(/[\W_]/g, '-');
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF1QjtBQUN2Qiw0REFBK0I7QUFFL0Isa0RBQXlCO0FBQ3pCLHVDQUEyQztBQWE5QixRQUFBLFdBQVcsR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFtQixFQUFFLENBQUMsQ0FBQTtBQUVwRTs7Ozs7R0FLRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsT0FBTyxDQUFDLEdBQUcsRUFBRTtJQUNyRSxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxjQUFjLENBQUE7SUFDOUMsT0FBTyxRQUFRLEtBQUssSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUE7QUFDckUsQ0FBQztBQUhELGdDQUdDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsUUFBZ0IsT0FBTyxDQUFDLEdBQUcsRUFBRTs7SUFDMUQsTUFBTSxXQUFXLEdBQUcsSUFBQSxxQkFBYyxFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsY0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBQ3JELE9BQU8sS0FBSyxDQUFDLE1BQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLElBQUksbUNBQUksVUFBVSxDQUFDLENBQUE7QUFDL0MsQ0FBQztBQUpELHdDQUlDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFNBQVMsQ0FBQyxPQUFlLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDcEQsSUFBSTtRQUNGLE1BQU0sVUFBVSxHQUFHLG9CQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQTtRQUM5QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtLQUN6QjtJQUFDLFdBQU07UUFDTixPQUFPLE1BQU0sQ0FBQTtLQUNkO0FBQ0gsQ0FBQztBQVBELDhCQU9DO0FBRUQsU0FBUyxLQUFLLENBQUMsS0FBYztJQUMzQixPQUFPLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJ1xuaW1wb3J0IGJyYW5jaCBmcm9tICdnaXQtYnJhbmNoJ1xuaW1wb3J0IHtDb21tYW5kfSBmcm9tICdjb21tYW5kZXInXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge2dldFBhY2thZ2VKc29ufSBmcm9tICcuL3V0aWxzL2ZpbGUnXG5pbXBvcnQge05lc3NTZXR0aW5nc30gZnJvbSAnLi91dGlscy9zZXR0aW5ncydcbmltcG9ydCB7RnJhbWV3b3JrfSBmcm9tICcuL3V0aWxzJ1xuXG5leHBvcnQgdHlwZSBOZXNzQ29udGV4dFByb3BzID0ge1xuICByZWFkb25seSBjb21tYW5kPzogQ29tbWFuZFxuICByZWFkb25seSBhY2NvdW50Pzogc3RyaW5nXG4gIHJlYWRvbmx5IGVudj86IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgcmVhZG9ubHkgZnJhbWV3b3JrPzogRnJhbWV3b3JrXG4gIHJlYWRvbmx5IHNldHRpbmdzPzogTmVzc1NldHRpbmdzXG4gIHJlYWRvbmx5IHNldENvbnRleHQ/OiAoY29udGV4dDogTmVzc0NvbnRleHRQcm9wcykgPT4gdm9pZFxufVxuXG5leHBvcnQgY29uc3QgTmVzc0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PE5lc3NDb250ZXh0UHJvcHM+KHt9KVxuXG4vKipcbiAqIEdldCBhIHZhbGlkLCBzdGFibGUgc3RhY2sgSUQgZm9yIHRoaXMgc3RhY2sgaW4gdGhpcyBwcm9qZWN0IG9uIHRoZSBjdXJyZW50IGJyYW5jaC5cbiAqXG4gKiBAcGFyYW0gc3RhY2sgU3RhY2sgbmFtZSAoaWUsICd3ZWInLCAnZG9tYWluJywgb3IgJ2FsaWFzJykuXG4gKiBAcGFyYW0gZW50cnkgUGF0aCB0byB0aGUgcHJvamVjdCByb290LiBEZWZhdWx0cyB0byBwcm9jZXNzLmN3ZCgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhY2tJZChzdGFjazogc3RyaW5nLCBlbnRyeTogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IHN0cmluZyB7XG4gIGlmIChzdGFjayA9PT0gJ3N1cHBvcnQnKSByZXR1cm4gJ25lc3MtdG9vbGtpdCdcbiAgcmV0dXJuIGBuZXNzLSR7c3RhY2t9LSR7Z2V0UHJvamVjdE5hbWUoZW50cnkpfS0ke2dldEJyYW5jaChlbnRyeSl9YFxufVxuXG4vKipcbiAqIEdldCB0aGUgcHJvamVjdCBuYW1lLiBUaGlzIGlzIHB1bGxlZCBmcm9tIHBhY2thZ2UubmFtZSwgaWYgcGFja2FnZS5qc29uIGlzXG4gKiBwcmVzZW50OyBvdGhlcndpc2UsIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGlzIHVzZWQuXG4gKlxuICogQHBhcmFtIGVudHJ5IFBhdGggdG8gdGhlIHByb2plY3Qgcm9vdC4gRGVmYXVsdHMgdG8gcHJvY2Vzcy5jd2QoKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2plY3ROYW1lKGVudHJ5OiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcGFja2FnZUpzb24gPSBnZXRQYWNrYWdlSnNvbihlbnRyeSlcbiAgY29uc3Qgd29ya2luZ0RpciA9IHBhdGguYmFzZW5hbWUocGF0aC5yZXNvbHZlKGVudHJ5KSlcbiAgcmV0dXJuIGNsZWFuKHBhY2thZ2VKc29uPy5uYW1lID8/IHdvcmtpbmdEaXIpXG59XG5cbi8qKlxuICogR2V0IHRoZSBjdXJyZW50IGdpdCBicmFuY2guIERlZmF1bHRzIHRvICdtYWluJyBpZiB0aGVyZSBpcyBubyBnaXQgcmVwb3NpdG9yeS5cbiAqXG4gKiBAcGFyYW0gZW50cnkgUGF0aCB0byB0aGUgcHJvamVjdCByb290LiBEZWZhdWx0cyB0byBwcm9jZXNzLmN3ZCgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnJhbmNoKHBhdGg6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCkpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IGJyYW5jaE5hbWUgPSBicmFuY2guc3luYyhwYXRoKSB8fCAnbWFpbidcbiAgICByZXR1cm4gY2xlYW4oYnJhbmNoTmFtZSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuICdtYWluJ1xuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuKGlucHV0Pzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlucHV0Py5yZXBsYWNlKC9bXFxXX10vZywgJy0nKVxufVxuIl19