1
0
mirror of synced 2025-12-21 02:46:50 -05:00
Files
docs/script/enterprise-server-releases/release-banner.js
Lucas Costi ee29fedb4e Remove breaking commander functions (#20825)
.passCommandToAction() is undefined, and was removed in Commander 7.0.0. See release note: a9c9f17c7e/CHANGELOG.md (deleted)
2021-08-12 20:24:56 +00:00

63 lines
1.9 KiB
JavaScript
Executable File

#!/usr/bin/env node
// [start-readme]
//
// This script creates or removes a release candidate banner for a specified version.
//
// [end-readme]
import fs from 'fs/promises'
import path from 'path'
import program from 'commander'
import yaml from 'js-yaml'
import { allVersions } from '../../lib/all-versions.js'
const releaseCandidateFile = 'data/variables/release_candidate.yml'
const releaseCandidateYaml = path.join(process.cwd(), releaseCandidateFile)
const allowedActions = ['create', 'remove']
program
.description('Create or remove a release candidate banner for the provided docs version.')
.option(`-a, --action <${allowedActions.join(' or ')}>`, 'Create or remove the banner.')
.option(
'-v, --version <version>',
'The version the banner applies to. Must be in <plan@release> format.'
)
.parse(process.argv)
const options = program.opts()
if (!allowedActions.includes(options.action)) {
console.log(`Error! You must specify --action <${allowedActions.join(' or ')}>.`)
process.exit(1)
}
if (!Object.keys(allVersions).includes(options.version)) {
console.log(
'Error! You must specify --version with the full name of a supported version, e.g., enterprise-server@2.22.'
)
process.exit(1)
}
// Load the release candidate variable
const releaseCandidateData = yaml.load(await fs.readFile(releaseCandidateYaml, 'utf8'))
// Create or remove the variable
if (options.action === 'create') {
releaseCandidateData.version = options.version
}
if (options.action === 'remove') {
releaseCandidateData.version = ''
}
// Update the file
await fs.writeFile(releaseCandidateYaml, yaml.dump(releaseCandidateData))
// Display next steps
console.log(`\nDone! Commit the update to ${releaseCandidateFile}. This ${options.action}s the banner for ${options.version}.
- To change the banner text, you can edit header.notices.release_candidate in data/ui.yml.
- To change the banner styling, you can edit includes/header-notification.html.
`)