Skip to content

Migrate off the retired tool-base artifact - #20

Merged
alexander-yevsyukov merged 5 commits into
masterfrom
toolbase-split-migration
Aug 19, 2026
Merged

Migrate off the retired tool-base artifact#20
alexander-yevsyukov merged 5 commits into
masterfrom
toolbase-split-migration

Conversation

@alexander-yevsyukov

Copy link
Copy Markdown
Contributor

Migrates ProtoTap off the retired io.spine.tools:tool-base artifact onto the
focused modules that replaced it.

tool-base#189 split the
monolithic tool-base module into fs, code, archive, kotlin-code,
java-code, proto-code, and classic-codegen, and retired the
io.spine.tools:tool-base artifact
. ProtoTap used exactly one symbol from it.

Imports migrated

From To File
io.spine.tools.code.proto.CodeGeneratorRequestWriter io.spine.tools.proto.code.CodeGeneratorRequestWriter protoc-plugin/src/main/kotlin/io/spine/tools/prototap/protoc/Plugin.kt

A repository-wide sweep for the other breaking changes in the split
(io.spine.tools.OsFamily, io.spine.tools.{div, resolve, toAbsoluteFile, isProtoSource}, io.spine.tools.StandardTypes, io.spine.tools.type,
Method(MethodSpec), io.spine.tools.java.code.{classSpec, constructorSpec, methodSpec, codeBlock}, Generated.dir / SourceRoot.subDir) found no other
occurrences
— ProtoTap does not use any of them.

Dependency constants swapped

  • protoc-plugin/build.gradle.ktsimplementation(ToolBase.lib)
    implementation(ToolBase.protoCode).
  • buildSrc/src/main/kotlin/module.gradle.kts
    • force(...) list: ToolBase.libToolBase.code, ToolBase.fs,
      ToolBase.protoCode.
    • Dropped substitute(module("io.spine.tools:spine-tool-base")).using(module(ToolBase.lib)).
      The legacy 1.x coordinate has no successor now that the monolith is gone, and
      substituting it onto an artifact that is never published would turn a dormant
      rule into a hard resolution failure. Verified that nothing pulls tool-base
      or spine-tool-base transitively: :protoc-plugin, :gradle-plugin, and
      :api runtimeClasspath are all clean.

grep -rn "ToolBase\.lib\|io\.spine\.tools:tool-base\|spine-tool-base" over the
repository now matches only the explanatory comment in module.gradle.kts.

ToolBase pinned to 2.0.0-SNAPSHOT.421

./config/pull ships ToolBase.version = "2.0.0-SNAPSHOT.420". This branch
deliberately moves it forward to 2.0.0-SNAPSHOT.421 in
buildSrc/src/main/kotlin/io/spine/dependency/local/ToolBase.kt, so the repo's
copy intentionally diverges from config until config catches up. All twelve
tool-base modules used here resolve at .421 from the Artifact Registry.

No dependency version moved backwards as a result of the config float — every
changed constant under buildSrc/src/main/kotlin/io/spine/dependency/ advanced.

Verification

  • ./gradlew clean then ./gradlew buildSUCCESS (6 tests, 6 passed).
  • ./gradlew dokkaGenerateSUCCESS.
  • docs/dependencies/pom.xml now records io.spine.tools:proto-code:2.0.0-SNAPSHOT.421
    and no longer mentions tool-base.
  • Version bumped 0.16.00.17.0, migrating by extra(...) to extra.set(...).
  • Reviewers: spine-code-review, kotlin-engineer, review-docs — all APPROVE.
    dependency-audit confirmed no version rollback; its remaining findings concern
    config-distributed files (Validation.kt, Compiler.kt, JacksonV2.kt) that
    are out of scope for a consumer repo per AGENTS.md § Code review.

Part of the Tier 1 tool-base split migration.

🤖 Generated with Claude Code

Float the shared `config` submodule and refresh the files it distributes.

No dependency version moved backwards: every changed constant under
`buildSrc/src/main/kotlin/io/spine/dependency/` advanced.
The `io.spine.tools:tool-base` module was retired by tool-base#189 and its
contents split across focused modules. `CodeGeneratorRequestWriter` moved
from `io.spine.tools.code.proto` to `io.spine.tools.proto.code`, which is
published as `io.spine.tools:proto-code`.

Also pin `ToolBase.version` to `2.0.0-SNAPSHOT.421`, one ahead of what
`config` currently ships.
Only one legacy coordinate is still substituted, and the split modules are
declared in `ToolBase` rather than all being forced here.
@codecov

codecov Bot commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 14.40%. Comparing base (43ac1ac) to head (ebd6124).

Additional details and impacted files
@@            Coverage Diff            @@
##             master      #20   +/-   ##
=========================================
  Coverage     14.40%   14.40%           
  Complexity        9        9           
=========================================
  Files             5        5           
  Lines           118      118           
  Branches          6        6           
=========================================
  Hits             17       17           
  Misses          101      101           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@alexander-yevsyukov alexander-yevsyukov self-assigned this Aug 19, 2026
@alexander-yevsyukov alexander-yevsyukov moved this to 🏗 In progress in v2.0 Aug 19, 2026
@alexander-yevsyukov alexander-yevsyukov moved this from 🏗 In progress to In Review in v2.0 Aug 19, 2026
@alexander-yevsyukov
alexander-yevsyukov merged commit 39d9103 into master Aug 19, 2026
9 checks passed
@alexander-yevsyukov
alexander-yevsyukov deleted the toolbase-split-migration branch August 19, 2026 18:16
@github-project-automation github-project-automation Bot moved this from In Review to ✅ Done in v2.0 Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

2 participants