@solvro/config 2.0.3 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{adonis-MGLA5SOL.js → adonis-GN4AQKAU.js} +4 -8
- package/dist/{adonis-MGLA5SOL.js.map → adonis-GN4AQKAU.js.map} +1 -1
- package/dist/{chunk-VSUL3MI5.js → chunk-LNSDT6IT.js} +2 -6
- package/dist/{chunk-VSUL3MI5.js.map → chunk-LNSDT6IT.js.map} +1 -1
- package/dist/{chunk-AQ5RXFKK.js → chunk-SUGOLX7X.js} +2 -6
- package/dist/{chunk-AQ5RXFKK.js.map → chunk-SUGOLX7X.js.map} +1 -1
- package/dist/{chunk-HM3MY7J3.js → chunk-VMUJRX4H.js} +1 -6
- package/dist/{chunk-HM3MY7J3.js.map → chunk-VMUJRX4H.js.map} +1 -1
- package/dist/{chunk-VD4FWSAD.js → chunk-VXVVMPZI.js} +2 -7
- package/dist/{chunk-VD4FWSAD.js.map → chunk-VXVVMPZI.js.map} +1 -1
- package/dist/cli/index.cjs +997 -0
- package/dist/cli/index.cjs.map +1 -0
- package/dist/cli/index.d.cts +2 -0
- package/dist/cli/index.js +33 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/commitlint/index.cjs +63 -0
- package/dist/commitlint/index.cjs.map +1 -0
- package/dist/commitlint/index.d.cts +5 -0
- package/dist/commitlint/index.js +0 -5
- package/dist/commitlint/index.js.map +1 -1
- package/dist/eslint/index.cjs +1230 -0
- package/dist/eslint/index.cjs.map +1 -0
- package/dist/eslint/index.d.cts +6 -0
- package/dist/eslint/index.js +11 -153
- package/dist/eslint/index.js.map +1 -1
- package/dist/{nestjs-33SQ4ZD2.js → nestjs-SVXAEFXN.js} +5 -9
- package/dist/{nestjs-33SQ4ZD2.js.map → nestjs-SVXAEFXN.js.map} +1 -1
- package/dist/{node-RC2VAG45.js → node-LOZFNKBL.js} +5 -9
- package/dist/{node-RC2VAG45.js.map → node-LOZFNKBL.js.map} +1 -1
- package/dist/prettier/index.cjs +58 -0
- package/dist/prettier/index.cjs.map +1 -0
- package/dist/prettier/index.d.cts +18 -0
- package/dist/prettier/index.js +0 -5
- package/dist/prettier/index.js.map +1 -1
- package/dist/react-CM27K2YV.js +167 -0
- package/dist/react-CM27K2YV.js.map +1 -0
- package/package.json +7 -5
- package/dist/chunk-J5OUMHDO.js +0 -44
- package/dist/chunk-J5OUMHDO.js.map +0 -1
- package/dist/react-PWJWWBLW.js +0 -2205
- package/dist/react-PWJWWBLW.js.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/cli/index.ts","../../package.json","../../src/utils/is-git-clean.ts","../../src/utils/package-json.ts","../../src/utils/git-root.ts","../../src/utils/$$.ts","../../src/utils/run-if-interactive.ts","../../src/utils/polish-confirm.ts","../../src/cli/install-commitlint.ts","../../src/cli/install-husky.ts","../../src/cli/templates/commitlint.ts","../../src/cli/install-eslint.ts","../../src/cli/install-ga.ts","../../src/cli/templates/commit-lint-ci.ts","../../src/cli/templates/adonis-ci.ts","../../src/cli/templates/adonis-ci-migrations.ts","../../src/cli/templates/dependabot.ts","../../src/cli/templates/nestjs-ci.ts","../../src/cli/templates/react-ci.ts","../../src/cli/install-lint-staged.ts","../../src/cli/install-prettier.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport { Command } from \"commander\";\nimport { getUserAgent } from \"package-manager-detector/detect\";\nimport c from \"picocolors\";\n\nimport packageJsonData from \"../../package.json\";\nimport { isGitClean } from \"../utils/is-git-clean\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\nimport { installCommitLint } from \"./install-commitlint\";\nimport { installEslint } from \"./install-eslint\";\nimport { installGithubActions } from \"./install-ga\";\nimport { installLintStaged } from \"./install-lint-staged\";\nimport { installPrettier } from \"./install-prettier\";\n\n// Types\ninterface CliOptions {\n force?: boolean;\n eslint?: boolean;\n prettier?: boolean;\n ghAction?: boolean;\n commitlint?: boolean;\n all?: boolean;\n}\n\n// CLI setup\nconst program = new Command();\nprogram\n .name(\"@solvro/config\")\n .description(\"Solvro's engineering style guide setup\")\n .version(packageJsonData.version)\n .option(\"-f, --force\", \"Skip git clean check\", false)\n .option(\"--eslint\", \"Install ESLint configuration\", false)\n .option(\"--prettier\", \"Install Prettier configuration\", false)\n .option(\"--gh-action\", \"Install GitHub Actions\", false)\n .option(\"--commitlint\", \"Install Commitlint configuration\", false)\n .option(\"-a, --all\", \"Install all tools\", false);\n\nprogram.parse();\nconst options: CliOptions = program.opts();\n\n// Check if running in non-interactive mode (any CLI flags provided)\nconst isNonInteractive = process.argv.length > 2;\n\nasync function main() {\n if (!isNonInteractive) {\n p.intro(c.bold(c.bgBlue(\" @solvro/config \")));\n }\n\n const userAgent = getUserAgent();\n\n if (userAgent !== \"npm\") {\n const packageManager = userAgent ?? \"unknown\";\n const warningMessage = `\n${c.red(c.bold(`⚠️ OSTRZEŻENIE: ${packageManager} nie jest obsługiwany ⚠️`))}\n\nPróbujesz uruchomić ten skrypt z ${c.yellow(packageManager)}'em, ale @solvro/config działa tylko z ${c.yellow(\"npm'em\")}. \n\nSupport dla innych menedżerów pakietów nie jest planowany - chcemy jednolitego stacku technologicznego dla projektów w naszym kochanym kole Solvro.\n\nUżyj zamiast tego npm'a:\n${c.cyan(\"npx @solvro/config\")}`;\n\n if (isNonInteractive) {\n console.error(warningMessage);\n } else {\n p.cancel(warningMessage);\n }\n process.exit(1);\n }\n\n // Git clean check\n if (options.force !== true && !isGitClean()) {\n if (isNonInteractive) {\n console.error(\n \"Repozytorium Git ma niezatwierdzone zmiany. Użyj --force, aby pominąć to sprawdzenie.\",\n );\n process.exit(1);\n }\n\n const isConfirmed = await polishConfirm({\n message: `Masz niezapisane zmiany w Git. Czy chcesz kontynuować?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zapisz zmiany w Git i spróbuj ponownie.\");\n process.exit(1);\n }\n }\n\n const packageJson = new PackageJson();\n\n // Determine project type automatically\n const projectType = await packageJson.getProjectType();\n\n // Project type confirmation (interactive mode only)\n if (!isNonInteractive) {\n if (projectType === \"adonis\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał Adonisa. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zgłoś błąd na GitHubie :(, a my spróbujemy pomóc.\");\n process.exit(1);\n }\n }\n\n if (projectType === \"react\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał Reacta. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed)) {\n p.cancel(\"😡\");\n process.exit(1);\n }\n\n if (!isConfirmed) {\n p.cancel(\"Zgłoś błąd na GitHubie :(, a my spróbujemy pomóc.\");\n process.exit(1);\n }\n }\n\n if (projectType === \"nestjs\") {\n const isConfirmed = await polishConfirm({\n message: `Wygląda jakbyś używał NestJsa. Czy to się zgadza?`,\n });\n\n if (p.isCancel(isConfirmed)) {\n p.cancel(\"😡\");\n process.exit(1);\n }\n }\n\n if (projectType === \"node\") {\n p.cancel(\n \"Nie znaleziono ani Adonisa, Reacta, ani NestJsa. Musisz ręcznie konfigurować projekt.\",\n );\n process.exit(1);\n }\n }\n if (projectType === \"adonis\" || projectType === \"react\") {\n if (isNonInteractive) {\n await packageJson.ensureESM();\n } else {\n if (!(await packageJson.isESM())) {\n const isConfirmed = await polishConfirm({\n message: `Twój projekt nie używa ESM (brak type: \"module\" w package.json). Czy chcesz to dodać? (Wymagane by kontynuować)`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Zmień projekt na ESM i spróbuj ponownie.\");\n process.exit(1);\n }\n\n await packageJson.ensureESM();\n }\n }\n }\n\n // Determine which tools to install\n let toolsToInstall: string[] = [];\n\n if (options.all === true) {\n toolsToInstall = [\"eslint\", \"prettier\", \"gh-action\", \"commitlint\"];\n } else if (isNonInteractive) {\n // In non-interactive mode, only install explicitly requested tools\n if (options.eslint === true) {\n toolsToInstall.push(\"eslint\");\n }\n if (options.prettier === true) {\n toolsToInstall.push(\"prettier\");\n }\n if (options.ghAction === true) {\n toolsToInstall.push(\"gh-action\");\n }\n if (options.commitlint === true) {\n toolsToInstall.push(\"commitlint\");\n }\n\n if (toolsToInstall.length === 0) {\n console.error(\n \"Nie wybrano żadnych narzędzi. Użyj --eslint, --prettier, --gh-action, --commitlint, lub --all\",\n );\n process.exit(1);\n }\n } else {\n // Interactive mode\n const additionalTools = await p.multiselect({\n message: `Które rzeczy Cię interesują? ${c.gray(\"zaznacz spacją, potwierdź enterem\")}`,\n initialValues: [\"eslint\", \"prettier\", \"gh-action\", \"commitlint\"],\n options: [\n {\n value: \"eslint\",\n label: c.bold(c.blueBright(\"ESLint\")),\n hint: \"sprawdzanie jakości kodu\",\n },\n {\n value: \"prettier\",\n label: c.bold(c.yellowBright(\"Prettier\")),\n hint: \"formatowanie\",\n },\n {\n value: \"gh-action\",\n label: c.bold(\"GitHub Actions\"),\n hint: \"automatyczne testy na Githubie\",\n },\n {\n value: \"commitlint\",\n label: c.bold(\"Commitlint\"),\n hint: \"walidacja treści commitów\",\n },\n ],\n required: false,\n });\n\n if (p.isCancel(additionalTools) || additionalTools.length === 0) {\n p.cancel(\"Nie wybrano żadnych narzędzi.\");\n process.exit(1);\n }\n\n toolsToInstall = additionalTools;\n }\n\n // Install the base package\n await packageJson.install(\"@solvro/config\", {\n dev: true,\n alwaysUpdate: !isNonInteractive,\n });\n\n // Install selected tools\n if (toolsToInstall.includes(\"eslint\")) {\n await installEslint(isNonInteractive);\n }\n\n if (toolsToInstall.includes(\"prettier\")) {\n await installPrettier(isNonInteractive);\n await installLintStaged();\n }\n\n if (toolsToInstall.includes(\"commitlint\")) {\n await installCommitLint();\n }\n\n if (toolsToInstall.includes(\"gh-action\")) {\n await installGithubActions();\n }\n\n await packageJson.clearInstall();\n\n if (isNonInteractive) {\n console.log(\"✅ Konfiguracja zakończona pomyślnie!\");\n } else {\n p.outro(\"✅ Konfiguracja zakończona pomyślnie!\");\n }\n}\n\n// Run the main function\ntry {\n // eslint-disable-next-line unicorn/prefer-top-level-await\n void main();\n} catch (error: unknown) {\n console.error(\"Wystąpił błąd:\", error);\n process.exit(1);\n}\n","{\n \"name\": \"@solvro/config\",\n \"version\": \"2.0.4\",\n \"description\": \"Solvro's engineering style guide\",\n \"keywords\": [\n \"eslint\",\n \"prettier\",\n \"solvro\"\n ],\n \"homepage\": \"https://github.com/Solvro/lib-web-solvro-config#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/Solvro/lib-web-solvro-config/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/Solvro/lib-web-solvro-config.git\"\n },\n \"license\": \"MPL-2.0\",\n \"type\": \"module\",\n \"exports\": {\n \"./eslint\": {\n \"types\": \"./dist/eslint/index.d.ts\",\n \"import\": \"./dist/eslint/index.js\",\n \"require\": \"./dist/eslint/index.cjs\"\n },\n \"./prettier\": {\n \"types\": \"./dist/prettier/index.d.ts\",\n \"import\": \"./dist/prettier/index.js\",\n \"require\": \"./dist/prettier/index.cjs\"\n },\n \"./commitlint\": {\n \"types\": \"./dist/commitlint/index.d.ts\",\n \"import\": \"./dist/commitlint/index.js\",\n \"require\": \"./dist/commitlint/index.cjs\"\n }\n },\n \"bin\": \"./bin/index.js\",\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:watch\": \"tsup --watch\",\n \"cli\": \"tsx ./src/cli/index.ts\",\n \"dev\": \"npx @eslint/config-inspector\",\n \"format\": \"prettier --check .\",\n \"knip\": \"knip\",\n \"lint\": \"eslint .\",\n \"prepare\": \"husky || true\",\n \"prepublish\": \"npm run build\",\n \"release\": \"semantic-release\",\n \"test\": \"vitest run\",\n \"test:ui\": \"vitest --ui\",\n \"test:watch\": \"vitest\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"lint-staged\": {\n \"*\": \"prettier -w --ignore-unknown\"\n },\n \"prettier\": \"./dist/prettier/index.js\",\n \"dependencies\": {\n \"@adonisjs/eslint-config\": \"^2.1.0\",\n \"@clack/prompts\": \"^0.11.0\",\n \"@commitlint/config-conventional\": \"^19.8.1\",\n \"@darraghor/eslint-plugin-nestjs-typed\": \"^6.7.0\",\n \"@eslint-community/eslint-plugin-eslint-comments\": \"^4.5.0\",\n \"@eslint/js\": \"^9.30.1\",\n \"@tanstack/eslint-plugin-query\": \"^5.81.2\",\n \"@trivago/prettier-plugin-sort-imports\": \"^5.2.2\",\n \"@typescript-eslint/eslint-plugin\": \"^8.35.1\",\n \"commander\": \"^14.0.0\",\n \"eslint-config-flat-gitignore\": \"^2.1.0\",\n \"eslint-config-prettier\": \"^10.1.5\",\n \"eslint-plugin-antfu\": \"^3.1.1\",\n \"eslint-plugin-import\": \"^2.32.0\",\n \"eslint-plugin-jsdoc\": \"^51.3.3\",\n \"eslint-plugin-jsx-a11y\": \"^6.10.2\",\n \"eslint-plugin-n\": \"^17.21.0\",\n \"eslint-plugin-react\": \"^7.37.5\",\n \"eslint-plugin-react-hooks\": \"^5.2.0\",\n \"eslint-plugin-react-refresh\": \"^0.4.16\",\n \"eslint-plugin-react-you-might-not-need-an-effect\": \"^0.4.1\",\n \"eslint-plugin-unicorn\": \"^59.0.1\",\n \"eslint-plugin-unused-imports\": \"^4.1.4\",\n \"execa\": \"^9.6.0\",\n \"find-up-simple\": \"^1.0.1\",\n \"globals\": \"^16.3.0\",\n \"is-interactive\": \"^2.0.0\",\n \"local-pkg\": \"^1.1.1\",\n \"package-manager-detector\": \"^1.3.0\",\n \"picocolors\": \"^1.1.1\",\n \"prettier-plugin-packagejson\": \"^2.5.18\",\n \"prettier-plugin-tailwindcss\": \"^0.6.13\",\n \"semver\": \"^7.7.2\",\n \"typescript-eslint\": \"^8.35.1\"\n },\n \"devDependencies\": {\n \"@commitlint/cli\": \"^19.8.1\",\n \"@eslint/config-inspector\": \"^1.1.0\",\n \"@next/eslint-plugin-next\": \"^15.3.5\",\n \"@semantic-release/git\": \"^10.0.1\",\n \"@types/node\": \"^24.0.10\",\n \"@types/semver\": \"^7.7.0\",\n \"@vitest/coverage-v8\": \"^3.2.4\",\n \"@vitest/ui\": \"^3.2.4\",\n \"eslint\": \"^9.30.1\",\n \"husky\": \"^9.1.7\",\n \"knip\": \"^5.61.3\",\n \"lint-staged\": \"^16.1.2\",\n \"pkg-pr-new\": \"^0.0.58\",\n \"prettier\": \"^3.6.2\",\n \"semantic-release\": \"^24.2.6\",\n \"tsup\": \"^8.5.0\",\n \"tsx\": \"^4.20.3\",\n \"typescript\": \"^5.8.3\",\n \"vitest\": \"^3.2.4\"\n },\n \"peerDependencies\": {\n \"@next/eslint-plugin-next\": \">=12.3.0 <16.0.0-0\",\n \"eslint\": \">=9.0.0 <10.0.0\"\n },\n \"packageManager\": \"npm@11.4.2\",\n \"engines\": {\n \"node\": \"^20.19.0 || >=22.12.0\"\n },\n \"volta\": {\n \"node\": \"22.17.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","import { execSync } from \"node:child_process\";\n\nexport function isGitClean(): boolean {\n try {\n execSync(\"git diff-index --quiet HEAD --\");\n return true;\n } catch {\n return false;\n }\n}\n","import * as p from \"@clack/prompts\";\nimport { getPackageInfo, isPackageListed, loadPackageJSON } from \"local-pkg\";\nimport assert from \"node:assert\";\nimport { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport semver from \"semver\";\n\nimport { $$ } from \"./$$\";\nimport { projectRoot } from \"./git-root\";\nimport { runIfInteractive } from \"./run-if-interactive\";\n\nexport class PackageJson {\n public json: Awaited<ReturnType<typeof loadPackageJSON>> = null;\n\n async load() {\n const json = await loadPackageJSON(projectRoot());\n\n if (json === null) {\n p.cancel(\n \"Nie znaleziono package.json. Upewnij się, że jesteś w katalogu projektu.\",\n );\n process.exit(1);\n }\n\n this.json = json;\n }\n\n hasPackage(package_: string) {\n return isPackageListed(package_);\n }\n\n async doesSatisfies(package_: string, version: string) {\n await this.load();\n\n assert.ok(this.json !== null);\n\n const packageInfo = await getPackageInfo(package_);\n\n if (packageInfo?.version === undefined) {\n return false;\n }\n\n return semver.satisfies(packageInfo.version, version);\n }\n\n async isESM() {\n await this.load();\n\n assert.ok(this.json !== null);\n\n return this.json.type === \"module\";\n }\n\n async ensureESM() {\n if (await this.isESM()) {\n return;\n }\n\n assert.ok(this.json !== null);\n\n this.json.type = \"module\";\n\n await this.save();\n }\n\n async getProjectType() {\n const isAdonis = await isPackageListed(\"@adonisjs/core\");\n const isReact = await isPackageListed(\"react\");\n const isNestJs = await isPackageListed(\"@nestjs/core\");\n if (isReact && isAdonis) {\n throw new Error(\n \"You can't use both Adonis and React in the same project\",\n );\n }\n\n if (isNestJs) {\n return \"nestjs\";\n }\n\n if (isAdonis) {\n return \"adonis\";\n }\n\n if (isReact) {\n return \"react\";\n }\n\n return \"node\";\n }\n\n async save() {\n await writeFile(\n path.join(projectRoot(), \"package.json\"),\n JSON.stringify(this.json, null, 2),\n );\n }\n\n async addScriptIfNotExists(name: string, script: string) {\n await this.load();\n\n assert.ok(this.json !== null);\n\n if (this.json.scripts?.[name] !== undefined) {\n return;\n }\n\n this.json.scripts = this.json.scripts ?? {};\n this.json.scripts[name] = script;\n\n await this.save();\n }\n\n async install(\n package_: string,\n options?: { minVersion?: string; dev?: boolean; alwaysUpdate?: boolean },\n ) {\n const isInstalled = await this.hasPackage(package_);\n\n if (!isInstalled) {\n const spinner = p.spinner();\n runIfInteractive(() => {\n spinner.start(`Instalowanie ${package_}`);\n });\n\n await $$`npm i ${options?.dev === true ? \"-D\" : \"\"} ${package_}@latest`;\n runIfInteractive(() => {\n spinner.stop(`${package_} zainstalowany 😍`);\n });\n\n await this.load();\n\n return;\n }\n\n const info = await getPackageInfo(package_);\n\n if (\n (info?.version !== undefined &&\n options?.minVersion !== undefined &&\n !semver.satisfies(info.version, options.minVersion)) ||\n options?.alwaysUpdate === true\n ) {\n const spinner = p.spinner();\n runIfInteractive(() => {\n spinner.start(`Aktualizowanie ${package_}`);\n });\n await $$`npm i ${options.dev === true ? \"-D\" : \"\"} ${package_}@latest`;\n runIfInteractive(() => {\n spinner.stop(`${package_} zaktualizowany 😍`);\n });\n\n await this.load();\n }\n }\n\n async clearInstall() {\n await $$`npm ci`;\n }\n}\n","import { findUpSync } from \"find-up-simple\";\nimport { execSync } from \"node:child_process\";\nimport path from \"node:path\";\n\nexport const projectRoot = () => {\n const packageJsonPath = findUpSync(\"package.json\");\n\n if (packageJsonPath !== undefined) {\n return path.dirname(packageJsonPath);\n }\n\n return process.cwd();\n};\n\nexport const gitRoot = () => {\n try {\n const rootDirectory = execSync(\"git rev-parse --show-toplevel\", {\n cwd: projectRoot(),\n });\n return rootDirectory.toString().trim();\n } catch {\n return projectRoot();\n }\n};\n","import type { ExecaScriptMethod } from \"execa\";\n\nimport { projectRoot } from \"./git-root\";\n\nlet cachedExeca: ExecaScriptMethod | null = null;\n\nexport const $$ = (async (...arguments_: Parameters<ExecaScriptMethod>) => {\n if (cachedExeca === null) {\n const { $ } = await import(\"execa\");\n cachedExeca = $({\n cwd: projectRoot(),\n });\n }\n return cachedExeca(...arguments_);\n}) as ExecaScriptMethod;\n","import isInteractive from \"is-interactive\";\n\nexport const runIfInteractive = <T>(function_: () => T): T | undefined => {\n if (isInteractive()) {\n return function_();\n }\n\n return undefined;\n};\n","import * as p from \"@clack/prompts\";\nimport isInteractive from \"is-interactive\";\n\nexport const polishConfirm = async (props: p.ConfirmOptions) => {\n if (!isInteractive()) {\n return true;\n }\n\n return p.confirm({\n active: \"Tak\",\n inactive: \"Nie\",\n ...props,\n });\n};\n","import { writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { installHusky } from \"./install-husky\";\nimport { commitlint } from \"./templates/commitlint\";\n\nconst root = projectRoot();\n\nconst packageJson = new PackageJson();\n\nexport const installCommitLint = async () => {\n await installHusky();\n\n await packageJson.install(\"@commitlint/cli\", { dev: true });\n\n await writeFile(\n path.join(root, \".husky/commit-msg\"),\n 'npx commitlint --edit \"$1\"\\n',\n );\n\n await writeFile(path.join(root, \".commitlintrc.js\"), commitlint());\n};\n","import assert from \"node:assert\";\n\nimport { $$ } from \"../utils/$$\";\nimport { PackageJson } from \"../utils/package-json\";\n\nconst packageJson = new PackageJson();\n\nexport const installHusky = async () => {\n if (!(await packageJson.hasPackage(\"husky\"))) {\n await packageJson.install(\"husky\", { dev: true });\n await $$`npx husky init`;\n }\n\n await packageJson.load();\n\n assert.ok(packageJson.json !== null);\n\n packageJson.json.scripts = packageJson.json.scripts ?? {};\n packageJson.json.scripts.prepare = `husky || true`;\n\n await packageJson.save();\n};\n","export const commitlint = () => `export default {\n extends: [\"@solvro/config/commitlint\"],\n};\n`;\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\n\nconst eslintConfigNames = [\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\",\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \"eslint.config.mts\",\n \"eslint.config.cts\",\n];\n\nconst packageJson = new PackageJson();\n\nexport const installEslint = async (isNonInteractive = false) => {\n const root = projectRoot();\n\n await packageJson.load();\n\n await packageJson.install(\"eslint\", { dev: true, minVersion: \">=9\" });\n\n const type = await packageJson.getProjectType();\n\n if (type === \"react\" && (await packageJson.hasPackage(\"next\"))) {\n const is15 = await packageJson.doesSatisfies(\"next\", \">=15\");\n\n if (!is15) {\n p.cancel(\n \"Next.js musi być w conajmniej wersji 15. Zaktualizuj Next.js i spróbuj ponownie.\\nWięcej informacji tutaj: https://nextjs.org/docs/app/building-your-application/upgrading/version-15\",\n );\n process.exit(1);\n }\n\n await packageJson.install(\"@next/eslint-plugin-next\", { dev: true });\n }\n\n const eslintConfig = eslintConfigNames.find((configName) =>\n existsSync(path.join(root, configName)),\n );\n\n if (eslintConfig !== undefined) {\n const eslintContent = await fs.readFile(\n path.join(root, eslintConfig),\n \"utf8\",\n );\n\n if (eslintContent.includes(\"export default solvro(\")) {\n p.note(\"Eslint jest już skonfigurowany. Pomijam.\");\n\n return;\n } else {\n if (isNonInteractive) {\n // In non-interactive mode, automatically overwrite existing config\n await fs.rm(path.join(root, eslintConfig));\n } else {\n const isConfirmed = await polishConfirm({\n message: `Znaleziono plik konfiguracyjny Eslint. Czy chcesz go nadpisać?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Nadpisz plik konfiguracyjny Eslint i spróbuj ponownie.\");\n process.exit(1);\n }\n\n await fs.rm(path.join(root, eslintConfig));\n }\n }\n }\n\n const isESM = await packageJson.isESM();\n\n const eslintFilename = isESM ? \"eslint.config.js\" : \"eslint.config.mjs\";\n\n await fs.writeFile(\n path.join(root, eslintFilename),\n `import { solvro } from \"@solvro/config/eslint\";\n\nexport default solvro();\n`,\n );\n\n p.note(\"Plik konfiguracyjny Eslint został utworzony.\");\n};\n","import * as p from \"@clack/prompts\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { gitRoot, projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { adonisCi } from \"./templates/adonis-ci\";\nimport { adonisMigrationsCi } from \"./templates/adonis-ci-migrations\";\nimport { dependabot } from \"./templates/dependabot\";\nimport { nestjsCi } from \"./templates/nestjs-ci\";\nimport { reactCi } from \"./templates/react-ci\";\n\nconst packageJson = new PackageJson();\n\nexport const installGithubActions = async () => {\n const gitDirectory = gitRoot();\n const projectDirectory = projectRoot();\n await packageJson.load();\n\n const ghWorkflowsDirectory = path.join(gitDirectory, \".github/workflows\");\n await fs.mkdir(ghWorkflowsDirectory, { recursive: true });\n\n const type = await packageJson.getProjectType();\n\n const withCommitlint = await packageJson.hasPackage(\"@commitlint/cli\");\n\n if (type === \"adonis\") {\n if (!existsSync(path.join(projectDirectory, \".env.example\"))) {\n p.cancel(\n \"Nie znaleziono pliku .env.example. Upewnij się, że jesteś w katalogu projektu Adonisa.\",\n );\n process.exit(1);\n }\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n adonisCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"db.yml\"),\n adonisMigrationsCi(),\n );\n }\n\n if (type === \"react\") {\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n reactCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n }\n\n if (type === \"nestjs\") {\n await fs.writeFile(\n path.join(ghWorkflowsDirectory, \"ci.yml\"),\n nestjsCi({\n nodeVersion: \"22\",\n withCommitlint,\n }),\n );\n }\n\n if (!existsSync(path.join(gitDirectory, \".github/dependabot.yml\"))) {\n await fs.writeFile(\n path.join(gitDirectory, \".github/dependabot.yml\"),\n dependabot(),\n );\n }\n\n await packageJson.addScriptIfNotExists(\"format:check\", \"prettier --check .\");\n await packageJson.addScriptIfNotExists(\"lint\", \"eslint . --max-warnings=0\");\n await packageJson.addScriptIfNotExists(\"format\", \"prettier --write .\");\n await packageJson.addScriptIfNotExists(\"typecheck\", \"tsc --noEmit\");\n\n p.note(\"Dodano konfigurację CI i skrypty.\");\n};\n","export const commitLintCi = () => `\n - name: Check commit name\n if: github.event_name == 'pull_request'\n run: npx commitlint --from \\${{ github.event.pull_request.base.sha }} --to \\${{ github.event.pull_request.head.sha }} --verbose\n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const adonisCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n\n - name: Install dependencies\n run: npm ci\n\n - name: Set up AdonisJS environment\n run: |\n cp .env.example .env\n node ace generate:key\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Run prettier\n run: npm run format:check\n if: always()\n\n - name: Run Lint\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run typecheck\n if: always()\n\n - name: Run tests\n run: npm test\n if: always()\n\n - name: Build\n run: npm run build\n if: always()`;\n","export const adonisMigrationsCi = () => `name: Migration check\n\non:\n pull_request:\n branches: [\"*\"]\n push:\n branches: [\"main\"]\n\njobs:\n migration-check:\n runs-on: ubuntu-latest\n env:\n DB_HOST: 127.0.0.1\n DB_PORT: 5432\n DB_USER: postgres\n DB_PASSWORD: postgres\n DB_DATABASE: postgres\n\n services:\n postgres:\n image: postgres\n env:\n POSTGRES_PASSWORD: postgres\n options: >-\n --health-cmd pg_isready\n --health-interval 10s\n --health-timeout 5s\n --health-retries 5\n ports:\n - 5432:5432\n\n steps:\n - name: Check out repository code\n uses: actions/checkout@v4\n\n - name: Install dependencies\n run: npm ci\n\n - name: Set up AdonisJS environment\n run: |\n cp .env.example .env\n node ace generate:key\n\n - name: Run AdonisJS migrations\n run: node ace migration:run\n\n - name: Rollback and rerun AdonisJS migrations\n run: node ace migration:refresh\n`;\n","export const dependabot = () => `version: 2\nupdates:\n - package-ecosystem: \"npm\"\n directory: \"/\"\n schedule:\n interval: \"daily\"\n allow:\n - dependency-name: \"@solvro/config\"\n`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const nestjsCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: \"npm\"\n\n - name: Install dependencies\n run: npm ci\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Run prettier\n run: npm run format:check\n if: always()\n\n - name: Run Lint\n run: npm run lint\n if: always()\n\n - name: Check types\n run: npm run typecheck\n if: always()\n\n - name: Run tests\n run: npm test\n if: always()\n\n - name: Run e2e tests\n run: npm run test:e2e\n if: always()\n\n - name: Build\n run: npm run build\n if: always()`;\n","import { commitLintCi } from \"./commit-lint-ci\";\n\nexport const reactCi = ({\n nodeVersion,\n withCommitlint,\n}: {\n nodeVersion: string;\n withCommitlint: boolean;\n}) => `name: CI\n\non:\n push:\n branches: [\"main\"]\n pull_request:\n\njobs:\n lint:\n runs-on: ubuntu-latest\n steps:\n - name: Checkout\n uses: actions/checkout@v4\n with:\n fetch-depth: 0\n\n - name: Setup node\n uses: actions/setup-node@v4\n with:\n node-version: ${nodeVersion}\n cache: 'npm'\n\n - name: Install dependencies\n run: npm ci\n${withCommitlint ? commitLintCi() : \"\"}\n - name: Format check\n run: npm run format:check\n if: always()\n\n - name: Build\n run: npm run build\n if: always()`;\n","import assert from \"node:assert\";\nimport { writeFile } from \"node:fs/promises\";\n\nimport { PackageJson } from \"../utils/package-json\";\nimport { installHusky } from \"./install-husky\";\n\nconst packageJson = new PackageJson();\n\nexport const installLintStaged = async () => {\n await packageJson.load();\n\n assert.ok(packageJson.json !== null);\n\n await installHusky();\n\n await packageJson.install(\"lint-staged\", { dev: true });\n\n await writeFile(\".husky/pre-commit\", \"npx lint-staged\\n\");\n\n packageJson.json[\"lint-staged\"] = {\n \"*\": \"prettier -w --ignore-unknown\",\n };\n\n await packageJson.save();\n};\n","import * as p from \"@clack/prompts\";\nimport assert from \"node:assert\";\nimport { existsSync } from \"node:fs\";\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { projectRoot } from \"../utils/git-root\";\nimport { PackageJson } from \"../utils/package-json\";\nimport { polishConfirm } from \"../utils/polish-confirm\";\n\nconst prettierConfigNames = [\n \".prettierrc.js\",\n \".prettierrc.cjs\",\n \".prettierrc.yaml\",\n \".prettierrc.yml\",\n \".prettierrc.json\",\n \".prettierrc\",\n \"prettier.config.js\",\n \"prettier.config.mjs\",\n \"prettier.config.cjs\",\n \"prettier.config.ts\",\n \"prettier.config.mts\",\n \"prettier.config.cts\",\n];\n\nconst packageJson = new PackageJson();\n\nexport const installPrettier = async (isNonInteractive = false) => {\n const root = projectRoot();\n\n await packageJson.load();\n assert.ok(packageJson.json !== null);\n\n await packageJson.install(\"prettier\", { dev: true, minVersion: \">=3\" });\n\n const prettierConfig = prettierConfigNames.find((configName) =>\n existsSync(path.join(root, configName)),\n );\n\n const solvroPrettierPath = \"@solvro/config/prettier\";\n\n if (prettierConfig !== undefined || packageJson.json.prettier !== undefined) {\n if (packageJson.json.prettier === solvroPrettierPath) {\n p.note(\"Konfiguracja Prettiera jest już ustawiona. Pomijam.\");\n return;\n }\n\n if (isNonInteractive) {\n // In non-interactive mode, automatically overwrite existing config\n for (const configName of prettierConfigNames) {\n await fs.rm(path.join(root, configName)).catch(() => null);\n }\n } else {\n const isConfirmed = await polishConfirm({\n message: `Znaleziono konfigurację Prettiera. Czy chcesz ją nadpisać?`,\n });\n\n if (p.isCancel(isConfirmed) || !isConfirmed) {\n p.cancel(\"Usuń konfiguracje Prettiera i spróbuj ponownie.\");\n process.exit(1);\n }\n\n for (const configName of prettierConfigNames) {\n await fs.rm(path.join(root, configName)).catch(() => null);\n }\n }\n }\n\n packageJson.json.prettier = solvroPrettierPath;\n\n await packageJson.save();\n\n p.note(\"Konfiguracja Prettiera została dodana.\");\n};\n"],"mappings":"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","names":["p","import_node_path","import_node_child_process","path","isInteractive","assert","semver","path","options","spinner","p","import_is_interactive","isInteractive","import_promises","import_node_path","import_node_assert","assert","packageJson","path","p","import_node_path","packageJson","isNonInteractive","root","path","p","import_node_fs","fs","import_node_path","packageJson","path","import_node_assert","import_promises","packageJson","assert","p","import_node_assert","import_node_fs","fs","import_node_path","packageJson","isNonInteractive","root","assert","path","c","packageJson"]}
|
package/dist/cli/index.js
CHANGED
@@ -1,17 +1,13 @@
|
|
1
|
-
import {
|
2
|
-
init_esm_shims
|
3
|
-
} from "../chunk-J5OUMHDO.js";
|
4
|
-
|
5
1
|
// src/cli/index.ts
|
6
|
-
init_esm_shims();
|
7
2
|
import * as p6 from "@clack/prompts";
|
8
3
|
import { Command } from "commander";
|
4
|
+
import { getUserAgent } from "package-manager-detector/detect";
|
9
5
|
import c from "picocolors";
|
10
6
|
|
11
7
|
// package.json
|
12
8
|
var package_default = {
|
13
9
|
name: "@solvro/config",
|
14
|
-
version: "2.0.
|
10
|
+
version: "2.0.4",
|
15
11
|
description: "Solvro's engineering style guide",
|
16
12
|
keywords: [
|
17
13
|
"eslint",
|
@@ -80,6 +76,7 @@ var package_default = {
|
|
80
76
|
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
81
77
|
"@typescript-eslint/eslint-plugin": "^8.35.1",
|
82
78
|
commander: "^14.0.0",
|
79
|
+
"eslint-config-flat-gitignore": "^2.1.0",
|
83
80
|
"eslint-config-prettier": "^10.1.5",
|
84
81
|
"eslint-plugin-antfu": "^3.1.1",
|
85
82
|
"eslint-plugin-import": "^2.32.0",
|
@@ -89,6 +86,7 @@ var package_default = {
|
|
89
86
|
"eslint-plugin-react": "^7.37.5",
|
90
87
|
"eslint-plugin-react-hooks": "^5.2.0",
|
91
88
|
"eslint-plugin-react-refresh": "^0.4.16",
|
89
|
+
"eslint-plugin-react-you-might-not-need-an-effect": "^0.4.1",
|
92
90
|
"eslint-plugin-unicorn": "^59.0.1",
|
93
91
|
"eslint-plugin-unused-imports": "^4.1.4",
|
94
92
|
execa: "^9.6.0",
|
@@ -96,6 +94,7 @@ var package_default = {
|
|
96
94
|
globals: "^16.3.0",
|
97
95
|
"is-interactive": "^2.0.0",
|
98
96
|
"local-pkg": "^1.1.1",
|
97
|
+
"package-manager-detector": "^1.3.0",
|
99
98
|
picocolors: "^1.1.1",
|
100
99
|
"prettier-plugin-packagejson": "^2.5.18",
|
101
100
|
"prettier-plugin-tailwindcss": "^0.6.13",
|
@@ -112,12 +111,10 @@ var package_default = {
|
|
112
111
|
"@vitest/coverage-v8": "^3.2.4",
|
113
112
|
"@vitest/ui": "^3.2.4",
|
114
113
|
eslint: "^9.30.1",
|
115
|
-
"eslint-config-flat-gitignore": "^2.1.0",
|
116
|
-
"eslint-plugin-react-you-might-not-need-an-effect": "^0.4.1",
|
117
114
|
husky: "^9.1.7",
|
118
|
-
jiti: "^2.4.2",
|
119
115
|
knip: "^5.61.3",
|
120
116
|
"lint-staged": "^16.1.2",
|
117
|
+
"pkg-pr-new": "^0.0.58",
|
121
118
|
prettier: "^3.6.2",
|
122
119
|
"semantic-release": "^24.2.6",
|
123
120
|
tsup: "^8.5.0",
|
@@ -126,7 +123,8 @@ var package_default = {
|
|
126
123
|
vitest: "^3.2.4"
|
127
124
|
},
|
128
125
|
peerDependencies: {
|
129
|
-
"@next/eslint-plugin-next": ">=12.3.0 <16.0.0-0"
|
126
|
+
"@next/eslint-plugin-next": ">=12.3.0 <16.0.0-0",
|
127
|
+
eslint: ">=9.0.0 <10.0.0"
|
130
128
|
},
|
131
129
|
packageManager: "npm@11.4.2",
|
132
130
|
engines: {
|
@@ -141,7 +139,6 @@ var package_default = {
|
|
141
139
|
};
|
142
140
|
|
143
141
|
// src/utils/is-git-clean.ts
|
144
|
-
init_esm_shims();
|
145
142
|
import { execSync } from "child_process";
|
146
143
|
function isGitClean() {
|
147
144
|
try {
|
@@ -153,7 +150,6 @@ function isGitClean() {
|
|
153
150
|
}
|
154
151
|
|
155
152
|
// src/utils/package-json.ts
|
156
|
-
init_esm_shims();
|
157
153
|
import * as p from "@clack/prompts";
|
158
154
|
import { getPackageInfo, isPackageListed, loadPackageJSON } from "local-pkg";
|
159
155
|
import assert from "assert";
|
@@ -161,11 +157,7 @@ import { writeFile } from "fs/promises";
|
|
161
157
|
import path2 from "path";
|
162
158
|
import semver from "semver";
|
163
159
|
|
164
|
-
// src/utils/$$.ts
|
165
|
-
init_esm_shims();
|
166
|
-
|
167
160
|
// src/utils/git-root.ts
|
168
|
-
init_esm_shims();
|
169
161
|
import { findUpSync } from "find-up-simple";
|
170
162
|
import { execSync as execSync2 } from "child_process";
|
171
163
|
import path from "path";
|
@@ -200,7 +192,6 @@ var $$ = async (...arguments_) => {
|
|
200
192
|
};
|
201
193
|
|
202
194
|
// src/utils/run-if-interactive.ts
|
203
|
-
init_esm_shims();
|
204
195
|
import isInteractive from "is-interactive";
|
205
196
|
var runIfInteractive = (function_) => {
|
206
197
|
if (isInteractive()) {
|
@@ -316,7 +307,6 @@ var PackageJson = class {
|
|
316
307
|
};
|
317
308
|
|
318
309
|
// src/utils/polish-confirm.ts
|
319
|
-
init_esm_shims();
|
320
310
|
import * as p2 from "@clack/prompts";
|
321
311
|
import isInteractive2 from "is-interactive";
|
322
312
|
var polishConfirm = async (props) => {
|
@@ -331,12 +321,10 @@ var polishConfirm = async (props) => {
|
|
331
321
|
};
|
332
322
|
|
333
323
|
// src/cli/install-commitlint.ts
|
334
|
-
init_esm_shims();
|
335
324
|
import { writeFile as writeFile2 } from "fs/promises";
|
336
325
|
import path3 from "path";
|
337
326
|
|
338
327
|
// src/cli/install-husky.ts
|
339
|
-
init_esm_shims();
|
340
328
|
import assert2 from "assert";
|
341
329
|
var packageJson = new PackageJson();
|
342
330
|
var installHusky = async () => {
|
@@ -352,7 +340,6 @@ var installHusky = async () => {
|
|
352
340
|
};
|
353
341
|
|
354
342
|
// src/cli/templates/commitlint.ts
|
355
|
-
init_esm_shims();
|
356
343
|
var commitlint = () => `export default {
|
357
344
|
extends: ["@solvro/config/commitlint"],
|
358
345
|
};
|
@@ -372,7 +359,6 @@ var installCommitLint = async () => {
|
|
372
359
|
};
|
373
360
|
|
374
361
|
// src/cli/install-eslint.ts
|
375
|
-
init_esm_shims();
|
376
362
|
import * as p3 from "@clack/prompts";
|
377
363
|
import { existsSync } from "fs";
|
378
364
|
import * as fs from "fs/promises";
|
@@ -446,17 +432,12 @@ export default solvro();
|
|
446
432
|
};
|
447
433
|
|
448
434
|
// src/cli/install-ga.ts
|
449
|
-
init_esm_shims();
|
450
435
|
import * as p4 from "@clack/prompts";
|
451
436
|
import { existsSync as existsSync2 } from "fs";
|
452
437
|
import * as fs2 from "fs/promises";
|
453
438
|
import path5 from "path";
|
454
439
|
|
455
|
-
// src/cli/templates/adonis-ci.ts
|
456
|
-
init_esm_shims();
|
457
|
-
|
458
440
|
// src/cli/templates/commit-lint-ci.ts
|
459
|
-
init_esm_shims();
|
460
441
|
var commitLintCi = () => `
|
461
442
|
- name: Check commit name
|
462
443
|
if: github.event_name == 'pull_request'
|
@@ -518,7 +499,6 @@ ${withCommitlint ? commitLintCi() : ""}
|
|
518
499
|
if: always()`;
|
519
500
|
|
520
501
|
// src/cli/templates/adonis-ci-migrations.ts
|
521
|
-
init_esm_shims();
|
522
502
|
var adonisMigrationsCi = () => `name: Migration check
|
523
503
|
|
524
504
|
on:
|
@@ -570,7 +550,6 @@ jobs:
|
|
570
550
|
`;
|
571
551
|
|
572
552
|
// src/cli/templates/dependabot.ts
|
573
|
-
init_esm_shims();
|
574
553
|
var dependabot = () => `version: 2
|
575
554
|
updates:
|
576
555
|
- package-ecosystem: "npm"
|
@@ -582,7 +561,6 @@ updates:
|
|
582
561
|
`;
|
583
562
|
|
584
563
|
// src/cli/templates/nestjs-ci.ts
|
585
|
-
init_esm_shims();
|
586
564
|
var nestjsCi = ({
|
587
565
|
nodeVersion,
|
588
566
|
withCommitlint
|
@@ -636,7 +614,6 @@ ${withCommitlint ? commitLintCi() : ""}
|
|
636
614
|
if: always()`;
|
637
615
|
|
638
616
|
// src/cli/templates/react-ci.ts
|
639
|
-
init_esm_shims();
|
640
617
|
var reactCi = ({
|
641
618
|
nodeVersion,
|
642
619
|
withCommitlint
|
@@ -734,7 +711,6 @@ var installGithubActions = async () => {
|
|
734
711
|
};
|
735
712
|
|
736
713
|
// src/cli/install-lint-staged.ts
|
737
|
-
init_esm_shims();
|
738
714
|
import assert3 from "assert";
|
739
715
|
import { writeFile as writeFile5 } from "fs/promises";
|
740
716
|
var packageJson5 = new PackageJson();
|
@@ -751,7 +727,6 @@ var installLintStaged = async () => {
|
|
751
727
|
};
|
752
728
|
|
753
729
|
// src/cli/install-prettier.ts
|
754
|
-
init_esm_shims();
|
755
730
|
import * as p5 from "@clack/prompts";
|
756
731
|
import assert4 from "assert";
|
757
732
|
import { existsSync as existsSync3 } from "fs";
|
@@ -818,10 +793,29 @@ async function main() {
|
|
818
793
|
if (!isNonInteractive) {
|
819
794
|
p6.intro(c.bold(c.bgBlue(" @solvro/config ")));
|
820
795
|
}
|
796
|
+
const userAgent = getUserAgent();
|
797
|
+
if (userAgent !== "npm") {
|
798
|
+
const packageManager = userAgent ?? "unknown";
|
799
|
+
const warningMessage = `
|
800
|
+
${c.red(c.bold(`\u26A0\uFE0F OSTRZE\u017BENIE: ${packageManager} nie jest obs\u0142ugiwany \u26A0\uFE0F`))}
|
801
|
+
|
802
|
+
Pr\xF3bujesz uruchomi\u0107 ten skrypt z ${c.yellow(packageManager)}'em, ale @solvro/config dzia\u0142a tylko z ${c.yellow("npm'em")}.
|
803
|
+
|
804
|
+
Support dla innych mened\u017Cer\xF3w pakiet\xF3w nie jest planowany - chcemy jednolitego stacku technologicznego dla projekt\xF3w w naszym kochanym kole Solvro.
|
805
|
+
|
806
|
+
U\u017Cyj zamiast tego npm'a:
|
807
|
+
${c.cyan("npx @solvro/config")}`;
|
808
|
+
if (isNonInteractive) {
|
809
|
+
console.error(warningMessage);
|
810
|
+
} else {
|
811
|
+
p6.cancel(warningMessage);
|
812
|
+
}
|
813
|
+
process.exit(1);
|
814
|
+
}
|
821
815
|
if (options.force !== true && !isGitClean()) {
|
822
816
|
if (isNonInteractive) {
|
823
817
|
console.error(
|
824
|
-
"Git
|
818
|
+
"Repozytorium Git ma niezatwierdzone zmiany. U\u017Cyj --force, aby pomin\u0105\u0107 to sprawdzenie."
|
825
819
|
);
|
826
820
|
process.exit(1);
|
827
821
|
}
|
@@ -908,7 +902,7 @@ async function main() {
|
|
908
902
|
}
|
909
903
|
if (toolsToInstall.length === 0) {
|
910
904
|
console.error(
|
911
|
-
"
|
905
|
+
"Nie wybrano \u017Cadnych narz\u0119dzi. U\u017Cyj --eslint, --prettier, --gh-action, --commitlint, lub --all"
|
912
906
|
);
|
913
907
|
process.exit(1);
|
914
908
|
}
|
@@ -965,15 +959,15 @@ async function main() {
|
|
965
959
|
}
|
966
960
|
await packageJson7.clearInstall();
|
967
961
|
if (isNonInteractive) {
|
968
|
-
console.log("\u2705
|
962
|
+
console.log("\u2705 Konfiguracja zako\u0144czona pomy\u015Blnie!");
|
969
963
|
} else {
|
970
|
-
p6.outro("\u2705
|
964
|
+
p6.outro("\u2705 Konfiguracja zako\u0144czona pomy\u015Blnie!");
|
971
965
|
}
|
972
966
|
}
|
973
967
|
try {
|
974
|
-
|
968
|
+
void main();
|
975
969
|
} catch (error) {
|
976
|
-
console.error("
|
970
|
+
console.error("Wyst\u0105pi\u0142 b\u0142\u0105d:", error);
|
977
971
|
process.exit(1);
|
978
972
|
}
|
979
973
|
//# sourceMappingURL=index.js.map
|