Skip to content

Commit 1388677

Browse files
authored
feat(manifest): case-sensitive config-name globs with character classes (REA-621) (#1400)
* feat(manifest): case-sensitive config-name globs with character classes The --include-configs/--exclude-configs glob matchers in all three JVM facts producers (Gradle init script, sbt plugin, Maven extension) compiled with CASE_INSENSITIVE, contradicting the documented case-sensitive behavior and the capitalized examples. Make matching case-sensitive, and add `[...]` character classes (enumerations, ranges, `[!..]` negation) so a pattern can span the camelCase boundary — e.g. `*[Tt]est*` matches both testCompileClasspath and androidTestCompileClasspath. A malformed glob falls back to a literal match instead of throwing (which could otherwise fail the build). Help text updated to mention `[...]`; the Maven extension jar is rebuilt from source in CI. * docs(manifest): note that both [!..] and [^..] negate in config-name globs * docs(changelog): sbt producer's subcommand is 'scala', not 'sbt' * chore(release): 1.1.136 Cut 1.1.136 covering the three JVM-manifest changes landing together (REA-519 config-transparency, REA-622 auto-manifest Gradle detection, REA-621 case-sensitive config globs + character classes); tightened the changelog entries to single-line bullets.
1 parent 9e11c22 commit 1388677

13 files changed

Lines changed: 104 additions & 51 deletions

CHANGELOG.md

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,14 @@ All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

7-
## [Unreleased]
7+
## [1.1.136](https://github.com/SocketDev/socket-cli/releases/tag/v1.1.136) - 2026-07-02
88

99
### Changed
10-
- `socket manifest gradle --facts` no longer silently skips a Gradle
11-
configuration it can't resolve. Such configurations are now reported and stop
12-
the run unless you pass `--ignore-unresolved`, so an incomplete scan can't slip
13-
by unnoticed. Benign variant-selection ambiguity stays a one-line notice.
10+
- `socket manifest gradle --facts` now reports Gradle configurations it can't resolve instead of silently skipping them, failing the run unless you pass `--ignore-unresolved` so an incomplete scan can't slip by. Benign variant-selection ambiguity stays a one-line notice.
11+
- Config filters (`--include-configs` / `--exclude-configs`) for `socket manifest gradle`, `kotlin`, `scala`, and `maven` are now case-sensitive, as documented, and support `[...]` character classes — e.g. `*[Tt]est*` matches both `testCompileClasspath` and `androidTestCompileClasspath`.
1412

1513
### Fixed
16-
- `socket manifest auto` and `scan create --auto-manifest` now detect a Gradle
17-
project by its build files (`build.gradle`/`.kts` or `settings.gradle`/`.kts`)
18-
instead of requiring a `gradlew` wrapper, so a project that builds with
19-
`gradle` on your PATH — including a settings-only multi-module root — is no
20-
longer skipped.
14+
- `socket manifest auto` and `socket scan create --auto-manifest` now detect a Gradle project by its build files (`build.gradle`/`.kts` or `settings.gradle`/`.kts`) instead of requiring a `gradlew` wrapper, so wrapper-less projects — including settings-only multi-module roots — are no longer skipped.
2115

2216
## [1.1.135](https://github.com/SocketDev/socket-cli/releases/tag/v1.1.135) - 2026-07-01
2317

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "socket",
3-
"version": "1.1.135",
3+
"version": "1.1.136",
44
"description": "CLI for Socket.dev",
55
"homepage": "https://github.com/SocketDev/socket-cli",
66
"license": "MIT",

src/commands/manifest/cmd-manifest-gradle.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const config: CliCommandConfig = {
4545
includeConfigs: {
4646
type: 'string',
4747
description:
48-
'When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive, `*` and `?` wildcards). Only configurations matching at least one pattern are resolved. e.g. `*CompileClasspath,*RuntimeClasspath`. Default: every resolvable configuration',
48+
'When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive; `*`, `?`, and `[...]` wildcards). Only configurations matching at least one pattern are resolved. e.g. `*CompileClasspath,*RuntimeClasspath`. Default: every resolvable configuration',
4949
},
5050
excludeConfigs: {
5151
type: 'string',

src/commands/manifest/cmd-manifest-gradle.test.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('socket manifest gradle', async () => {
2828
--facts Emit a Socket facts JSON file (\`.socket.facts.json\`) describing the resolved dependency graph. This is the default; pass \`--pom\` to generate \`pom.xml\` files instead
2929
--gradle-opts Additional options to pass on to ./gradlew, see \`./gradlew --help\`
3030
--ignore-unresolved When generating facts: warn on unresolved dependencies instead of failing the run (unresolved deps are not emitted to the facts file)
31-
--include-configs When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive, \`*\` and \`?\` wildcards). Only configurations matching at least one pattern are resolved. e.g. \`*CompileClasspath,*RuntimeClasspath\`. Default: every resolvable configuration
31+
--include-configs When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive; \`*\`, \`?\`, and \`[...]\` wildcards). Only configurations matching at least one pattern are resolved. e.g. \`*CompileClasspath,*RuntimeClasspath\`. Default: every resolvable configuration
3232
--pom Generate \`pom.xml\` manifest file(s) instead of the default Socket facts file (\`.socket.facts.json\`)
3333
--verbose Print debug messages
3434

src/commands/manifest/cmd-manifest-kotlin.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const config: CliCommandConfig = {
5050
includeConfigs: {
5151
type: 'string',
5252
description:
53-
'When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive, `*` and `?` wildcards). Only configurations matching at least one pattern are resolved. e.g. `*CompileClasspath,*RuntimeClasspath`. Default: every resolvable configuration',
53+
'When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive; `*`, `?`, and `[...]` wildcards). Only configurations matching at least one pattern are resolved. e.g. `*CompileClasspath,*RuntimeClasspath`. Default: every resolvable configuration',
5454
},
5555
excludeConfigs: {
5656
type: 'string',

src/commands/manifest/cmd-manifest-kotlin.test.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ describe('socket manifest kotlin', async () => {
2828
--facts Emit a Socket facts JSON file (\`.socket.facts.json\`) describing the resolved dependency graph. This is the default; pass \`--pom\` to generate \`pom.xml\` files instead
2929
--gradle-opts Additional options to pass on to ./gradlew, see \`./gradlew --help\`
3030
--ignore-unresolved When generating facts: warn on unresolved dependencies instead of failing the run (unresolved deps are not emitted to the facts file)
31-
--include-configs When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive, \`*\` and \`?\` wildcards). Only configurations matching at least one pattern are resolved. e.g. \`*CompileClasspath,*RuntimeClasspath\`. Default: every resolvable configuration
31+
--include-configs When generating facts: comma-separated glob patterns matched against Gradle configuration names (case-sensitive; \`*\`, \`?\`, and \`[...]\` wildcards). Only configurations matching at least one pattern are resolved. e.g. \`*CompileClasspath,*RuntimeClasspath\`. Default: every resolvable configuration
3232
--pom Generate \`pom.xml\` manifest file(s) instead of the default Socket facts file (\`.socket.facts.json\`)
3333
--verbose Print debug messages
3434

src/commands/manifest/cmd-manifest-maven.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ const config: CliCommandConfig = {
3434
includeConfigs: {
3535
type: 'string',
3636
description:
37-
'Comma-separated glob patterns matched against Maven dependency scopes (case-sensitive, `*` and `?` wildcards). Only scopes matching at least one pattern are resolved. e.g. `compile,runtime`. Default: every scope',
37+
'Comma-separated glob patterns matched against Maven dependency scopes (case-sensitive; `*`, `?`, and `[...]` wildcards). Only scopes matching at least one pattern are resolved. e.g. `compile,runtime`. Default: every scope',
3838
},
3939
excludeConfigs: {
4040
type: 'string',

src/commands/manifest/cmd-manifest-maven.test.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ describe('socket manifest maven', async () => {
2525
--bin Location of the maven binary to use, default: ./mvnw if present, else mvn on PATH
2626
--exclude-configs Comma-separated glob patterns; Maven scopes matching any pattern are skipped (applied after --include-configs)
2727
--ignore-unresolved Warn on unresolved dependencies instead of failing the run (unresolved deps are not emitted to the facts file)
28-
--include-configs Comma-separated glob patterns matched against Maven dependency scopes (case-sensitive, \`*\` and \`?\` wildcards). Only scopes matching at least one pattern are resolved. e.g. \`compile,runtime\`. Default: every scope
28+
--include-configs Comma-separated glob patterns matched against Maven dependency scopes (case-sensitive; \`*\`, \`?\`, and \`[...]\` wildcards). Only scopes matching at least one pattern are resolved. e.g. \`compile,runtime\`. Default: every scope
2929
--maven-opts Additional options to pass on to maven, e.g. \`-P <profile> -s <settings.xml>\`
3030
--verbose Print debug messages
3131

src/commands/manifest/cmd-manifest-scala.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const config: CliCommandConfig = {
4343
includeConfigs: {
4444
type: 'string',
4545
description:
46-
'When generating facts: comma-separated glob patterns matched against sbt configuration names (case-sensitive, `*` and `?` wildcards). Only configurations matching at least one pattern are resolved. e.g. `compile,test`. Default: compile,optional,provided,runtime,test',
46+
'When generating facts: comma-separated glob patterns matched against sbt configuration names (case-sensitive; `*`, `?`, and `[...]` wildcards). Only configurations matching at least one pattern are resolved. e.g. `compile,test`. Default: compile,optional,provided,runtime,test',
4747
},
4848
excludeConfigs: {
4949
type: 'string',

src/commands/manifest/cmd-manifest-scala.test.mts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ describe('socket manifest scala', async () => {
2727
--exclude-configs When generating facts: comma-separated glob patterns; sbt configurations matching any pattern are skipped (applied after --include-configs)
2828
--facts Emit a Socket facts JSON file (\`.socket.facts.json\`) describing the resolved dependency graph. This is the default; pass \`--pom\` to generate \`pom.xml\` files instead
2929
--ignore-unresolved When generating facts: warn on unresolved dependencies instead of failing the run (unresolved deps are not emitted to the facts file)
30-
--include-configs When generating facts: comma-separated glob patterns matched against sbt configuration names (case-sensitive, \`*\` and \`?\` wildcards). Only configurations matching at least one pattern are resolved. e.g. \`compile,test\`. Default: compile,optional,provided,runtime,test
30+
--include-configs When generating facts: comma-separated glob patterns matched against sbt configuration names (case-sensitive; \`*\`, \`?\`, and \`[...]\` wildcards). Only configurations matching at least one pattern are resolved. e.g. \`compile,test\`. Default: compile,optional,provided,runtime,test
3131
--out Only with --pom: path of the output \`pom.xml\`, see also --stdout. Does not apply when generating Socket facts (always written to the project root as \`.socket.facts.json\`)
3232
--pom Generate \`pom.xml\` manifest file(s) instead of the default Socket facts file (\`.socket.facts.json\`)
3333
--sbt-opts Additional options to pass on to sbt, as per \`sbt --help\`

0 commit comments

Comments
 (0)