From b7c1a8a2851c87528528a8863c9e5ba073c00f9c Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 1 Oct 2023 03:34:43 +0200 Subject: [PATCH 1/2] refactor(models): adopt imports --- package-lock.json | 522 ++++++++++++++++++ package.json | 3 + packages/cli/src/index.ts | 8 +- packages/cli/src/lib/cli.spec.ts | 6 +- .../src/lib/collect/command-object.spec.ts | 2 +- .../lib/implementation/base-command-config.ts | 11 - .../lib/implementation/config-middleware.ts | 11 +- .../src/lib/implementation/global-options.ts | 23 + packages/cli/src/lib/implementation/model.ts | 21 + packages/cli/src/lib/model.ts | 12 + packages/cli/src/lib/options.ts | 26 +- packages/models/src/index.ts | 2 +- ...lobal-cli-options.ts => global-options.ts} | 10 +- packages/utils/src/lib/collect/index.ts | 4 +- 14 files changed, 606 insertions(+), 55 deletions(-) delete mode 100644 packages/cli/src/lib/implementation/base-command-config.ts create mode 100644 packages/cli/src/lib/implementation/global-options.ts create mode 100644 packages/cli/src/lib/implementation/model.ts create mode 100644 packages/cli/src/lib/model.ts rename packages/models/src/lib/{global-cli-options.ts => global-options.ts} (60%) diff --git a/package-lock.json b/package-lock.json index bcd536e04..669e1b315 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,9 @@ "vitest": "~0.32.0" }, "optionalDependencies": { + "@esbuild/darwin-arm64": "^0.19.4", + "@nx/nx-darwin-arm64": "^16.9.1", + "@nx/nx-darwin-x64": "^16.9.1", "@nx/nx-linux-x64-gnu": "16.7.4" } }, @@ -2370,6 +2373,336 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz", + "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, @@ -3792,6 +4125,100 @@ "dev": true, "license": "ISC" }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.9.1.tgz", + "integrity": "sha512-JWGrPxxt3XjgIYzvnaNAeNmK24wyF6yEE1bV+wnnKzd7yavVps3c2TOVE/AT4sgvdVj3xFzztyixYGV58tCYrg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.9.1.tgz", + "integrity": "sha512-b1Hw1AmKrR+Kp361WTiKC1RFoQwERyW9R/9XJGNIdgtr+V2wa775eCEdxB9r9mwCqyEmM9iVadpRHPaFSAfQfQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.7.4.tgz", + "integrity": "sha512-zmBBDYjPaHhIHx1YASUJJIy+oz7mCrj5f0f3kOzfMraQOjkQZ0xYgNNUzBqmnYu1855yiphu94MkAMYJnbk0jw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.7.4.tgz", + "integrity": "sha512-d3Cmz/vdtoSasTUANoh4ZYLJESNA3+PCP/HnXNqmrr6AEHo+T8DcI+qsamO3rmYUSFxTMAeMyoihZMU8OKGZ1A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.7.4.tgz", + "integrity": "sha512-W1u4O78lTHCwvUP0vakeKWFXeSZ13nYzbd6FARICnImY2my8vz41rLm6aU9TYWaiOGEGL2xKpHKSgiNwbLjhFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.7.4.tgz", + "integrity": "sha512-Dc8IQFvhfH/Z3GmhBBNNxGd2Ehw6Y5SePEgJj1c2JyPdoVtc2OjGzkUaZkT4z5z77VKtju6Yi10T6Enps+y+kw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nx/nx-linux-x64-gnu": { "version": "16.7.4", "cpu": [ @@ -3806,6 +4233,54 @@ "node": ">= 10" } }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.7.4.tgz", + "integrity": "sha512-spqqvEdGSSeV2ByJHkex5m8MRQfM6lQlnon25XgVBdPR47lKMWSikUsaWCiE7bVAFU9BFyWY2L4HfZ4+LiNY7A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.7.4.tgz", + "integrity": "sha512-etNnbuCcSqAYOeDcS6si6qw0WR/IS87ovTzLS17ETKpdHcHN5nM4l02CQyupKiD58ShxrXHxXmvgBfbXxoN5Ew==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.7.4.tgz", + "integrity": "sha512-y6pugK6ino1wvo2FbgtXG2cVbEm3LzJwOSBKBRBXSWhUgjP7T92uGfOt6KVQKpaqDvS9lA9TO/2DcygcLHXh7A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nx/plugin": { "version": "16.7.4", "dev": true, @@ -7228,6 +7703,21 @@ "@esbuild/win32-x64": "0.17.19" } }, + "node_modules/esbuild/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.1", "license": "MIT", @@ -11492,6 +11982,38 @@ } } }, + "node_modules/nx/node_modules/@nx/nx-darwin-arm64": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.7.4.tgz", + "integrity": "sha512-pRNjxn6KlcR6iGkU1j/1pzcogwXFv97pYiZaibpF7UV0vfdEUA3EETpDcs+hbNAcKMvVtn/TgN857/5LQ/lGUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/nx/node_modules/@nx/nx-darwin-x64": { + "version": "16.7.4", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-16.7.4.tgz", + "integrity": "sha512-GANXeabAAWRoF85WDla2ZPxtr8vnqvXjwyCIhRCda8hlKiVCpM98GemucN25z97G5H6MgyV9Dd9t9jrr2Fn0Og==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/nx/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, diff --git a/package.json b/package.json index 3553e2c45..33e97dfb3 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,9 @@ "vitest": "~0.32.0" }, "optionalDependencies": { + "@esbuild/darwin-arm64": "^0.19.4", + "@nx/nx-darwin-arm64": "^16.9.1", + "@nx/nx-darwin-x64": "^16.9.1", "@nx/nx-linux-x64-gnu": "16.7.4" }, "config": { diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 75ba31ff4..fe5203fc4 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,13 +1,17 @@ import { yargsCli } from './lib/cli'; -import { yargsGlobalOptionsDefinition } from './lib/options'; +import { options } from './lib/options'; import { middlewares } from './lib/middlewares'; import { commands } from './lib/commands'; +export { options } from './lib/options'; +export { middlewares } from './lib/middlewares'; +export { commands } from './lib/commands'; + export const cli = (args: string[]) => yargsCli(args, { usageMessage: 'Code PushUp CLI', scriptName: 'code-pushup', - options: yargsGlobalOptionsDefinition(), + options, middlewares, commands, }); diff --git a/packages/cli/src/lib/cli.spec.ts b/packages/cli/src/lib/cli.spec.ts index c6d9b4d60..0da034810 100644 --- a/packages/cli/src/lib/cli.spec.ts +++ b/packages/cli/src/lib/cli.spec.ts @@ -1,16 +1,16 @@ import { join } from 'path'; import { describe, expect, it } from 'vitest'; import { yargsCli } from './cli'; -import { CommandBase } from './implementation/base-command-config'; import { getDirname } from './implementation/utils'; import { middlewares } from './middlewares'; -import { yargsGlobalOptionsDefinition } from './options'; +import { options as defaultOptions } from './options'; +import {CommandBase} from "./implementation/model"; const __dirname = getDirname(import.meta.url); const withDirName = (path: string) => join(__dirname, path); const validConfigPath = withDirName('implementation/mock/cli-config.mock.js'); -const options = yargsGlobalOptionsDefinition(); +const options = defaultOptions; const demandCommand: [number, string] = [0, 'no command required']; describe('CLI arguments parsing', () => { diff --git a/packages/cli/src/lib/collect/command-object.spec.ts b/packages/cli/src/lib/collect/command-object.spec.ts index aa98da328..ff09303eb 100644 --- a/packages/cli/src/lib/collect/command-object.spec.ts +++ b/packages/cli/src/lib/collect/command-object.spec.ts @@ -6,7 +6,7 @@ import { join } from 'node:path'; import { yargsCli } from '../cli'; import { getDirname, logErrorBeforeThrow } from '../implementation/utils'; import { middlewares } from '../middlewares'; -import { yargsGlobalOptionsDefinition } from '../options'; +import { yargsGlobalOptionsDefinition } from '../implementation/global-options'; import { yargsCollectCommandObject } from './command-object'; const command = { diff --git a/packages/cli/src/lib/implementation/base-command-config.ts b/packages/cli/src/lib/implementation/base-command-config.ts deleted file mode 100644 index 107c7a9f5..000000000 --- a/packages/cli/src/lib/implementation/base-command-config.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - globalCliArgsSchema, - refineCoreConfig, - unrefinedCoreConfigSchema, -} from '@quality-metrics/models'; -import { z } from 'zod'; - -export const commandBaseSchema = refineCoreConfig( - globalCliArgsSchema.merge(unrefinedCoreConfigSchema), -); -export type CommandBase = z.infer; diff --git a/packages/cli/src/lib/implementation/config-middleware.ts b/packages/cli/src/lib/implementation/config-middleware.ts index 228c1d13e..ba744d9ad 100644 --- a/packages/cli/src/lib/implementation/config-middleware.ts +++ b/packages/cli/src/lib/implementation/config-middleware.ts @@ -1,8 +1,7 @@ -import { bundleRequire } from 'bundle-require'; -import { stat } from 'fs/promises'; - -import { GlobalCliArgs, globalCliArgsSchema } from '@quality-metrics/models'; -import { CommandBase, commandBaseSchema } from './base-command-config'; +import {bundleRequire} from 'bundle-require'; +import {stat} from 'fs/promises'; +import {GlobalOptions, globalOptionsSchema} from "../model"; +import {CommandBase, commandBaseSchema} from "./model"; export class ConfigParseError extends Error { constructor(configPath: string) { @@ -13,7 +12,7 @@ export class ConfigParseError extends Error { export async function configMiddleware( processArgs: T, ): Promise { - const globalCfg: GlobalCliArgs = globalCliArgsSchema.parse(processArgs); + const globalCfg: GlobalOptions = globalOptionsSchema.parse(processArgs); const { configPath } = globalCfg; try { const stats = await stat(configPath); diff --git a/packages/cli/src/lib/implementation/global-options.ts b/packages/cli/src/lib/implementation/global-options.ts new file mode 100644 index 000000000..f8a087db4 --- /dev/null +++ b/packages/cli/src/lib/implementation/global-options.ts @@ -0,0 +1,23 @@ +import {GlobalOptions} from "../model"; +import {Options} from "yargs"; + +export function yargsGlobalOptionsDefinition(): Record { + return { + interactive: { + describe: 'When false disables interactive input prompts for options.', + type: 'boolean', + default: true, + }, + verbose: { + describe: + 'When true creates more verbose output. This is helpful when debugging.', + type: 'boolean', + default: false, + }, + configPath: { + describe: 'Path the the config file, e.g. code-pushup.config.js', + type: 'string', + default: 'code-pushup.config.js', + }, + }; +} diff --git a/packages/cli/src/lib/implementation/model.ts b/packages/cli/src/lib/implementation/model.ts new file mode 100644 index 000000000..e22e4e0c9 --- /dev/null +++ b/packages/cli/src/lib/implementation/model.ts @@ -0,0 +1,21 @@ +import { + globalOptionsSchema as coreGlobalOptionsSchema, + refineCoreConfig, + unrefinedCoreConfigSchema +} from "@quality-metrics/models"; +import {z} from "zod"; + +export const globalOptionsSchema = coreGlobalOptionsSchema + .merge(z.object({ + interactive: z.boolean({ + description: + 'flag if interactivity should be considered. Useful for CI runs.', + }).default(true) + })); + +export type GlobalOptions = z.infer; + +export const commandBaseSchema = refineCoreConfig( + globalOptionsSchema.merge(unrefinedCoreConfigSchema), +); +export type CommandBase = z.infer; diff --git a/packages/cli/src/lib/model.ts b/packages/cli/src/lib/model.ts new file mode 100644 index 000000000..99bf7f8fb --- /dev/null +++ b/packages/cli/src/lib/model.ts @@ -0,0 +1,12 @@ +import {globalOptionsSchema as coreGlobalOptionsSchema} from "@quality-metrics/models"; +import {z} from "zod"; + +export const globalOptionsSchema = coreGlobalOptionsSchema + .merge(z.object({ + interactive: z.boolean({ + description: + 'flag if interactivity should be considered. Useful for CI runs.', + }).default(true) + })); + +export type GlobalOptions = z.infer; diff --git a/packages/cli/src/lib/options.ts b/packages/cli/src/lib/options.ts index e3d7a2a1a..2193cc278 100644 --- a/packages/cli/src/lib/options.ts +++ b/packages/cli/src/lib/options.ts @@ -1,22 +1,6 @@ -import { Options } from 'yargs'; +import {yargsGlobalOptionsDefinition} from "./implementation/global-options"; -export function yargsGlobalOptionsDefinition(): Record { - return { - interactive: { - describe: 'When false disables interactive input prompts for options.', - type: 'boolean', - default: true, - }, - verbose: { - describe: - 'When true creates more verbose output. This is helpful when debugging.', - type: 'boolean', - default: false, - }, - configPath: { - describe: 'Path the the config file, e.g. code-pushup.config.js', - type: 'string', - default: 'code-pushup.config.js', - }, - }; -} + +export const options = { + ...yargsGlobalOptionsDefinition() +}; diff --git a/packages/models/src/index.ts b/packages/models/src/index.ts index 2fb8596c0..d472b7c12 100644 --- a/packages/models/src/index.ts +++ b/packages/models/src/index.ts @@ -1,5 +1,5 @@ export { CategoryConfig, categoryConfigSchema } from './lib/category-config'; -export { GlobalCliArgs, globalCliArgsSchema } from './lib/global-cli-options'; +export { GlobalOptions, globalOptionsSchema } from './lib/global-options'; export { CoreConfig, coreConfigSchema, diff --git a/packages/models/src/lib/global-cli-options.ts b/packages/models/src/lib/global-options.ts similarity index 60% rename from packages/models/src/lib/global-cli-options.ts rename to packages/models/src/lib/global-options.ts index f07083aa6..11132256b 100644 --- a/packages/models/src/lib/global-cli-options.ts +++ b/packages/models/src/lib/global-options.ts @@ -1,13 +1,7 @@ import { z } from 'zod'; import { generalFilePathSchema } from './implementation/schemas'; -export const globalCliArgsSchema = z.object({ - interactive: z - .boolean({ - description: - 'flag if interactivity should be considered. Useful for CI runs.', - }) - .default(true), +export const globalOptionsSchema = z.object({ verbose: z .boolean({ description: 'Outputs additional information for a run', @@ -20,4 +14,4 @@ export const globalCliArgsSchema = z.object({ .default('code-pushup.config.js'), }); -export type GlobalCliArgs = z.infer; +export type GlobalOptions = z.infer; diff --git a/packages/utils/src/lib/collect/index.ts b/packages/utils/src/lib/collect/index.ts index 58505175e..9c5259d9e 100644 --- a/packages/utils/src/lib/collect/index.ts +++ b/packages/utils/src/lib/collect/index.ts @@ -1,4 +1,4 @@ -import { CoreConfig, GlobalCliArgs, Report } from '@quality-metrics/models'; +import {CoreConfig, GlobalOptions, Report} from '@quality-metrics/models'; import { executePlugins } from './implementation/execute-plugin'; import { calcDuration } from './implementation/utils'; @@ -17,7 +17,7 @@ export class CollectOutputError extends Error { } } -export type CollectOptions = GlobalCliArgs & CoreConfig; +export type CollectOptions = GlobalOptions & CoreConfig; /** * Run audits, collect plugin output and aggregate it into a JSON object From 155c16f7acb173659f2d46cb4c059c43aad76e83 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 1 Oct 2023 03:41:01 +0200 Subject: [PATCH 2/2] refactor(models): format --- packages/cli/src/lib/cli.spec.ts | 2 +- .../lib/implementation/config-middleware.ts | 8 +++---- .../src/lib/implementation/global-options.ts | 9 +++++--- packages/cli/src/lib/implementation/model.ts | 23 +++++++++++-------- packages/cli/src/lib/model.ts | 21 +++++++++-------- packages/cli/src/lib/options.ts | 5 ++-- packages/utils/src/lib/collect/index.ts | 2 +- 7 files changed, 39 insertions(+), 31 deletions(-) diff --git a/packages/cli/src/lib/cli.spec.ts b/packages/cli/src/lib/cli.spec.ts index 0da034810..3cc61a693 100644 --- a/packages/cli/src/lib/cli.spec.ts +++ b/packages/cli/src/lib/cli.spec.ts @@ -4,7 +4,7 @@ import { yargsCli } from './cli'; import { getDirname } from './implementation/utils'; import { middlewares } from './middlewares'; import { options as defaultOptions } from './options'; -import {CommandBase} from "./implementation/model"; +import { CommandBase } from './implementation/model'; const __dirname = getDirname(import.meta.url); const withDirName = (path: string) => join(__dirname, path); diff --git a/packages/cli/src/lib/implementation/config-middleware.ts b/packages/cli/src/lib/implementation/config-middleware.ts index ba744d9ad..3ca80af0f 100644 --- a/packages/cli/src/lib/implementation/config-middleware.ts +++ b/packages/cli/src/lib/implementation/config-middleware.ts @@ -1,7 +1,7 @@ -import {bundleRequire} from 'bundle-require'; -import {stat} from 'fs/promises'; -import {GlobalOptions, globalOptionsSchema} from "../model"; -import {CommandBase, commandBaseSchema} from "./model"; +import { bundleRequire } from 'bundle-require'; +import { stat } from 'fs/promises'; +import { GlobalOptions, globalOptionsSchema } from '../model'; +import { CommandBase, commandBaseSchema } from './model'; export class ConfigParseError extends Error { constructor(configPath: string) { diff --git a/packages/cli/src/lib/implementation/global-options.ts b/packages/cli/src/lib/implementation/global-options.ts index f8a087db4..4e31edc53 100644 --- a/packages/cli/src/lib/implementation/global-options.ts +++ b/packages/cli/src/lib/implementation/global-options.ts @@ -1,7 +1,10 @@ -import {GlobalOptions} from "../model"; -import {Options} from "yargs"; +import { GlobalOptions } from '../model'; +import { Options } from 'yargs'; -export function yargsGlobalOptionsDefinition(): Record { +export function yargsGlobalOptionsDefinition(): Record< + keyof GlobalOptions, + Options +> { return { interactive: { describe: 'When false disables interactive input prompts for options.', diff --git a/packages/cli/src/lib/implementation/model.ts b/packages/cli/src/lib/implementation/model.ts index e22e4e0c9..3f021cc82 100644 --- a/packages/cli/src/lib/implementation/model.ts +++ b/packages/cli/src/lib/implementation/model.ts @@ -1,17 +1,20 @@ import { globalOptionsSchema as coreGlobalOptionsSchema, refineCoreConfig, - unrefinedCoreConfigSchema -} from "@quality-metrics/models"; -import {z} from "zod"; + unrefinedCoreConfigSchema, +} from '@quality-metrics/models'; +import { z } from 'zod'; -export const globalOptionsSchema = coreGlobalOptionsSchema - .merge(z.object({ - interactive: z.boolean({ - description: - 'flag if interactivity should be considered. Useful for CI runs.', - }).default(true) - })); +export const globalOptionsSchema = coreGlobalOptionsSchema.merge( + z.object({ + interactive: z + .boolean({ + description: + 'flag if interactivity should be considered. Useful for CI runs.', + }) + .default(true), + }), +); export type GlobalOptions = z.infer; diff --git a/packages/cli/src/lib/model.ts b/packages/cli/src/lib/model.ts index 99bf7f8fb..a9a03c7d4 100644 --- a/packages/cli/src/lib/model.ts +++ b/packages/cli/src/lib/model.ts @@ -1,12 +1,15 @@ -import {globalOptionsSchema as coreGlobalOptionsSchema} from "@quality-metrics/models"; -import {z} from "zod"; +import { globalOptionsSchema as coreGlobalOptionsSchema } from '@quality-metrics/models'; +import { z } from 'zod'; -export const globalOptionsSchema = coreGlobalOptionsSchema - .merge(z.object({ - interactive: z.boolean({ - description: - 'flag if interactivity should be considered. Useful for CI runs.', - }).default(true) - })); +export const globalOptionsSchema = coreGlobalOptionsSchema.merge( + z.object({ + interactive: z + .boolean({ + description: + 'flag if interactivity should be considered. Useful for CI runs.', + }) + .default(true), + }), +); export type GlobalOptions = z.infer; diff --git a/packages/cli/src/lib/options.ts b/packages/cli/src/lib/options.ts index 2193cc278..92370fe49 100644 --- a/packages/cli/src/lib/options.ts +++ b/packages/cli/src/lib/options.ts @@ -1,6 +1,5 @@ -import {yargsGlobalOptionsDefinition} from "./implementation/global-options"; - +import { yargsGlobalOptionsDefinition } from './implementation/global-options'; export const options = { - ...yargsGlobalOptionsDefinition() + ...yargsGlobalOptionsDefinition(), }; diff --git a/packages/utils/src/lib/collect/index.ts b/packages/utils/src/lib/collect/index.ts index 9c5259d9e..4675b1773 100644 --- a/packages/utils/src/lib/collect/index.ts +++ b/packages/utils/src/lib/collect/index.ts @@ -1,4 +1,4 @@ -import {CoreConfig, GlobalOptions, Report} from '@quality-metrics/models'; +import { CoreConfig, GlobalOptions, Report } from '@quality-metrics/models'; import { executePlugins } from './implementation/execute-plugin'; import { calcDuration } from './implementation/utils';