Skip to content

Commit fc1c719

Browse files
committed
chore: consider switching from py to .sh + .cjs
generated-byt : cursor Signed-off-by: Nick Boldt <nboldt@redhat.com>
1 parent 0c50aed commit fc1c719

19 files changed

Lines changed: 1334 additions & 4370 deletions

.claude/memories/ci-e2e-testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ brew install gnu-sed
486486
- [Cluster Login Script](.ci/pipelines/ocp-cluster-claim-login.sh)
487487
- [Test Reporting Script](.ci/pipelines/reporting.sh)
488488
- [Environment Variables](.ci/pipelines/env_variables.sh)
489-
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.py)
489+
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.sh)
490490

491491
## Test Configuration Files (Config Maps)
492492

.claude/rules/ci-e2e-testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ brew install gnu-sed
492492
- [Cluster Login Script](.ci/pipelines/ocp-cluster-claim-login.sh)
493493
- [Test Reporting Script](.ci/pipelines/reporting.sh)
494494
- [Environment Variables](.ci/pipelines/env_variables.sh)
495-
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.py)
495+
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.sh)
496496

497497
## Test Configuration Files (Config Maps)
498498

.cursor/rules/ci-e2e-testing.mdc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,7 @@ brew install gnu-sed
492492
- [Cluster Login Script](.ci/pipelines/ocp-cluster-claim-login.sh)
493493
- [Test Reporting Script](.ci/pipelines/reporting.sh)
494494
- [Environment Variables](.ci/pipelines/env_variables.sh)
495-
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.py)
495+
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.sh)
496496

497497
## Test Configuration Files (Config Maps)
498498

.github/workflows/pr.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,9 @@ jobs:
148148
if: ${{ steps.check-image.outputs.is_skipped != 'true' }}
149149
run: yarn run test --continue --affected
150150

151-
- name: Run Python tests
151+
- name: Run install-dynamic-plugins shell tests
152152
if: ${{ steps.check-image.outputs.is_skipped != 'true' }}
153-
run: pytest scripts/install-dynamic-plugins/test_install-dynamic-plugins.py -v
153+
run: bash scripts/install-dynamic-plugins/test_install-dynamic-plugins.sh
154154

155155
- name: Change directory to dynamic-plugins
156156
if: ${{ steps.check-image.outputs.is_skipped != 'true' }}

.opencode/memories/ci-e2e-testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ brew install gnu-sed
486486
- [Cluster Login Script](.ci/pipelines/ocp-cluster-claim-login.sh)
487487
- [Test Reporting Script](.ci/pipelines/reporting.sh)
488488
- [Environment Variables](.ci/pipelines/env_variables.sh)
489-
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.py)
489+
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.sh)
490490

491491
## Test Configuration Files (Config Maps)
492492

.rulesync/rules/ci-e2e-testing.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ brew install gnu-sed
503503
- [Cluster Login Script](.ci/pipelines/ocp-cluster-claim-login.sh)
504504
- [Test Reporting Script](.ci/pipelines/reporting.sh)
505505
- [Environment Variables](.ci/pipelines/env_variables.sh)
506-
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.py)
506+
- [Dynamic Plugin Installer](scripts/install-dynamic-plugins/install-dynamic-plugins.sh)
507507

508508
## Test Configuration Files (Config Maps)
509509

build/containerfiles/Containerfile

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,10 @@ COPY --from=build --chown=1001:1001 "$CONTAINER_SOURCE"/ ./
267267
COPY $EXTERNAL_SOURCE_NESTED/LICENSE /licenses/
268268

269269
# Copy script to gather dynamic plugins; copy embedded dynamic plugins to root folder; fix permissions
270-
COPY $EXTERNAL_SOURCE_NESTED/scripts/install-dynamic-plugins/install-dynamic-plugins.py $EXTERNAL_SOURCE_NESTED/scripts/install-dynamic-plugins/install-dynamic-plugins.sh ./
271-
RUN chmod -R a+rx ./install-dynamic-plugins.*
270+
COPY $EXTERNAL_SOURCE_NESTED/scripts/install-dynamic-plugins/install-dynamic-plugins.sh \
271+
$EXTERNAL_SOURCE_NESTED/scripts/install-dynamic-plugins/*.cjs \
272+
./
273+
RUN chmod a+rx ./install-dynamic-plugins.sh ./*.cjs
272274

273275
# Fix for https://issues.redhat.com/browse/RHIDP-728
274276
RUN mkdir -p /opt/app-root/src/.npm; chown -R 1001:1001 /opt/app-root/src/.npm

docs/dynamic-plugins/installing-plugins.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ plugins:
7676

7777
### Catalog Entities Extraction
7878

79-
When the `CATALOG_INDEX_IMAGE` is set and the index image contains a `catalog-entities/marketplace` directory, the [`install-dynamic-plugins.py`](../../scripts/install-dynamic-plugins/install-dynamic-plugins.py) will automatically extract these catalog entities to a configurable location.
79+
When the `CATALOG_INDEX_IMAGE` is set and the index image contains a `catalog-entities/marketplace` directory, the [`install-dynamic-plugins.sh`](../../scripts/install-dynamic-plugins/install-dynamic-plugins.sh) will automatically extract these catalog entities to a configurable location.
8080

8181
The extraction destination is governed by the `CATALOG_ENTITIES_EXTRACT_DIR` environment variable:
8282

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env node
2+
/**
3+
* SHA256 of JSON matching Python json.dumps(obj, sort_keys=True, separators=(', ', ': '))
4+
*/
5+
'use strict';
6+
7+
const crypto = require('crypto');
8+
9+
function pyStringify(obj) {
10+
if (obj === null) return 'null';
11+
const t = typeof obj;
12+
if (t === 'boolean') return obj ? 'true' : 'false';
13+
if (t === 'number') {
14+
if (!Number.isFinite(obj)) throw new Error('non-finite number');
15+
return JSON.stringify(obj);
16+
}
17+
if (t === 'string') return JSON.stringify(obj);
18+
if (Array.isArray(obj)) {
19+
const inner = obj.map((x) => pyStringify(x)).join(', ');
20+
return `[${inner}]`;
21+
}
22+
if (t === 'object') {
23+
const keys = Object.keys(obj).sort();
24+
const parts = keys.map((k) => `${JSON.stringify(k)}: ${pyStringify(obj[k])}`);
25+
return `{${parts.join(', ')}}`;
26+
}
27+
throw new Error(`unsupported type ${t}`);
28+
}
29+
30+
let input = '';
31+
process.stdin.setEncoding('utf8');
32+
process.stdin.on('data', (c) => (input += c));
33+
process.stdin.on('end', () => {
34+
const obj = JSON.parse(input);
35+
const s = pyStringify(obj);
36+
const h = crypto.createHash('sha256').update(s, 'utf8').digest('hex');
37+
process.stdout.write(h);
38+
});

0 commit comments

Comments
 (0)