259 lines
No EOL
11 KiB
JavaScript
259 lines
No EOL
11 KiB
JavaScript
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
}
|
|
Object.defineProperty(o, k2, desc);
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
}) : function(o, v) {
|
|
o["default"] = v;
|
|
});
|
|
var __importStar = (this && this.__importStar) || function (mod) {
|
|
if (mod && mod.__esModule) return mod;
|
|
var result = {};
|
|
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
__setModuleDefault(result, mod);
|
|
return result;
|
|
};
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.prepareOptions = exports.run = void 0;
|
|
const fse = __importStar(require("fs-extra"));
|
|
const path = __importStar(require("path"));
|
|
const defaults_1 = require("./defaults");
|
|
const git_1 = __importDefault(require("gh-pages/lib/git"));
|
|
function run(dir, options, logger) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
options = yield prepareOptions(options, logger);
|
|
const ghpages = require('gh-pages');
|
|
if (options.dryRun) {
|
|
logger.info('Dry-run / SKIPPED: cleaning of the cache directory');
|
|
}
|
|
else {
|
|
ghpages.clean();
|
|
}
|
|
yield checkIfDistFolderExists(dir);
|
|
yield createNotFoundFile(dir, options, logger);
|
|
yield createCnameFile(dir, options, logger);
|
|
yield createNojekyllFile(dir, options, logger);
|
|
yield publishViaGhPages(ghpages, dir, options, logger);
|
|
if (!options.dryRun) {
|
|
logger.info('🌟 Successfully published via angular-cli-ghpages! Have a nice day!');
|
|
}
|
|
});
|
|
}
|
|
exports.run = run;
|
|
function prepareOptions(origOptions, logger) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
const options = Object.assign(Object.assign({}, defaults_1.defaults), origOptions);
|
|
const util = require('util');
|
|
let debuglog = util.debuglog;
|
|
util.debuglog = set => {
|
|
if (set === 'gh-pages') {
|
|
return function () {
|
|
let message = util.format.apply(util, arguments);
|
|
logger.info(message);
|
|
};
|
|
}
|
|
return debuglog(set);
|
|
};
|
|
if (origOptions.noDotfiles) {
|
|
options.dotfiles = !origOptions.noDotfiles;
|
|
}
|
|
if (origOptions.noNotfound) {
|
|
options.notfound = !origOptions.noNotfound;
|
|
}
|
|
if (origOptions.noNojekyll) {
|
|
options.nojekyll = !origOptions.noNojekyll;
|
|
}
|
|
if (options.dryRun) {
|
|
logger.info('Dry-run: No changes are applied at all.');
|
|
}
|
|
if (options.name && options.email) {
|
|
options['user'] = {
|
|
name: options.name,
|
|
email: options.email
|
|
};
|
|
}
|
|
if (process.env.TRAVIS) {
|
|
options.message +=
|
|
' -- ' +
|
|
process.env.TRAVIS_COMMIT_MESSAGE +
|
|
' \n\n' +
|
|
'Triggered by commit: https://github.com/' +
|
|
process.env.TRAVIS_REPO_SLUG +
|
|
'/commit/' +
|
|
process.env.TRAVIS_COMMIT +
|
|
'\n' +
|
|
'Travis CI build: https://travis-ci.org/' +
|
|
process.env.TRAVIS_REPO_SLUG +
|
|
'/builds/' +
|
|
process.env.TRAVIS_BUILD_ID;
|
|
}
|
|
if (process.env.CIRCLECI) {
|
|
options.message +=
|
|
'\n\n' +
|
|
'Triggered by commit: https://github.com/' +
|
|
process.env.CIRCLE_PROJECT_USERNAME +
|
|
'/' +
|
|
process.env.CIRCLE_PROJECT_REPONAME +
|
|
'/commit/' +
|
|
process.env.CIRCLE_SHA1 +
|
|
'\n' +
|
|
'CircleCI build: ' +
|
|
process.env.CIRCLE_BUILD_URL;
|
|
}
|
|
if (process.env.GITHUB_ACTIONS) {
|
|
options.message +=
|
|
'\n\n' +
|
|
'Triggered by commit: https://github.com/' +
|
|
process.env.GITHUB_REPOSITORY +
|
|
'/commit/' +
|
|
process.env.GITHUB_SHA;
|
|
}
|
|
if (!options.repo) {
|
|
options.repo = yield getRemoteUrl(options);
|
|
}
|
|
if (process.env.GH_TOKEN &&
|
|
options.repo &&
|
|
options.repo.includes('GH_TOKEN')) {
|
|
options.repo = options.repo.replace('GH_TOKEN', process.env.GH_TOKEN);
|
|
}
|
|
else if (options.repo && !options.repo.includes('x-access-token:')) {
|
|
if (process.env.GH_TOKEN) {
|
|
options.repo = options.repo.replace('https://github.com/', `https://x-access-token:${process.env.GH_TOKEN}@github.com/`);
|
|
}
|
|
if (process.env.PERSONAL_TOKEN) {
|
|
options.repo = options.repo.replace('https://github.com/', `https://x-access-token:${process.env.PERSONAL_TOKEN}@github.com/`);
|
|
}
|
|
if (process.env.GITHUB_TOKEN) {
|
|
options.repo = options.repo.replace('https://github.com/', `https://x-access-token:${process.env.GITHUB_TOKEN}@github.com/`);
|
|
}
|
|
}
|
|
return options;
|
|
});
|
|
}
|
|
exports.prepareOptions = prepareOptions;
|
|
function checkIfDistFolderExists(dir) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
if (yield !fse.pathExists(dir)) {
|
|
throw new Error('Dist folder does not exist. Check the dir --dir parameter or build the project first!');
|
|
}
|
|
});
|
|
}
|
|
function createNotFoundFile(dir, options, logger) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
if (!options.notfound) {
|
|
return;
|
|
}
|
|
if (options.dryRun) {
|
|
logger.info('Dry-run / SKIPPED: copying of index.html to 404.html');
|
|
return;
|
|
}
|
|
const indexHtml = path.join(dir, 'index.html');
|
|
const notFoundFile = path.join(dir, '404.html');
|
|
try {
|
|
yield fse.copy(indexHtml, notFoundFile);
|
|
logger.info('404.html file created');
|
|
}
|
|
catch (err) {
|
|
logger.info('index.html could not be copied to 404.html. Proceeding without it.');
|
|
logger.debug('Diagnostic info: ' + err.message);
|
|
return;
|
|
}
|
|
});
|
|
}
|
|
function createCnameFile(dir, options, logger) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
if (!options.cname) {
|
|
return;
|
|
}
|
|
const cnameFile = path.join(dir, 'CNAME');
|
|
if (options.dryRun) {
|
|
logger.info('Dry-run / SKIPPED: creating of CNAME file with content: ' + options.cname);
|
|
return;
|
|
}
|
|
try {
|
|
yield fse.writeFile(cnameFile, options.cname);
|
|
logger.info('CNAME file created');
|
|
}
|
|
catch (err) {
|
|
throw new Error('CNAME file could not be created. ' + err.message);
|
|
}
|
|
});
|
|
}
|
|
function createNojekyllFile(dir, options, logger) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
if (!options.nojekyll) {
|
|
return;
|
|
}
|
|
const nojekyllFile = path.join(dir, '.nojekyll');
|
|
if (options.dryRun) {
|
|
logger.info('Dry-run / SKIPPED: creating a .nojekyll file');
|
|
return;
|
|
}
|
|
try {
|
|
yield fse.writeFile(nojekyllFile, '');
|
|
logger.info('.nojekyll file created');
|
|
}
|
|
catch (err) {
|
|
throw new Error('.nojekyll file could not be created. ' + err.message);
|
|
}
|
|
});
|
|
}
|
|
function publishViaGhPages(ghPages, dir, options, logger) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
if (options.dryRun) {
|
|
logger.info(`Dry-run / SKIPPED: publishing folder '${dir}' with the following options: ` +
|
|
JSON.stringify({
|
|
dir,
|
|
repo: options.repo || 'current working directory (which must be a git repo in this case) will be used to commit & push',
|
|
remote: options.remote,
|
|
message: options.message,
|
|
branch: options.branch,
|
|
name: options.name ? `the name '${options.username} will be used for the commit` : 'local or global git user name will be used for the commit',
|
|
email: options.email ? `the email '${options.cname} will be used for the commit` : 'local or global git user email will be used for the commit',
|
|
dotfiles: options.dotfiles ? `files starting with dot ('.') will be included` : `files starting with dot ('.') will be ignored`,
|
|
notfound: options.notfound ? 'a 404.html file will be created' : 'a 404.html file will NOT be created',
|
|
nojekyll: options.nojekyll ? 'a .nojekyll file will be created' : 'a .nojekyll file will NOT be created',
|
|
cname: options.cname ? `a CNAME file with the content '${options.cname}' will be created` : 'a CNAME file will NOT be created',
|
|
add: options.add ? 'all files will be added to the branch. Existing files will not be removed' : 'existing files will be removed from the branch before adding the new ones',
|
|
}, null, ' '));
|
|
return;
|
|
}
|
|
logger.info('🚀 Uploading via git, please wait...');
|
|
return new Promise((resolve, reject) => {
|
|
ghPages.publish(dir, options, error => {
|
|
if (error) {
|
|
return reject(error);
|
|
}
|
|
resolve(undefined);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
function getRemoteUrl(options) {
|
|
return __awaiter(this, void 0, void 0, function* () {
|
|
const git = new git_1.default(process.cwd(), options.git);
|
|
return yield git.getRemoteUrl(options.remote);
|
|
});
|
|
}
|
|
//# sourceMappingURL=engine.js.map
|