Skip to content

Commit 4ec1f0f

Browse files
committed
chore: convert stackbrew to MJS
1 parent 14b1d12 commit 4ec1f0f

3 files changed

Lines changed: 19 additions & 21 deletions

File tree

‎.github/workflows/official-pr.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ on:
1010
- '**/Dockerfile'
1111
- '**/docker-entrypoint.sh'
1212
- 'versions.json'
13-
- 'stackbrew.js'
13+
- 'stackbrew.mjs'
1414

1515
jobs:
1616
pr:
@@ -36,7 +36,7 @@ jobs:
3636
- name: Generate Stackbrew for diff
3737
run: |
3838
cd docker-node
39-
./stackbrew.js > ../official-images/library/node
39+
./stackbrew.mjs > ../official-images/library/node
4040
4141
- name: Create PR in official-images
4242
id: create-pr

‎package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"type": "commonjs",
66
"scripts": {
77
"build": "node build-automation.mjs",
8+
"stackbrew": "node stackbrew.mjs",
89
"format:toc": "doctoc --update-only .",
910
"format:toc:check": "doctoc --update-only --dryrun .",
1011
"format:prettier": "prettier --write .",

stackbrew.js renamed to stackbrew.mjs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
#!/usr/bin/env node
22

3-
const fs = require('fs');
4-
const path = require('path');
3+
import { readFileSync } from 'node:fs';
4+
import { basename, join } from 'node:path';
5+
import { execSync } from 'node:child_process';
56

67
// Grab last git commit
78
function getCommitHasForPath(path) {
8-
return require('child_process')
9-
.execSync(`git log -1 --format=%H HEAD -- ${path}`)
10-
.toString()
11-
.trim();
9+
return execSync(`git log -1 --format=%H HEAD -- ${path}`).toString().trim();
1210
}
1311

14-
const stackbrewPath = path.basename(__filename);
12+
const stackbrewPath = basename(import.meta.filename);
1513

1614
// Header
1715
let stackbrew = `# this file is generated via https://github.com/nodejs/docker-node/blob/${getCommitHasForPath(stackbrewPath)}/${stackbrewPath}
@@ -21,8 +19,7 @@ GitRepo: https://github.com/nodejs/docker-node.git
2119
GitFetch: refs/heads/main\n`;
2220

2321
// Loop versions
24-
25-
const config = require('./versions.json');
22+
const config = JSON.parse(readFileSync('versions.json'));
2623

2724
const versions = Object.keys(config).reverse();
2825

@@ -45,13 +42,13 @@ for (const version of versions) {
4542
let defaultDebian = config[version]['debian-default'];
4643
let variants = config[version].variants;
4744
for (const variant in variants) {
48-
let dockerfilePath = path.join(version, variant, 'Dockerfile');
45+
let dockerfilePath = join(version, variant, 'Dockerfile');
4946
let isAlpine = alpineRE.test(variant);
5047
let isSlim = slimRE.test(variant);
5148
let isDefaultSlim = new RegExp(`${defaultDebian}-slim`).test(variant);
5249

5350
// Get full version from the Dockerfile
54-
let dockerfile = fs.readFileSync(dockerfilePath, 'utf-8');
51+
let dockerfile = readFileSync(dockerfilePath, 'utf-8');
5552
let fullVersion = dockerfile.match(
5653
/ENV NODE_VERSION=(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)/,
5754
);
@@ -157,14 +154,14 @@ for (const version of versions) {
157154
}
158155
}
159156

160-
// remove duplicates
161-
tags = tags.filter((x, i, a) => a.indexOf(x) == i);
162-
tags = tags.sort();
163-
let directory = `${version}/${variant}`;
164-
stackbrew += `\nTags: ${tags.join(', ')}\n`;
165-
stackbrew += `Architectures: ${config[version].variants[variant].join(', ')}\n`;
166-
stackbrew += `GitCommit: ${getCommitHasForPath(directory)}\n`;
167-
stackbrew += `Directory: ${directory}\n`;
157+
stackbrew += `
158+
Tags: ${tags
159+
.filter((x, i, a) => a.indexOf(x) == i)
160+
.sort()
161+
.join(', ')}
162+
Architectures: ${config[version].variants[variant].join(', ')}
163+
GitCommit: ${getCommitHasForPath(`${version}/${variant}`)}
164+
Directory: ${`${version}/${variant}`}\n`;
168165
}
169166
}
170167

0 commit comments

Comments
 (0)