Add release notes history tracking, config via CLI

This commit is contained in:
Kyle Suss 2020-06-23 13:18:34 -06:00
parent d2c28f6686
commit 94a5e90f32
3 changed files with 25 additions and 5 deletions

View File

@ -124,6 +124,20 @@ const updateCheck = async (version) => {
return result;
};
const getReleaseNotesHistory = async (version) => {
let result;
try {
const fromCache = await cache.get('releaseNotesHistory', []);
if (!fromCache.includes(version)) {
await cache.set('releaseNotesHistory', [...fromCache, version]);
}
result = { success: true, current: version, history: fromCache };
} catch (error) {
result = { success: false };
}
return result;
};
function listenToServer(server, listenAddr) {
let serverResolve = () => {};
let serverReject = () => {};
@ -253,18 +267,21 @@ function openInBrowser(address) {
export async function buildDevStandalone(options) {
try {
const { host, extendServer, packageJson, versionUpdates } = options;
const { host, extendServer, packageJson, versionUpdates, releaseNotes } = options;
const { version } = packageJson;
const [port, check] = await Promise.all([
const [port, versionCheck, releaseNotesHistory] = await Promise.all([
getFreePort(options.port),
versionUpdates
? updateCheck(version)
: Promise.resolve({ success: false, data: {}, time: Date.now() }),
releaseNotes ? getReleaseNotesHistory(version) : Promise.resolve({ success: false }),
]);
// eslint-disable-next-line no-param-reassign
options.versionCheck = check;
/* eslint-disable no-param-reassign */
options.versionCheck = versionCheck;
options.releaseNotesHistory = releaseNotesHistory;
/* eslint-enable no-param-reassign */
if (!options.ci && !options.smokeTest && options.port != null && port !== options.port) {
const { shouldChangePort } = await inquirer.prompt({
@ -313,7 +330,7 @@ export async function buildDevStandalone(options) {
const serverListening = listenToServer(server, listenAddr);
const [updateInfo] = await Promise.all([Promise.resolve(check), serverListening]);
const [updateInfo] = await Promise.all([Promise.resolve(versionCheck), serverListening]);
const proto = options.https ? 'https' : 'http';
const address = `${proto}://${options.host || 'localhost'}:${port}/`;

View File

@ -28,6 +28,7 @@ async function getCLI(packageJson) {
.option('--loglevel [level]', 'Control level of logging during build')
.option('--quiet', 'Suppress verbose build output')
.option('--no-version-updates', 'Suppress update check', true)
.option('--no-release-notes', 'Suppress release notes', true)
.option('--no-dll', 'Do not use dll reference')
.option('--debug-webpack', 'Display final webpack configurations for debugging purposes')
.option(

View File

@ -36,6 +36,7 @@ export default async ({
cache,
previewUrl,
versionCheck,
releaseNotesHistory,
presets,
}) => {
const { raw, stringified } = loadEnv();
@ -86,6 +87,7 @@ export default async ({
globals: {
LOGLEVEL: logLevel,
VERSIONCHECK: JSON.stringify(versionCheck),
RELEASE_NOTES_HISTORY: JSON.stringify(releaseNotesHistory),
DOCS_MODE: docsMode, // global docs mode
PREVIEW_URL: previewUrl, // global preview URL
},