generated from SAP/repository-template
-
Notifications
You must be signed in to change notification settings - Fork 104
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make #1294 more generic and update more CLI texts. - Use the `<pre class="log">` approach instead of `log` code fence as it allows us to style the output more. - Convert known terminal escape sequences to formats (mainly `<em>`, `<i>`, `<strong>`). - Remove the versions numbers from the output as these would produce diffs for each new version, although the texts have not changed. - Fix the workflow and produce a PR with a stable title. Parallel PRs seem unnecessary. - GH limitation: that PR cannot trigger new workflows. Workaround is to close and reopen the PR. - Example is #1303 This also gets rid of the [custom renovate config to bump inner-md versions](https://github.com/cap-js/docs/blob/810cd2beedab1f0d9aa6ae0777c8b79a69f8f067/.github/renovate.json#L58-L117) and the corresponding PRs. --------- Co-authored-by: Daniel O'Grady <[email protected]>
- Loading branch information
Showing
15 changed files
with
275 additions
and
245 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#!/usr/bin/env node | ||
|
||
// CLI Help Extractor | ||
// ============================ | ||
// runs "npm exec --package=<tool> -c <cmd>" to extract the command output and version | ||
// of the latest tool version and writes it to stdout | ||
|
||
import * as proc from 'node:child_process' | ||
import * as util from 'node:util' | ||
|
||
const exec = util.promisify(proc.exec) | ||
const pkg = process.argv[2] | ||
if (!pkg) throw new Error('Missing package') | ||
const cmd = process.argv[3] || pkg.split('/').pop() | ||
const cwd = process.argv[4] || process.cwd() | ||
|
||
const toOutput = (str) => [ | ||
'<!-- this file is automatically generated and updated by a github action -->', | ||
`<pre class="log">`, | ||
`> ${cmd}`, | ||
'', | ||
str | ||
.replace(/\n.*home.*[|:].*/g, '') // remove absolute cds home path as it's system-specific | ||
.replace(/\<(.*?)\>/g, '<$1>') // <foo> -> <foo> | ||
.replace(/^\x1b\[1m(.*?)\x1b\[(:?0|39|49)m\n/gm, '<strong>$1</strong>') // bold at beginning of line -> strong | ||
.replace(/(\s*)\x1b\[4m(.*?)\x1b\[(:?0|39|49)m/g, '$1<i>$2</i>') // underline -> i | ||
.replace(/(\s*)\x1b\[\d+m(.*?)\x1b\[(:?0|39|49)m/g, '$1<em>$2</em>') // other colors -> em | ||
, | ||
`</pre>` | ||
].join('\n') | ||
|
||
try { | ||
const version = (await exec(`npm view ${pkg} version`)).stdout.trim() | ||
if (!/\d+\.\d+\.\d+/.test(version)) { | ||
throw new Error(`unexpected version: ${version}`) | ||
} | ||
|
||
const cmdString = `npm exec --package=${pkg}@${version} -c "${cmd}"` | ||
// const cmdString = `${cmd}` // for local testing | ||
console.error(`> ${cmdString}`) // use stderr for debugging output | ||
const { stdout: cmdOut } = await exec(cmdString, {cwd, env: { FORCE_COLOR: 'true', ...process.env }}) | ||
|
||
// some very basic plausibility checks to make sure we don't | ||
// end up with garbage or npx errors in the markdown | ||
if (!cmdOut || !cmdOut.includes('\n')) { | ||
throw new Error(`no or invalid output from: ${cmdString}`) | ||
} | ||
// result is on stdout | ||
console.log(toOutput(cmdOut.trim(), version.trim())) | ||
} catch (e) { | ||
console.error(`could not generate synopsis: ${e.message}`, e) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
#!/usr/bin/env bash | ||
|
||
dir=`dirname -- "$0"` | ||
|
||
# create a temp project to run the commands in | ||
proj=/tmp/your-project | ||
rm -rf ${proj} | ||
mkdir -p `dirname ${proj}` | ||
pushd `dirname ${proj}` && cds init `basename ${proj}` && pushd `basename ${proj}` && npm i && popd && popd | ||
|
||
echo | ||
echo "Grabbing CLI texts..." | ||
${dir}/grab-cli-texts.js @cap-js/cds-typer "cds-typer --help" ${proj} > ${dir}/../../tools/assets/help/cds-typer.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds --help" ${proj} > ${dir}/../../tools/assets/help/cds-help.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds watch --help" ${proj} > ${dir}/../../tools/assets/help/cds-watch.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds version" ${proj} > ${dir}/../../tools/assets/help/cds-version.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds version --markdown" ${proj} > ${dir}/../../tools/assets/help/cds-version-md.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds env requires.db" ${proj} > ${dir}/../../tools/assets/help/cds-env-requires-db.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds env ls requires.db" ${proj} > ${dir}/../../tools/assets/help/cds-env-ls-requires-db.out.md | ||
${dir}/grab-cli-texts.js @sap/cds-dk "cds -e .env.requires.db" ${proj} > ${dir}/../../tools/assets/help/cds-eval-env-requires-db.out.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
<!-- this file is automatically generated and updated by a github action --> | ||
<pre class="log"> | ||
> cds env ls requires.db | ||
|
||
requires.db.credentials.url = <em>':memory:'</em> | ||
requires.db.impl = <em>'@cap-js/sqlite'</em> | ||
requires.db.kind = <em>'sqlite'</em> | ||
</pre> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<!-- this file is automatically generated and updated by a github action --> | ||
<pre class="log"> | ||
> cds env requires.db | ||
|
||
{ | ||
impl: <em>'@cap-js/sqlite'</em>, | ||
credentials: { url: <em>':memory:'</em> }, | ||
kind: <em>'sqlite'</em> | ||
} | ||
</pre> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
<!-- this file is automatically generated and updated by a github action --> | ||
<pre class="log"> | ||
> cds -e .env.requires.db | ||
|
||
{ | ||
impl: <em>'@cap-js/sqlite'</em>, | ||
credentials: { url: <em>':memory:'</em> }, | ||
kind: <em>'sqlite'</em> | ||
} | ||
</pre> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
<!-- this file is automatically generated and updated by a github action --> | ||
<pre class="log"> | ||
> cds --help | ||
|
||
<strong>USAGE</strong> | ||
<em>cds</em> <command> [<args>] | ||
<em>cds</em> <src> = <em>cds compile</em> <src> | ||
<em>cds</em> = <em>cds help</em> | ||
|
||
<strong>COMMANDS</strong> | ||
<em>i</em> | <em>init</em> jump-start cds-based projects | ||
<em>a</em> | <em>add</em> add a feature to an existing project | ||
<em> </em> | <em>gen</em> generate models/data using a descriptive prompt [beta] | ||
<em>y</em> | <em>bind</em> bind application to remote services | ||
<em>m</em> | <em>import</em> add models from external sources | ||
<em>c</em> | <em>compile</em> compile cds models to different outputs | ||
<em>p</em> | <em>parse</em> parses given cds models | ||
<em>s</em> | <em>serve</em> run your services in local server | ||
<em>w</em> | <em>watch</em> run and restart on file changes | ||
<em> </em> | <em>mock</em> call <i>cds serve</i> with mocked service | ||
<em>r</em> | <em>repl</em> read-eval-event loop | ||
<em>e</em> | <em>env</em> inspect effective configuration | ||
<em>b</em> | <em>build</em> prepare for deployment | ||
<em>d</em> | <em>deploy</em> deploy to databases or cloud | ||
<em> </em> | <em>subscribe</em> subscribe a tenant to a multitenant SaaS app | ||
<em> </em> | <em>unsubscribe</em> unsubscribe a tenant from a multitenant SaaS app | ||
<em>l</em> | <em>login</em> login to extensible multitenant SaaS app | ||
<em> </em> | <em>logout</em> logout from extensible multitenant SaaS app | ||
<em> </em> | <em>pull</em> pull base model of extensible SaaS app | ||
<em> </em> | <em>push</em> push extension to extensible SaaS app | ||
<em>t</em> | <em>lint</em> run linter for env or model checks | ||
<em>v</em> | <em>version</em> get detailed version information | ||
<em> </em> | <em>completion</em> add/remove cli completion for cds commands | ||
<em>?</em> | <em>help</em> get detailed usage information | ||
|
||
Learn more about each command using: | ||
<em>cds help</em> <command> or | ||
<em>cds</em> <command> <em>--help</em> | ||
</pre> |
Oops, something went wrong.