generated from SAP/repository-template
-
Notifications
You must be signed in to change notification settings - Fork 106
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into andre/eslint
- Loading branch information
Showing
40 changed files
with
990 additions
and
590 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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
#!/usr/bin/env node | ||
|
||
// cds-typer Synopsis Extractor | ||
// ============================ | ||
// runs "npx @cap-js/cds-typer --help" to extract the synopsis and version | ||
// of the latest cds-typer version and writes it to a markdown file | ||
// that is included in the cds-typer documentation page. | ||
|
||
import * as fs from 'node:fs' | ||
import * as path from 'node:path' | ||
import * as proc from 'node:child_process' | ||
import * as util from 'node:util' | ||
|
||
const exec = util.promisify(proc.exec) | ||
const tool = '@cap-js/cds-typer' | ||
const includingFile = path.join('tools', 'cds-typer.md') | ||
const synopsisFile = path.join('tools', 'cds-typer_help-output.md') | ||
|
||
const toMarkdown = (version, synopsis) => [ | ||
'<!-- this file is automatically generated and updated by a github action -->', | ||
'```log', | ||
`> ${tool}@${version} --help`, | ||
'', | ||
synopsis, | ||
'```' | ||
].join('\n') | ||
|
||
try { | ||
const { stdout: version } = await exec(`npx ${tool} --version`) | ||
const { stdout: synopsis } = await exec(`npx ${tool} --help`) | ||
|
||
// some very basic plausibility checks to make sure we don't | ||
// end up with garbage or npx errors in the markdown | ||
if (!/\d+\.\d+\.\d+/.test(version)) { | ||
throw new Error(`unexpected version: ${version}`) | ||
} | ||
if (!synopsis || !/SYNOPSIS/.test(synopsis)) { | ||
throw new Error(`unexpected synopsis: ${synopsis}`) | ||
} | ||
if (!fs.existsSync(includingFile)) { | ||
throw new Error(`could not find file '${includingFile}', where to include the synopsis. Has the documentation for cds-typer moved?`) | ||
} | ||
fs.writeFileSync(synopsisFile, toMarkdown(version.trim(), synopsis)) | ||
} catch (e) { | ||
console.error(`could not run cds-typer to generate synopsis: ${e.message}`) | ||
} |
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,47 @@ | ||
name: Update CLI Texts | ||
|
||
on: | ||
workflow_dispatch: | ||
schedule: | ||
# Runs every Wednesday at 02:45 AM (UTC) | ||
- cron: '45 2 * * 3' | ||
|
||
permissions: | ||
contents: write | ||
pull-requests: write | ||
|
||
jobs: | ||
run: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Node.js | ||
uses: actions/setup-node@v4 | ||
with: | ||
node-version: '20' | ||
|
||
- name: Extract CLI texts | ||
run: | | ||
npm i -g @sap/cds-dk | ||
.github/cli/grab-cli-texts.sh | ||
- name: Check for changes | ||
run: | | ||
git config --global user.name 'github-actions[bot]' | ||
git config --global user.email 'github-actions[bot]@users.noreply.github.com' | ||
if git diff --exit-code; then | ||
echo "No changes detected. Exiting." | ||
exit 0 | ||
fi | ||
- name: Create Pull Request | ||
uses: peter-evans/create-pull-request@v7 | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
branch: "update-cds-cli-texts" | ||
commit-message: "Update CLI texts" | ||
title: "chore: Update CLI texts" | ||
body: "Updates the output of cds CLI texts to the latest version." |
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
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
Oops, something went wrong.