Skip to content

Commit b66574c

Browse files
committed
switch to ESM and update config/test wiring
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent db4ff6c commit b66574c

12 files changed

Lines changed: 105 additions & 662 deletions

.prettierrc.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,5 @@
66
"singleQuote": true,
77
"trailingComma": "none",
88
"bracketSpacing": false,
9-
"arrowParens": "avoid",
10-
"parser": "typescript"
9+
"arrowParens": "avoid"
1110
}

__tests__/context.test.ts

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,22 @@ import {afterEach, beforeEach, describe, expect, test, vi} from 'vitest';
22
import * as fs from 'fs';
33
import * as os from 'os';
44
import * as path from 'path';
5+
import {fileURLToPath} from 'node:url';
56

6-
import {Builder} from '@docker/actions-toolkit/lib/buildx/builder';
7-
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx';
8-
import {Build} from '@docker/actions-toolkit/lib/buildx/build';
9-
import {Context} from '@docker/actions-toolkit/lib/context';
10-
import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
11-
import {GitHub} from '@docker/actions-toolkit/lib/github';
12-
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
7+
import {Builder} from '@docker/actions-toolkit/lib/buildx/builder.js';
8+
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
9+
import {Build} from '@docker/actions-toolkit/lib/buildx/build.js';
10+
import {Context} from '@docker/actions-toolkit/lib/context.js';
11+
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
12+
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
1313

14-
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder';
15-
import {GitHubRepo} from '@docker/actions-toolkit/lib/types/github';
14+
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder.js';
15+
16+
import * as context from '../src/context.js';
1617

1718
const tmpDir = fs.mkdtempSync(path.join(process.env.TEMP || os.tmpdir(), 'context-'));
1819
const tmpName = path.join(tmpDir, '.tmpname-vi');
19-
import * as context from '../src/context';
20-
21-
import repoFixture from './fixtures/github-repo.json';
22-
vi.spyOn(GitHub.prototype, 'repoData').mockImplementation((): Promise<GitHubRepo> => {
23-
return <Promise<GitHubRepo>>(repoFixture as unknown);
24-
});
20+
const testDir = path.dirname(fileURLToPath(import.meta.url));
2521

