Commit Graph

29 Commits

Author SHA1 Message Date
Sebastian Poxhofer a1971afa78 fix(linters): add linting rule to enforce usage of our regEx utility (#44690)
* ci(linter): add renovate/require-regex-util rule

Adds a custom oxlint rule that flags raw RegExp usage in lib/
production code: any `new RegExp(...)` call and any regex literal
that is not the direct first argument of `regEx(...)`. The regEx()
helper from lib/util/regex.ts uses the RE2 engine for ReDoS-safe
matching and caches compiled patterns. lib/util/regex.ts itself is
exempt.

The rule is disabled for **/*.spec.ts, test/**, and tools/** via
config overrides, because vitest APIs such as expect.stringMatching
need bare RegExp instances (a past commit reverted regEx() there).

Severity is set to "warn" instead of "error": the repo currently has
197 pre-existing violations (above the agreed mechanical-fix
threshold of 80), and a number of them are deliberately
RE2-incompatible patterns (lookahead/lookbehind/named backreferences,
see TODO #12872/#12875 markers in e.g. lib/modules/versioning/rez/
pattern.ts and lib/modules/manager/dockerfile/extract.ts) that need
per-site judgment before they can be wrapped in regEx() or suppressed
with a justified disable comment. No violation fixes are included in
this commit.

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

* ci(linter): enforce renovate/require-regex-util at error

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

* refactor: use regEx() for regex literals and RegExp construction in lib

Burn down all renovate/require-regex-util violations (197):

- wrap RE2-compatible regex literals and RegExp constructions in regEx()
- rewrite lookaround patterns where behavior is provably preserved:
  goproxy separator split, sbt-package link extraction, leiningen
  comment stripping and keyword search, npm GitHub owner validation
  (unit-count bound replaced by an explicit length check)
- keep native RegExp with disable comments where RE2 cannot be used:
  moo / good-enough-parser lexer patterns (moo rejects RE2 instances),
  MigrationsService propertyName (matched via isRegExp, which RE2
  instances fail), rez named backreferences and lookaheads, GitHub
  markdown link negative lookbehind, emoji astral-plane matching
- drop stale TODO #12875 comments for patterns current re2 handles

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

* refactor: reduce require-regex-util disable comments

Rewrite the github massage-markdown-links URL regex to capture an
optional `api.` prefix in a named group (skipped in code) instead of
relying on a negative lookbehind, so both the base and global variants
can use regEx()/RE2 and their two disable comments are removed. Add
spec cases for api-prefixed URLs that match the URL shape.

Consolidate the four related line disables in rez/pattern.ts (bound and
range patterns emulating Python conditional patterns via named
backreferences and lookaheads, which RE2 cannot express) into a single
block disable/enable pair, matching the treatment of the lexer files.

Disable comment count drops from 13 to 8.

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

* refactor(datasource/sbt-package): use named capture group in link regex

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

* refactor(manager/cake): restore original multiLineComment regex spelling

The [^] -> [\\s\\S] rewrite was only needed for an RE2 wrap that was
later reverted; keep the diff minimal.

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

* fix(datasource/go): skip empty GOPROXY segments

The switch from a lookahead split to a capture-group split (needed because
RE2 has no lookahead support) changed how empty GOPROXY segments parse:
`a|,b` yielded `{ url: ',', fallback: '|' }` before and
`{ url: '', fallback: ',' }` after. The comma fallback only continues on
404/410, so a failing proxy ahead of an empty segment silently stopped the
lookup instead of falling through to the remaining proxies.

Empty segments carry no url to query, so drop them.

* refactor(datasource/go): use isTruthy for empty segment filter

* fix(datasource/go): filter empty segments before mapping

Filtering after the map broke the contextual typing from the
GoproxyItem[] annotation, widening fallback to string.

* refactor(platform/github): use regEx() for merge queue query stripping

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-14 14:30:46 +00:00
Jamie Tanna b3f7846c16 fix(manager/gradle-wrapper): quote distribution URL in wrapper command
To prevent the possibility of the `distributionUrl` in a given
repository including shell metacharacters, which could lead to command
execution, we can make sure they are quoted appropriately.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-08-07 14:22:55 +01:00
Jamie Tanna 2d1e57532f refactor(types): rename lockFile to fileName in ArtifactError (#41631)
As `fileName` makes more sense (as it's not always a lock file we're
updating).

Also, if you set `fileName`, it would never actually output the
filename.

This renames the usages of `lockFile` to `fileName`.

Co-authored-by: Claude Sonnet 4.5 <jamie.tanna+github-copilot@mend.io>
2026-03-10 09:57:31 +00:00
Jamie Tanna 12ea4f2831 refactor(gradle): move gradleJvmArg to util/exec (#41511)
As this is the better place for this to be overall, and as well as
future changes that will need to pull it from a central location.
2026-02-26 13:35:21 +00:00
Robert Stupp c08656f4b7 feat(gradle): allow specifying Gradle daemon heap size (#40090)
This change introduces a heap size limitation for the Gradle daemon used
when updating the Gradle wrapper, defaults to 512m.

The heap size is limited to the globally configured limit, which
defaults to 512m. It can be configured on the repository level, but not
exceed the globally configured limit. A hard coded mimiumum heap size of
512m is enforced.

The configuration option is named `toolSettings`, which has two
properties for the maximum and initial heap size. See
`docs/usage/configuration-options#toolSettings` for more details.
2026-02-04 13:25:58 +00:00
Jamie Tanna 3e70904fdd fix(gradle-wrapper): don't execute when allowedUnsafeExecutions (#40719)
As part of changes in f50470985c, we
missed the implementation for the Gradle Wrapper.
2026-01-27 09:48:16 +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
Sergei Zharinov ae49b7af38 chore(deps): switch to @renovatebot/good-enough-parser (#40623)
* chore(deps): switch to @jrnv/good-enough-parser

* chore(deps): switch to @renovatebot/good-enough-parser

* chore(deps): update @renovatebot/good-enough-parser to 1.2.0
2026-01-26 12:44:11 +00:00
Jamie Tanna 0dfe0f94e4 chore(gradle): clarify log message on errors (#40196)
So it's a little clearer what action(s) may be needed.
2026-01-06 08:42:03 +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
Sergei Zharinov 7c79c11285 fix: Always use default import from upath and semver-stable (#37325) 2025-08-05 11:01:45 +00:00
RahulGautamSingh 80b7cdf1e0 refactor(util): move user env to util folder (#35103) 2025-04-02 10:27:27 +00:00
Michael Kriese 593a92655e feat: refactor http (#34550) 2025-02-28 14:40:04 +00:00
Johannes Feichtner 32a13f66f9 feat(gradle-wrapper): add support for gradle daemon JVM discovery (#31319)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
2024-09-15 04:59:25 +00:00
RahulGautamSingh 2194142f78 feat(config): support user configured env (#27028)
Co-authored-by: Rhys Arkins <rhys@arkins.net>
Co-authored-by: HonkingGoose <34918129+HonkingGoose@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2024-02-22 05:05:05 +00:00
Johannes Feichtner 7b30ba8991 feat(manager/gradle-wrapper): change wrapper task to :wrapper (#26098) 2023-12-04 05:31:29 +00:00
Sergei Zharinov b69416ce17 refactor(prettier): Force trailing commas (#25631) 2023-11-07 15:50:29 +00:00
Johannes Feichtner 5336723207 fix(manager/gradle-wrapper): refresh Gradle lockfile after wrapper update (#23081) 2023-07-02 11:19:10 +00:00
Michael Kriese 73be295310 feat(core): centralize sidecar image usage (#19545) 2022-12-23 09:45:15 +00:00
Johannes Feichtner 30003c3a87 feat(gradle-wrapper): support for wrapper configuration updates in gradle build file (#17290) 2022-08-24 20:15:36 +00:00
Johannes Feichtner b8004fe61a fix(gradle-wrapper): support for wrapper updates in sub-directory (#17164)
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-08-18 05:03:43 +00:00
Michael Kriese 8586f463ea test(gradle-wrapper): modernize tests (#17204) 2022-08-16 09:14:38 +02:00
IKEDA Sho 72db89f6e5 refactor: Fix constraint typos (#16879) 2022-08-01 04:02:55 +00:00
Michael Kriese cf7bb3226d feat(manager/gradle-wrapper): support binarySource=install (#16830)
* feat(manager/gradle-wrapper): support `binarySource=install`

* docs: update docs
2022-07-28 13:47:56 +00:00
Sergei Zharinov 851d8f4f7a refactor(fs): Move chmod to chmodLocalFile (#16306)
* refactor(fs): Move `chmod` to `chmodLocalFile`

* More refactoring and tests

* Fix tests

* Apply suggestions from code review

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

* Fix prettier

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-06-29 06:03:49 +00:00
Michael Kriese e5c6f38d75 refactor: enable strict checks (#16168)
* refactor:  enable strict checks

* chore: revert changes

* chore: fix tsconfig
2022-06-21 13:00:21 +02:00
Michael Kriese f5f06c73be refactor(manager): more strict null checks (#15168) 2022-04-20 06:19:59 +02:00
Hasan Awad bb0bbcc383 fix(manager/gradle-wrapper): distributionSha256Sum is inconsistent with the gradle version (#14495)
* Change sha256 if it exists in the properties

* update sha to new value and then run update

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2022-03-09 12:56:17 +00: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