From 6a7b4cc745df26c5404b78cbe6d3188da0103f0a Mon Sep 17 00:00:00 2001 From: Michael Kriese Date: Thu, 7 Nov 2024 13:25:04 +0100 Subject: [PATCH] chore: add `@containerbase/eslint-plugin` --- eslint.config.js | 8 ++------ package.json | 1 + pnpm-lock.yaml | 17 +++++++++++++++++ src/cli/command/download-file.spec.ts | 2 +- src/cli/command/init-tool.spec.ts | 2 +- src/cli/command/install-gem.spec.ts | 2 +- src/cli/command/install-npm.spec.ts | 2 +- src/cli/command/install-pip.spec.ts | 2 +- src/cli/command/install-tool.spec.ts | 2 +- src/cli/command/prepare-tool.spec.ts | 2 +- src/cli/command/utils.spec.ts | 2 +- src/cli/index.spec.ts | 2 +- src/cli/install-tool/index.spec.ts | 2 +- src/cli/main.spec.ts | 2 +- src/cli/prepare-tool/index.spec.ts | 2 +- src/cli/proxy.spec.ts | 2 +- src/cli/services/apt.service.spec.ts | 2 +- src/cli/services/compression.service.spec.ts | 2 +- src/cli/services/env.service.spec.ts | 2 +- src/cli/services/http.service.spec.ts | 2 +- src/cli/services/path.service.spec.ts | 2 +- src/cli/services/version.service.spec.ts | 2 +- src/cli/utils/common.spec.ts | 2 +- src/cli/utils/hash.spec.ts | 2 +- src/cli/utils/index.spec.ts | 2 +- src/cli/utils/logger.spec.ts | 2 +- src/cli/utils/versions.spec.ts | 2 +- 27 files changed, 44 insertions(+), 30 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 5583a10783..0d14503a2a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,9 +1,8 @@ +import eslintContainerbase from '@containerbase/eslint-plugin'; import js from '@eslint/js'; import vitest from '@vitest/eslint-plugin'; import eslintConfigPrettier from 'eslint-config-prettier'; -// @ts-expect-error no types available import eslintPluginImport from 'eslint-plugin-import'; -// @ts-expect-error no types available import eslintPluginPromise from 'eslint-plugin-promise'; import globals from 'globals'; import tseslint from 'typescript-eslint'; @@ -29,11 +28,8 @@ export default tseslint.config( eslintPluginImport.flatConfigs.typescript, vitest.configs.recommended, eslintPluginPromise.configs['flat/recommended'], + eslintContainerbase.configs.all, { - plugins: { - '@vitest': vitest, - }, - linterOptions: { reportUnusedDisableDirectives: true, }, diff --git a/package.json b/package.json index f42eae5ce8..e446f2f2c3 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "zod": "3.23.8" }, "devDependencies": { + "@containerbase/eslint-plugin": "1.1.0", "@eslint/js": "9.14.0", "@semantic-release/exec": "6.0.3", "@tsconfig/node20": "20.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77216c2c0b..eb858f1c19 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,6 +77,9 @@ importers: specifier: 3.23.8 version: 3.23.8 devDependencies: + '@containerbase/eslint-plugin': + specifier: 1.1.0 + version: 1.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-promise@7.1.0(eslint@9.14.0))(eslint@9.14.0) '@eslint/js': specifier: 9.14.0 version: 9.14.0 @@ -263,6 +266,14 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@containerbase/eslint-plugin@1.1.0': + resolution: {integrity: sha512-XLwOvyTq5ds8LER9Ou+7aj1hoXwgIedHlAw2efQzF0R65nOmK5xs0o0s0Od4ZKXg9BYs61OGpo+pDaBLdTPiFQ==} + engines: {node: ^20.9.0 || ^22.11.0, pnpm: ^9.0.0} + peerDependencies: + eslint: ^9.0.0 + eslint-plugin-import: ^2.31.0 + eslint-plugin-promise: ^7.0.0 + '@esbuild/aix-ppc64@0.24.0': resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} @@ -3639,6 +3650,12 @@ snapshots: '@colors/colors@1.5.0': optional: true + '@containerbase/eslint-plugin@1.1.0(eslint-plugin-import@2.31.0)(eslint-plugin-promise@7.1.0(eslint@9.14.0))(eslint@9.14.0)': + dependencies: + eslint: 9.14.0 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.13.0(eslint@9.14.0)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.14.0) + eslint-plugin-promise: 7.1.0(eslint@9.14.0) + '@esbuild/aix-ppc64@0.24.0': optional: true diff --git a/src/cli/command/download-file.spec.ts b/src/cli/command/download-file.spec.ts index de0abf66c6..041d8fac7e 100644 --- a/src/cli/command/download-file.spec.ts +++ b/src/cli/command/download-file.spec.ts @@ -13,7 +13,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('index', () => { +describe('cli/command/download-file', () => { beforeEach(() => { for (const key of Object.keys(env)) { if (key.startsWith('URL_REPLACE_')) { diff --git a/src/cli/command/init-tool.spec.ts b/src/cli/command/init-tool.spec.ts index c33ddb0e89..cf0549b7f1 100644 --- a/src/cli/command/init-tool.spec.ts +++ b/src/cli/command/init-tool.spec.ts @@ -11,7 +11,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('index', () => { +describe('cli/command/init-tool', () => { test('init-tool', async () => { const cli = new Cli({ binaryName: 'cli' }); prepareCommands(cli, null); diff --git a/src/cli/command/install-gem.spec.ts b/src/cli/command/install-gem.spec.ts index 97c5e9da48..a223824a75 100644 --- a/src/cli/command/install-gem.spec.ts +++ b/src/cli/command/install-gem.spec.ts @@ -13,7 +13,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('install-gem', () => { +describe('cli/command/install-gem', () => { beforeEach(() => { delete env.RAKE_VERSION; }); diff --git a/src/cli/command/install-npm.spec.ts b/src/cli/command/install-npm.spec.ts index cf5555cdc9..5af3cf59e3 100644 --- a/src/cli/command/install-npm.spec.ts +++ b/src/cli/command/install-npm.spec.ts @@ -13,7 +13,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('install-npm', () => { +describe('cli/command/install-npm', () => { beforeEach(() => { delete env.DEL_CLI_VERSION; }); diff --git a/src/cli/command/install-pip.spec.ts b/src/cli/command/install-pip.spec.ts index 163f634a29..917d1a59e1 100644 --- a/src/cli/command/install-pip.spec.ts +++ b/src/cli/command/install-pip.spec.ts @@ -13,7 +13,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('install-pip', () => { +describe('cli/command/install-pip', () => { beforeEach(() => { delete env.POETRY_VERSION; }); diff --git a/src/cli/command/install-tool.spec.ts b/src/cli/command/install-tool.spec.ts index d9030768a8..5f17a9b768 100644 --- a/src/cli/command/install-tool.spec.ts +++ b/src/cli/command/install-tool.spec.ts @@ -13,7 +13,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('install-tool', () => { +describe('cli/command/install-tool', () => { beforeEach(() => { delete env.NODE_VERSION; }); diff --git a/src/cli/command/prepare-tool.spec.ts b/src/cli/command/prepare-tool.spec.ts index 92fadccd00..e8c664a32b 100644 --- a/src/cli/command/prepare-tool.spec.ts +++ b/src/cli/command/prepare-tool.spec.ts @@ -10,7 +10,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('../install-tool', () => mocks); vi.mock('../prepare-tool', () => mocks); -describe('index', () => { +describe('cli/command/prepare-tool', () => { test('prepare-tool', async () => { const cli = new Cli({ binaryName: 'prepare-tool' }); prepareCommands(cli, 'prepare-tool'); diff --git a/src/cli/command/utils.spec.ts b/src/cli/command/utils.spec.ts index 991a5cad75..5781b349b4 100644 --- a/src/cli/command/utils.spec.ts +++ b/src/cli/command/utils.spec.ts @@ -2,7 +2,7 @@ import { env } from 'node:process'; import { beforeEach, describe, expect, test } from 'vitest'; import { getVersion, isToolIgnored } from './utils'; -describe('utils', () => { +describe('cli/command/utils', () => { beforeEach(() => { delete env.NODE_VERSION; delete env.DEL_CLI_VERSION; diff --git a/src/cli/index.spec.ts b/src/cli/index.spec.ts index 949e0195db..257645dd44 100644 --- a/src/cli/index.spec.ts +++ b/src/cli/index.spec.ts @@ -6,7 +6,7 @@ const mocks = vi.hoisted(() => ({ vi.mock('./main', () => mocks); -describe('index', () => { +describe('cli/index', () => { test('works', async () => { await import('./index'); expect(mocks.main).toHaveBeenCalledTimes(1); diff --git a/src/cli/install-tool/index.spec.ts b/src/cli/install-tool/index.spec.ts index 7b6b4a002d..e5b1ba3883 100644 --- a/src/cli/install-tool/index.spec.ts +++ b/src/cli/install-tool/index.spec.ts @@ -8,7 +8,7 @@ vi.mock('execa'); vi.mock('../tools/bun'); vi.mock('../tools/php/composer'); -describe('index', () => { +describe('cli/install-tool/index', () => { beforeAll(async () => { for (const p of [ 'var/lib/containerbase/tool.prep.d', diff --git a/src/cli/main.spec.ts b/src/cli/main.spec.ts index db8d839ae9..6af128697b 100644 --- a/src/cli/main.spec.ts +++ b/src/cli/main.spec.ts @@ -16,7 +16,7 @@ vi.mock('./utils/common', async (importActual) => ({ validateSystem: vi.fn(), })); -describe('index', () => { +describe('cli/main', () => { test('works', async () => { expect(await main()).toBeUndefined(); }); diff --git a/src/cli/prepare-tool/index.spec.ts b/src/cli/prepare-tool/index.spec.ts index 3430862650..a775cabbcc 100644 --- a/src/cli/prepare-tool/index.spec.ts +++ b/src/cli/prepare-tool/index.spec.ts @@ -14,7 +14,7 @@ vi.mock('node:process', async (importOriginal) => ({ geteuid: () => 0, })); -describe('index', () => { +describe('cli/prepare-tool/index', () => { beforeAll(async () => { for (const p of [ 'var/lib/containerbase/tool.prep.d', diff --git a/src/cli/proxy.spec.ts b/src/cli/proxy.spec.ts index 02c8623404..5e9bdf583d 100644 --- a/src/cli/proxy.spec.ts +++ b/src/cli/proxy.spec.ts @@ -5,7 +5,7 @@ import { bootstrap } from './proxy'; vi.mock('global-agent', () => ({ createGlobalProxyAgent: vi.fn() })); -describe('proxy', () => { +describe('cli/proxy', () => { const httpProxy = 'http://example.org/http-proxy'; const httpsProxy = 'http://example.org/https-proxy'; const noProxy = 'http://example.org/no-proxy'; diff --git a/src/cli/services/apt.service.spec.ts b/src/cli/services/apt.service.spec.ts index e343b43017..18799aec64 100644 --- a/src/cli/services/apt.service.spec.ts +++ b/src/cli/services/apt.service.spec.ts @@ -15,7 +15,7 @@ vi.mock('node:fs/promises', async (importActual) => ({ ...mocks, })); -describe('apt.service', () => { +describe('cli/services/apt.service', () => { let child!: Container; beforeEach(() => { diff --git a/src/cli/services/compression.service.spec.ts b/src/cli/services/compression.service.spec.ts index e25964ea3c..f83550f819 100644 --- a/src/cli/services/compression.service.spec.ts +++ b/src/cli/services/compression.service.spec.ts @@ -4,7 +4,7 @@ import { CompressionService, rootContainer } from '.'; vi.mock('execa'); -describe('compression.service', () => { +describe('cli/services/compression.service', () => { let child!: Container; beforeEach(() => { diff --git a/src/cli/services/env.service.spec.ts b/src/cli/services/env.service.spec.ts index 4e54b845cf..3e9712c4a5 100644 --- a/src/cli/services/env.service.spec.ts +++ b/src/cli/services/env.service.spec.ts @@ -16,7 +16,7 @@ vi.mock('node:process', () => ({ geteuid: undefined, })); -describe('env.service', () => { +describe('cli/services/env.service', () => { let child!: Container; let rootDir: string | undefined; diff --git a/src/cli/services/http.service.spec.ts b/src/cli/services/http.service.spec.ts index 07105d44f4..a4c62aa104 100644 --- a/src/cli/services/http.service.spec.ts +++ b/src/cli/services/http.service.spec.ts @@ -7,7 +7,7 @@ import { scope } from '~test/http-mock'; import { cachePath } from '~test/path'; const baseUrl = 'https://example.com'; -describe('http.service', () => { +describe('cli/services/http.service', () => { let child!: Container; beforeEach(() => { diff --git a/src/cli/services/path.service.spec.ts b/src/cli/services/path.service.spec.ts index 6013744f28..bf26c3c2ff 100644 --- a/src/cli/services/path.service.spec.ts +++ b/src/cli/services/path.service.spec.ts @@ -8,7 +8,7 @@ import { fileRights, pathExists } from '../utils'; import { PathService, rootContainer } from '.'; import { rootPath } from '~test/path'; -describe('path.service', () => { +describe('cli/services/path.service', () => { const path = env.PATH; let child!: Container; diff --git a/src/cli/services/version.service.spec.ts b/src/cli/services/version.service.spec.ts index 5de6ce41e5..a69ceb7c80 100644 --- a/src/cli/services/version.service.spec.ts +++ b/src/cli/services/version.service.spec.ts @@ -4,7 +4,7 @@ import { beforeEach, describe, expect, test } from 'vitest'; import { VersionService, rootContainer } from '.'; import { rootPath } from '~test/path'; -describe('version.service', () => { +describe('cli/services/version.service', () => { let child!: Container; beforeEach(() => { diff --git a/src/cli/utils/common.spec.ts b/src/cli/utils/common.spec.ts index 37e3d20b3a..f04cac1886 100644 --- a/src/cli/utils/common.spec.ts +++ b/src/cli/utils/common.spec.ts @@ -30,7 +30,7 @@ vi.mock('node:os', () => ({ ...osMocks, default: osMocks })); vi.mock('node:process', () => ({ ...procMocks, default: procMocks })); vi.mock('del'); -describe('common', () => { +describe('cli/utils/common', () => { beforeEach(() => { reset(); fsMocks.readFile.mockResolvedValueOnce(`PRETTY_NAME="Ubuntu 22.04.2 LTS" diff --git a/src/cli/utils/hash.spec.ts b/src/cli/utils/hash.spec.ts index 21a73a7e7f..993b953648 100644 --- a/src/cli/utils/hash.spec.ts +++ b/src/cli/utils/hash.spec.ts @@ -3,7 +3,7 @@ import { env } from 'node:process'; import { describe, expect, test } from 'vitest'; import { hash, hashFile } from './hash'; -describe('hash', () => { +describe('cli/utils/hash', () => { test('should hash data with sha256', () => { expect(hash('https://example.com/test.txt', 'sha256')).toBe( 'd1dc63218c42abba594fff6450457dc8c4bfdd7c22acf835a50ca0e5d2693020', diff --git a/src/cli/utils/index.spec.ts b/src/cli/utils/index.spec.ts index a2922344d8..449e11b7e8 100644 --- a/src/cli/utils/index.spec.ts +++ b/src/cli/utils/index.spec.ts @@ -4,7 +4,7 @@ import { cliMode } from '.'; const procMocks = vi.hoisted(() => ({ argv0: '', env: {} })); vi.mock('node:process', () => procMocks); -describe('index', () => { +describe('cli/utils/index', () => { test('cliMode', async () => { expect(cliMode()).toBeNull(); procMocks.argv0 = 'containerbase-cli'; diff --git a/src/cli/utils/logger.spec.ts b/src/cli/utils/logger.spec.ts index e79b7d5bd2..0db7df6c0a 100644 --- a/src/cli/utils/logger.spec.ts +++ b/src/cli/utils/logger.spec.ts @@ -3,7 +3,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest'; // TODO: can't do full coverage because of some vitest mock issues. -describe('logger', () => { +describe('cli/utils/logger', () => { beforeEach(() => { vi.resetModules(); delete env.CONTAINERBASE_LOG_LEVEL; diff --git a/src/cli/utils/versions.spec.ts b/src/cli/utils/versions.spec.ts index d9df546483..1be44e1065 100644 --- a/src/cli/utils/versions.spec.ts +++ b/src/cli/utils/versions.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from 'vitest'; import { isValid, parse } from './versions'; -describe('versions', () => { +describe('cli/utils/versions', () => { test('isValid', () => { expect(isValid('1.0.0')).toBe(true); expect(isValid('abc')).toBe(false);