Skip to content

Commit b72a3fa

Browse files
authored
[CI]: Improved Detection of Wiki Page Changes (#1061)
* feat-fix(wiki): improve wiki page changed detection * ci(wiki): mention changed files in the commit message
1 parent 39dcf5d commit b72a3fa

File tree

9 files changed

+28
-20
lines changed

9 files changed

+28
-20
lines changed

Diff for: .github/workflows/broken-links-and-wiki.yaml

+7-4
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ jobs:
5353
run: |
5454
npm ci
5555
CHANGED_ANY=false
56+
CHANGED_FILES=()
5657
function update_wiki_page {
5758
# test if the file exists
5859
if [ -f "wiki/$1.md" ]; then
@@ -63,15 +64,16 @@ jobs:
6364
npm run $2 --silent > "wiki/$1.md"
6465
# test if the file changed, but ignore the first line which contains the time stamp
6566
# we additionally used sed to remove any measurement stamp for the comparison as they of course change
66-
67-
tail -n +2 "wiki/$1.md" | sed -E 's/[0-9]+\.[0-9]+ ?ms//g; s/tmp-[A-Za-z0-9-]+//g' > "wiki/$1.md.tmp"
68-
tail -n +2 "wiki/$1-Old.md" | sed -E 's/[0-9]+\.[0-9]+ ?ms//g; s/tmp-[A-Za-z0-9-]+//g' > "wiki/$1-Old.md.tmp"
67+
# additionally, we remove any part "timing": <number>.
68+
tail -n +2 "wiki/$1.md" | sed -E 's/[0-9]+(\.[0-9]+)? ?ms//g; s/tmp-[A-Za-z0-9-]+//g; s/"timing":\s*[0-9]+(\.0-9)?,?//g' > "wiki/$1.md.tmp"
69+
tail -n +2 "wiki/$1-Old.md" | sed -E 's/[0-9]+(\.[0-9]+)? ?ms//g; s/tmp-[A-Za-z0-9-]+//g; s/"timing":\s*[0-9]+(\.0-9)?,?//g' > "wiki/$1-Old.md.tmp"
6970
7071
if ! diff -q "wiki/$1.md.tmp" "wiki/$1-Old.md.tmp"; then
7172
echo "$1 changed!"
7273
echo "CHANGED=true" >> $GITHUB_ENV
7374
CHANGED_ANY=true
7475
git add -f "wiki/$1.md"
76+
CHANGED_FILES+=("$1")
7577
else
7678
echo "$1 did not change!"
7779
fi
@@ -88,7 +90,8 @@ jobs:
8890
if [ $CHANGED_ANY == "true" ]; then
8991
git config --local user.email "[email protected]"
9092
git config --local user.name "GitHub Action"
91-
git commit -m "[skip ci] doc: update generated wiki pages"
93+
CHANGED_FILES_STRING=$(IFS=,; echo "${CHANGED_FILES[*]}")
94+
git commit -m "[skip ci] doc: update generated wiki pages ($CHANGED_FILES_STRING)"
9295
fi
9396
9497
- name: "⬆️ Push changed Wiki pages"

Diff for: src/cli/repl/commands/repl-query.ts

+8-6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { BuiltIn } from '../../../dataflow/environments/built-in';
2020
import { graphToMermaidUrl } from '../../../util/mermaid/dfg';
2121
import { normalizedAstToMermaidUrl } from '../../../util/mermaid/ast';
2222

23+
import { printAsMs } from '../../../util/time';
24+
2325
async function getDataflow(shell: RShell, remainingLine: string) {
2426
return await new PipelineExecutor(DEFAULT_DATAFLOW_PIPELINE, {
2527
shell,
@@ -141,22 +143,22 @@ export function asciiSummaryOfQueryResult(formatter: OutputFormatter, totalInMs:
141143
}
142144
if(query === 'call-context') {
143145
const out = queryResults as QueryResults<'call-context'>['call-context'];
144-
result.push(`Query: ${bold(query, formatter)} (${out['.meta'].timing.toFixed(0)}ms)`);
146+
result.push(`Query: ${bold(query, formatter)} (${printAsMs(out['.meta'].timing, 0)})`);
145147
result.push(asciiCallContext(formatter, out, processed));
146148
continue;
147149
} else if(query === 'dataflow') {
148150
const out = queryResults as QueryResults<'dataflow'>['dataflow'];
149-
result.push(`Query: ${bold(query, formatter)} (${out['.meta'].timing.toFixed(0)}ms)`);
151+
result.push(`Query: ${bold(query, formatter)} (${printAsMs(out['.meta'].timing, 0)})`);
150152
result.push(` ╰ [Dataflow Graph](${graphToMermaidUrl(out.graph)})`);
151153
continue;
152154
} else if(query === 'id-map') {
153155
const out = queryResults as QueryResults<'id-map'>['id-map'];
154-
result.push(`Query: ${bold(query, formatter)} (${out['.meta'].timing.toFixed(0)}ms)`);
156+
result.push(`Query: ${bold(query, formatter)} (${printAsMs(out['.meta'].timing, 0)})`);
155157
result.push(` ╰ Id List: {${summarizeIdsIfTooLong([...out.idMap.keys()])}}`);
156158
continue;
157159
} else if(query === 'normalized-ast') {
158160
const out = queryResults as QueryResults<'normalized-ast'>['normalized-ast'];
159-
result.push(`Query: ${bold(query, formatter)} (${out['.meta'].timing.toFixed(0)}ms)`);
161+
result.push(`Query: ${bold(query, formatter)} (${printAsMs(out['.meta'].timing, 0)})`);
160162
result.push(` ╰ [Normalized AST](${normalizedAstToMermaidUrl(out.normalized.ast)})`);
161163
continue;
162164
}
@@ -172,10 +174,10 @@ export function asciiSummaryOfQueryResult(formatter: OutputFormatter, totalInMs:
172174
}
173175
result.push(` ╰ ${key}: ${JSON.stringify(value)}`);
174176
}
175-
result.push(` - Took ${timing.toFixed(0)}ms`);
177+
result.push(` - Took ${printAsMs(timing, 0)}`);
176178
}
177179

178-
result.push(italic(`All queries together required ≈${results['.meta'].timing.toFixed(0)}ms (1ms accuracy, total ${totalInMs.toFixed(0)}ms)`, formatter));
180+
result.push(italic(`All queries together required ≈${printAsMs(results['.meta'].timing, 0)} (1ms accuracy, total ${printAsMs(totalInMs, 0)})`, formatter));
179181
return formatter.format(result.join('\n'));
180182
}
181183

Diff for: src/documentation/doc-util/doc-dfg.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import { resolveDataflowGraph } from '../../dataflow/graph/resolve-graph';
1010
import type { DataflowDifferenceReport } from '../../dataflow/graph/diff';
1111
import { diffOfDataflowGraphs } from '../../dataflow/graph/diff';
1212
import { guard } from '../../util/assert';
13-
import { printAsMs } from './doc-ms';
1413
import { jsonReplacer } from '../../util/json';
1514
import type { PipelineOutput } from '../../core/steps/pipeline/pipeline';
15+
import { printAsMs } from '../../util/time';
1616

1717
export function printDfGraph(graph: DataflowGraph, mark?: ReadonlySet<MermaidMarkdownMark>) {
1818
return `

Diff for: src/documentation/doc-util/doc-ms.ts

-5
This file was deleted.

Diff for: src/documentation/doc-util/doc-normalized-ast.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import { resolveDataflowGraph } from '../../dataflow/graph/resolve-graph';
99
import type { DataflowDifferenceReport } from '../../dataflow/graph/diff';
1010
import { diffOfDataflowGraphs } from '../../dataflow/graph/diff';
1111
import { guard } from '../../util/assert';
12-
import { printAsMs } from './doc-ms';
1312
import { normalizedAstToMermaid } from '../../util/mermaid/ast';
13+
import { printAsMs } from '../../util/time';
1414

1515
export function printNormalizedAst(ast: RNodeWithParent, prefix = 'flowchart TD\n') {
1616
return `

Diff for: src/documentation/doc-util/doc-query.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { executeQueries } from '../../queries/query';
44
import { PipelineExecutor } from '../../core/pipeline-executor';
55
import { DEFAULT_DATAFLOW_PIPELINE } from '../../core/steps/pipeline/default-pipelines';
66
import { requestFromInput } from '../../r-bridge/retriever';
7-
import { printAsMs } from './doc-ms';
87
import { jsonReplacer } from '../../util/json';
98
import { markdownFormatter } from '../../util/ansi';
109
import { asciiSummaryOfQueryResult } from '../../cli/repl/commands/repl-query';
@@ -13,6 +12,7 @@ import type { SupportedVirtualQueryTypes } from '../../queries/virtual-query/vir
1312
import type { VirtualCompoundConstraint } from '../../queries/virtual-query/compound-query';
1413
import { printDfGraphForCode } from './doc-dfg';
1514
import { jsonWithLimit } from './doc-code';
15+
import { printAsMs } from '../../util/time';
1616

1717
export interface ShowQueryOptions {
1818
readonly showCode?: boolean;

Diff for: src/documentation/doc-util/doc-server-message.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import type { FlowrMessage, IdMessageBase, MessageDefinition } from '../../cli/r
66
import type { FakeServer, FakeSocket } from '../../../test/functionality/_helper/net';
77
import { withSocket } from '../../../test/functionality/_helper/net';
88
import { jsonWithLimit } from './doc-code';
9-
import { printAsMs } from './doc-ms';
109
import { guard } from '../../util/assert';
10+
import { printAsMs } from '../../util/time';
1111

1212
export interface ServerMessageDescription {
1313
readonly title: string

Diff for: src/documentation/print-normalized-ast-wiki.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import { printNormalizedAstForCode } from './doc-util/doc-normalized-ast';
77
import { mermaidHide, printHierarchy, getTypesFromFolderAsMermaid } from './doc-util/doc-types';
88
import path from 'path';
99
import { FlowrGithubBaseRef, FlowrWikiBaseRef, getFileContentFromRoot, getFilePathMd } from './doc-util/doc-files';
10-
import { printAsMs } from './doc-util/doc-ms';
1110
import { getReplCommand } from './doc-util/doc-cli-option';
11+
import { printAsMs } from '../util/time';
1212

1313
async function getText(shell: RShell) {
1414
const rversion = (await shell.usedRVersion())?.format() ?? 'unknown';

Diff for: src/util/time.ts

+8
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,11 @@
66
export function date2string(date: Date = new Date()): string {
77
return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}-${date.getHours()}-${date.getMinutes()}-${date.getSeconds()}-${date.getMilliseconds()}`;
88
}
9+
10+
/**
11+
* Print a number of milliseconds in a human-readable format including correct spacing.
12+
*/
13+
export function printAsMs(ms: number, precision = 2): string {
14+
/* eslint-disable-next-line no-irregular-whitespace*/
15+
return `${ms.toFixed(precision)} ms`;
16+
}

0 commit comments

Comments
 (0)