2622
vi.spyOn(Context, 'tmpDir').mockImplementation((): string => {
2723
if (!fs.existsSync(tmpDir)) {
@@ -346,7 +342,7 @@ ccc`],
346342
new Map<string, string>([
347343
['context', 'https://github.com/docker/build-push-action.git#refs/heads/master'],
348344
['tag', 'localhost:5000/name/app:latest'],
349-
['secret-files', `MY_SECRET=${path.join(__dirname, 'fixtures', 'secret.txt')}`],
345+
['secret-files', `MY_SECRET=${path.join(testDir, 'fixtures', 'secret.txt')}`],
350346
['file', './test/Dockerfile'],
351347
['builder', 'builder-git-context-2'],
352348
['network', 'host'],

__tests__/fixtures/github-repo.json

Lines changed: 0 additions & 362 deletions
This file was deleted.

__tests__/setup.unit.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ process.env = Object.assign({}, process.env, {
1414
});
1515

1616
const require = createRequire(import.meta.url);
17+
type RequireCacheEntry = NonNullable<(typeof require.cache)[string]>;
1718

1819
const githubMock = {
1920
context: {
@@ -225,7 +226,7 @@ const githubMock = {
225226
vi.mock('@actions/github', () => githubMock);
226227
vi.doMock(require.resolve('@docker/actions-toolkit/node_modules/@actions/github'), () => githubMock);
227228

228-
for (const mod of ['@actions/github', '@docker/actions-toolkit/node_modules/@actions/github']) {
229+
for (const mod of ['@docker/actions-toolkit/node_modules/@actions/github']) {
229230
try {
230231
const resolved = require.resolve(mod);
231232
require.cache[resolved] = {
@@ -235,7 +236,7 @@ for (const mod of ['@actions/github', '@docker/actions-toolkit/node_modules/@act
235236
exports: githubMock,
236237
children: [],
237238
paths: []
238-
} as unknown as NodeModule;
239+
} as RequireCacheEntry;
239240
} catch {
240241
// Ignore unresolved optional paths; vi.mock handles module-level mocking.
241242
}

eslint.config.js

Lines changed: 0 additions & 58 deletions
This file was deleted.

eslint.config.mjs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import {defineConfig} from 'eslint/config';
2+
import js from '@eslint/js';
3+
import tseslint from '@typescript-eslint/eslint-plugin';
4+
import vitest from '@vitest/eslint-plugin';
5+
import globals from 'globals';
6+
import eslintConfigPrettier from 'eslint-config-prettier/flat';
7+
import eslintPluginPrettier from 'eslint-plugin-prettier';
8+
9+
export default defineConfig([
10+
{
11+
ignores: ['.yarn/**/*', 'coverage/**/*', 'dist/**/*']
12+
},
13+
js.configs.recommended,
14+
...tseslint.configs['flat/recommended'],
15+
eslintConfigPrettier,
16+
{
17+
languageOptions: {
18+
globals: {
19+
...globals.node
20+
}
21+
}
22+
},
23+
{
24+
files: ['__tests__/**'],
25+
...vitest.configs.recommended,
26+
languageOptions: {
27+
globals: {
28+
...globals.node,
29+
...vitest.environments.env.globals
30+
}
31+
},
32+
rules: {
33+
...vitest.configs.recommended.rules,
34+
'vitest/no-conditional-expect': 'error',
35+
'vitest/no-disabled-tests': 0
36+
}
37+
},
38+
{
39+
plugins: {
40+
prettier: eslintPluginPrettier
41+
},
42+
rules: {
43+
'prettier/prettier': 'error',
44+
'@typescript-eslint/no-require-imports': [
45+
'error',
46+
{
47+
allowAsImport: true
48+
}
49+
]
50+
}
51+
}
52+
]);

package.json

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
{
22
"name": "docker-build-push",
33
"description": "Build and push Docker images",
4+
"type": "module",
45
"main": "src/main.ts",
56
"scripts": {
67
"build": "ncc build --source-map --minify --license licenses.txt",
7-
"lint": "yarn run prettier && yarn run eslint",
8-
"format": "yarn run prettier:fix && yarn run eslint:fix",
9-
"eslint": "eslint --max-warnings=0 .",
10-
"eslint:fix": "eslint --fix .",
11-
"prettier": "prettier --check \"./**/*.ts\"",
12-
"prettier:fix": "prettier --write \"./**/*.ts\"",
8+
"lint": "eslint --max-warnings=0 .",
9+
"format": "eslint --fix .",
1310
"test": "vitest run"
1411
},
1512
"repository": {
@@ -31,8 +28,6 @@
3128
"handlebars": "^4.7.7"
3229
},
3330
"devDependencies": {
34-
"@eslint/compat": "^2.0.0",
35-
"@eslint/eslintrc": "^3.3.3",
3631
"@eslint/js": "^9.39.2",
3732
"@types/node": "^20.19.27",
3833
"@typescript-eslint/eslint-plugin": "^8.50.0",
@@ -43,8 +38,8 @@
4338
"eslint": "^9.39.2",
4439
"eslint-config-prettier": "^10.1.8",
4540
"eslint-plugin-prettier": "^5.5.4",
41+
"globals": "^17.3.0",
4642
"prettier": "^3.7.4",
47-
"ts-node": "^10.9.2",
4843
"typescript": "^5.9.3",
4944
"vitest": "^4.0.18"
5045
}

src/context.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import * as core from '@actions/core';
22
import * as handlebars from 'handlebars';
33

4-
import {Build} from '@docker/actions-toolkit/lib/buildx/build';
5-
import {Context} from '@docker/actions-toolkit/lib/context';
6-
import {GitHub} from '@docker/actions-toolkit/lib/github';
7-
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
8-
import {Util} from '@docker/actions-toolkit/lib/util';
4+
import {Build} from '@docker/actions-toolkit/lib/buildx/build.js';
5+
import {Context} from '@docker/actions-toolkit/lib/context.js';
6+
import {GitHub} from '@docker/actions-toolkit/lib/github.js';
7+
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
8+
import {Util} from '@docker/actions-toolkit/lib/util.js';
99

1010
export interface Inputs {
1111
'add-hosts': string[];

src/main.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import * as fs from 'fs';
22
import * as path from 'path';
3-
import * as stateHelper from './state-helper';
43
import * as core from '@actions/core';
54
import * as actionsToolkit from '@docker/actions-toolkit';
65

7-
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx';
8-
import {History as BuildxHistory} from '@docker/actions-toolkit/lib/buildx/history';
9-
import {Context} from '@docker/actions-toolkit/lib/context';
10-
import {Docker} from '@docker/actions-toolkit/lib/docker/docker';
11-
import {Exec} from '@docker/actions-toolkit/lib/exec';
12-
import {GitHub} from '@docker/actions-toolkit/lib/github';
13-
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit';
14-
import {Util} from '@docker/actions-toolkit/lib/util';
6+
import {Buildx} from '@docker/actions-toolkit/lib/buildx/buildx.js';
7+
import {History as BuildxHistory} from '@docker/actions-toolkit/lib/buildx/history.js';
8+
import {Context} from '@docker/actions-toolkit/lib/context.js';
9+
import {Docker} from '@docker/actions-toolkit/lib/docker/docker.js';
10+
import {Exec} from '@docker/actions-toolkit/lib/exec.js';
11+
import {GitHub} from '@docker/actions-toolkit/lib/github.js';
12+
import {Toolkit} from '@docker/actions-toolkit/lib/toolkit.js';
13+
import {Util} from '@docker/actions-toolkit/lib/util.js';
1514

16-
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder';
17-
import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker/docker';
18-
import {UploadArtifactResponse} from '@docker/actions-toolkit/lib/types/github';
15+
import {BuilderInfo} from '@docker/actions-toolkit/lib/types/buildx/builder.js';
16+
import {ConfigFile} from '@docker/actions-toolkit/lib/types/docker/docker.js';
17+
import {UploadArtifactResponse} from '@docker/actions-toolkit/lib/types/github.js';
1918

20-
import * as context from './context';
19+
import * as context from './context.js';
20+
import * as stateHelper from './state-helper.js';
2121

2222
actionsToolkit.run(
2323
// main

src/state-helper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import * as core from '@actions/core';
22

3-
import {Build} from '@docker/actions-toolkit/lib/buildx/build';
3+
import {Build} from '@docker/actions-toolkit/lib/buildx/build.js';
44

5-
import {Inputs} from './context';
5+
import {Inputs} from './context.js';
66

77
export const tmpDir = process.env['STATE_tmpDir'] || '';
88

0 commit comments

Comments
 (0)