Commit Graph

41 Commits

Author SHA1 Message Date
Sebastian Poxhofer 97327c3d28 refactor(linters): add prefer-coerce-array rule (#45492)
* refactor(linters): add prefer-coerce-array rule

Refs #45217

`x ?? []` and `coerceArray(x)` say the same thing, but only the second
one is searchable and consistent. The rule flags a `??` whose default is
a bare `[]` literal; a non-empty default or an asserted `([] as Foo[])`
still passes.

Applying it across `lib/` surfaced three spots the helper cannot cover,
which keep `?? []` with a disable comment or a narrower fix:

- `package-files.ts` destructures a tuple, which `coerceArray()` widens
- `generate.spec.ts` defaults `matchAll()`, an iterator rather than an array
- `mise/upgradeable-tooling.ts` declares a `Record` return, so its
  `?? []` fallback was wrong to begin with and becomes `coerceObject()`

* refactor(platform/github): hoist the GHE version header lookup

`Object.entries(...).find()` returns a tuple, and defaulting it with
`?? []` only to destructure the second element reads as an array
default when it is not one. Name the found entry instead, which drops
the `?? []` rather than routing a tuple through `coerceArray()`.
2026-08-28 09:27:58 +00:00
Sebastian Poxhofer 16ef1715e9 refactor(linters): add rules for @sindresorhus/is helpers (#45229)
* feat(lint): add renovate/prefer-is-helpers and renovate/prefer-is-object rules

Flag ad-hoc type checks that have @sindresorhus/is equivalents:
- .filter(Boolean) -> .filter(isTruthy)
- typeof x === 'string' -> isString(x)
- x === null || x === undefined -> isNullOrUndefined(x) (and negation)

The typeof x === 'object' shape lives in a separate suggestion-only rule
(renovate/prefer-is-object, kept at warn) because isObject()/isPlainObject()
are not drop-in equivalents: null, arrays and functions behave differently.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor: fix renovate/prefer-is-helpers violations

Replace ad-hoc type checks with @sindresorhus/is helpers across lib/:
- 13x .filter(Boolean) -> .filter(isTruthy)
- 36x typeof x ==/!== 'string' -> isString(x) / !isString(x)
- 6x x === null || x === undefined -> isNullOrUndefined(x) (and negation)

Promote renovate/prefer-is-helpers to error now that the codebase is clean.
renovate/prefer-is-object stays at warn: its 15 remaining sites guard
parsed YAML/JSON or unknown values where isObject()/isPlainObject() are
not provably equivalent (null/array/function semantics).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* refactor: enforce renovate/prefer-is-object at error level

Resolve the 15 remaining warnings and raise the rule from warn to error:

- Migrate 10 sites to isObject() where the guarded value provably cannot
  be a function (parsed YAML/JSON, typed exec command arguments, or
  test-controlled fixtures): helm-values, woodpecker, bun, pre-commit
  managers, exec utils, file package cache, and the github http spec.
  In the bun manager this also fixes a latent crash where a null
  `workspaces` value would throw on the `in` operator.
- Keep 5 sites as reasoned oxlint-disable comments where excluding
  functions is load-bearing: the byte-exact fingerprint canonicalizer
  (2), the circularity walker, the zod result guard, and the generic
  hasKey helper.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 14:22:03 +00:00
Felipe Santos e9e8083223 feat(config-validator): optimize imports to improve speed by 5x (#43048)
Optimize config-validator
2026-05-04 08:48:32 +00:00
Jamie Tanna 6e105562cb chore: log when repositories is being overridden by the CLI (#41553)
As noted in #41551, when i.e. a `config.js` specifies the
`repositories` to run against, with specific configuration for each
repo, this is silently overridden by the CLI passing command-line
arguments.

Until #41551 is complete, we can introduce a warning log to surface this
to self-hosted users who may be unaware of this behaviour.

Co-authored-by: Claude Sonnet 4.5 <jamie.tanna+github-copilot@mend.io>
2026-02-27 17:03:47 +00:00
Sergei Zharinov 930cf6633c refactor: Rewrite imports with .ts extensions (#40700)
fix: Additional vi.mock path corrections and prettier formatting
2026-01-26 22:48:17 +00:00
Jamie Tanna 6a4fa3f245 refactor(presets): return merged presets from resolveConfigPresets (#40422)
As part of future changes, we want to log the shallow configuration (the
full resolved configuration, but without any internal Renovate
configuration presets), where we'll want to note which presets have not
been merged in.

Before that, we can start with an initial refactor to indicate which
have been merged, and return them.
2026-01-14 16:52:16 +00:00
Simon Berger cb1bd5a81b feat: allow configFileNames to be set through env (#39144)
* test: add failing test for reading configFileNames from env

* fix: move configFileNames handling to shared config parsing

* feat: allow configFileNames to be set through env

* fix: move unit test from file to index

* test: add test for setting configFileNames through cli

* fix: fix merge

* test: use multiple config file names in tests

* test: add a length check after adding custom filenames
2025-11-17 15:27:28 +00:00
RahulGautamSingh 76f911041a refactor: use named exports (#39196)
* use named exports

* fix test

* add missing imnport

* fix prettier
2025-11-10 12:00:35 +00:00
RahulGautamSingh 9799cb01c7 fix(config/parse): merge extends iff additionalConfigFile has extends (#37717) 2025-08-27 10:36:37 +00:00
RahulGautamSingh 35910b8c87 feat: add support for second file config (#37033)
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2025-08-11 09:14:55 +00:00
RahulGautamSingh 5adb95593f feat(config): variables (#35350) 2025-07-06 07:24:33 +00:00
Claude Muller 22fc1acb26 fix(config): merge globalExtends before default config (#35521)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2025-05-05 09:46:24 +00:00
Rhys Arkins e7a4162169 refactor(config): set and delete keys early (#35679)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2025-05-02 08:15:56 +00:00
RahulGautamSingh af1cc9902b fix(config): apply secrets to global config (#35266) 2025-04-22 08:34:22 +00:00
RahulGautamSingh e0e53b9d76 refactor: move customEnvVariables to util folder (#35097) 2025-03-31 09:10:48 +00:00
RahulGautamSingh 3857332a9e feat(self-hosted): convert experimental env vars to config options (#29154)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2024-08-07 07:28:34 +00:00
RahulGautamSingh cf29c33809 feat(logging)!: drop logFile and logFileLevel (#29104)
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
2024-07-25 15:28:16 +02:00
RahulGautamSingh c6c4572ecb feat(logging)!: initialize file logging via env (#28104)
Closes #14705

BREAKING CHANGE: File logging must now be set via env and not in config.js
2024-07-25 15:28:16 +02:00
RahulGautamSingh 0c500f52f2 feat(config)!: change onboardingNoDeps from boolean to enum (#28133)
Change onboardingNoDeps from boolean to enum, with new default "auto". Auto means that Renovate will continue skipping repos with no dependencies if autodiscover is in use, but onboarding them if they are explicitly specified in a non-autodiscover mode.

Closes #28101

BREAKING CHANGE: onboardingNoDeps changes from boolean to enum. Repositories with no dependencies will be onboarded unless in autodiscover mode.
2024-07-25 15:28:16 +02:00
RahulGautamSingh de65584bf8 feat(config): validate file config on repo runs (#26379)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-04-13 08:52:28 +00:00
Sergei Zharinov b69416ce17 refactor(prettier): Force trailing commas (#25631) 2023-11-07 15:50:29 +00:00
Michael Kriese 2431c5a6b6 fix: better branch code coverage (#24274) 2023-09-06 13:35:52 +00:00
Rhys Arkins 36e2b328bb chore: update types reference 2023-08-15 11:31:15 +02:00
Philip c2ef0fe405 fix: remove extra trace log (#23661)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2023-08-02 12:17:59 +00:00
Rhys Arkins c14e4f79e4 fix(logging): better sanitize keys (#22533) 2023-06-01 18:26:50 +00:00
Sergei Zharinov 2a172759b6 feat: Better defaults for Codespaces configuration (#21113) 2023-03-24 12:12:21 +00:00
Rhys Arkins a4ab4523f8 feat(config)!: forkProcessing (#20759)
Removes "includeForks" option and replaces with "forkProcessing". New default behavior is to process forks if automerge=false.

Closes #20752

BREAKING CHANGE: Forked repos will now be processed automatically if autodiscover=false. includeForks is removed and replaced by new option forkProcessing.
2023-03-10 09:34:41 +01:00
Michael Kriese 8270d5512d refactor: fix lint issues (#16779)
* refactor: fix lint issues

* Update lib/renovate.ts

* chore: revert toplevel await for ts
2022-07-26 08:32:12 +00:00
Sergei Zharinov 83f67c27d5 refactor(fs): Rename getSubDirectory to getParentDir (#16446)
* refactor(fs): Rename `getSubDirectory` to `getParentDir`

* Add tests for `getSiblingFileName`

* fix

* fix
2022-07-07 06:44:21 +00:00
Sergei Zharinov 2b43f273bf refactor(fs): Remove proxies.ts file (#16325)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-07-01 14:57:30 +02:00
Sergei Zharinov 0cf4f48842 refactor: Strict null checks for all files except tests (#16071)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-06-20 11:47:07 +02:00
Michael Kriese 89d7fdf781 Revert "feat: extend dryRun options to extract lookup full (#14555)" (#14836)
This reverts commit 39471b57ad.
2022-03-29 02:47:54 +02:00
MaronHatoum 39471b57ad feat: extend dryRun options to extract lookup full (#14555) 2022-03-28 13:55:26 +02:00
Rhys Arkins dca3418bbd refactor: lib/modules (#14488)
Moves datasource, manager, platform and versioning code from lib/ into new lib/modules/

BREAKING CHANGE: External tools must update paths to datasource, manager, platform and versioning
2022-03-04 09:04:02 +01:00
Jamie Magee 3b7e9a17cb refactor: set importsNotUsedAsValues to error (#14052) 2022-02-07 06:37:17 +00:00
Nejc Habjan 0f1256317c refactor(config): use async readFile and dynamic import to load config file (#12649)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2021-11-17 06:49:53 +00:00
Florian Greinacher 70700eedae feat(config)!: make host rule detection configurable and opt-in (#12294)
Add configuration option `detectHostRulesFromEnv`.

BREAKING CHANGE: `hostRules` are no longer automatically derived from env variables such as `NPM_X_TOKEN`. Set `detectHostRulesFromEnv=true` in config to re-enable same functionality.
2021-11-05 08:10:27 +01:00
Rhys Arkins cd72cdf2ac feat(config): detectGlobalManagerConfig (#11951) 2021-09-29 19:58:42 +00:00
Rhys Arkins ee29fdcaf1 feat(config): scoped secrets using pgp/gpg (#11673) 2021-09-16 10:11:13 +00:00
Rhys Arkins cdc083f40f feat(config): privateKeyOld (#11653) 2021-09-10 12:47:33 +02:00
Rhys Arkins 11694e9294 refactor: move config/parse into global worker (#10282) 2021-06-02 12:06:16 +02:00