diff --git a/.agents/tasks/relocate-source-code-directory-to-tool-base.md b/.agents/tasks/relocate-source-code-directory-to-tool-base.md new file mode 100644 index 0000000..09357c6 --- /dev/null +++ b/.agents/tasks/relocate-source-code-directory-to-tool-base.md @@ -0,0 +1,70 @@ +--- +slug: relocate-source-code-directory-to-tool-base +branch: relocate-source-code-directory-to-tool-base +owner: claude +status: blocked +started: 2026-06-04 +--- + +## Goal + +Follow the upstream relocation of `SourceCodeDirectory` (and +`AbstractDirectory`) out of the published `spine-base` artifact into +`tool-base`. In `mc-js` this means re-pointing the import +`io.spine.code.fs.SourceCodeDirectory` → +`io.spine.tools.fs.SourceCodeDirectory` in the 9 files that use it. + +## Status — BLOCKED + +The 9-file import rewrite is **committed on this branch** but **does not +compile yet**, and won't until `mc-js` is modernized to the new +dependency baseline. + +Rewritten + committed (import FQN + import order): +- `mc-js/.../code/index/CreateParsers.java` +- `mc-js/.../code/index/GenerateIndexFile.java` +- `mc-js/.../code/step/AppendTypeUrlGetter.java` +- `mc-js/.../code/step/CodeGenStep.java` +- `mc-js/.../code/step/CompiledProtoBelongsToModule.java` +- `mc-js/.../fs/FileWriter.java` +- `mc-js/.../code/given/TestCodeGenStep.java` (test) +- `mc-js/.../code/index/GenerateIndexFileTest.java` (test) +- `mc-js/.../code/step/CodeGenStepTest.java` (test) + +## Why it is blocked + +`mc-js` (master and feature branches) is on the legacy +`io.spine.internal.dependency.Spine` baseline: + +- `spine-base` `2.0.0-SNAPSHOT.195`, `spine-tool-base` `.192`, + `spine-model-compiler` + `spine-mc-java-plugins` `.175`. +- `config` submodule on the **v1** line. + +The moved class only exists in `spine-base 2.0.0-SNAPSHOT.400` / +`tool-base 2.0.0-SNAPSHOT.390`, which: + +- use the new `io.spine.dependency` layout, **and** +- **drop the `spine-` prefix** for the tools group + (`spine-tool-base` → `tool-base`, `spine-plugin-base` → `plugin-base`). + +`mc-js` is built **on top of** `model-compiler` / `mc-java`, so the +upgrade cascades — a version bump alone cannot resolve it. + +## Prerequisite chain to unblock (separate, multi-repo project) + +1. Modernize and publish `model-compiler` and `mc-java` to `spine-base` + `.400`. +2. Migrate `mc-js`'s `config` submodule (v1 → current) and `buildSrc` + dependency layout to `io.spine.dependency`. +3. Bump `mc-js` coordinates to `spine-base .400` / `tool-base .390` + (note the artifact renames) and reconcile the base API drift across + ~200 snapshot versions. +4. The committed import rewrite then compiles → `./gradlew build`. + +## Notes + +- `tool-base 2.0.0-SNAPSHOT.390` is already published to Maven Local with + the moved classes (`io/spine/tools/fs/{AbstractDirectory, + SourceCodeDirectory}.class`). +- Upstream move (delete from `base`, add to `tool-base`) is tracked in the + `base-libraries` repo. diff --git a/mc-js/src/main/java/io/spine/tools/mc/js/code/index/CreateParsers.java b/mc-js/src/main/java/io/spine/tools/mc/js/code/index/CreateParsers.java index 7ec97f4..30f2380 100644 --- a/mc-js/src/main/java/io/spine/tools/mc/js/code/index/CreateParsers.java +++ b/mc-js/src/main/java/io/spine/tools/mc/js/code/index/CreateParsers.java @@ -30,10 +30,10 @@ import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.protobuf.Descriptors.FileDescriptor; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileDescriptors; import io.spine.code.proto.FileSet; import io.spine.code.proto.TypeSet; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.fs.FileName; import io.spine.tools.mc.js.code.CodeWriter; import io.spine.tools.mc.js.code.step.CodeGenStep; diff --git a/mc-js/src/main/java/io/spine/tools/mc/js/code/index/GenerateIndexFile.java b/mc-js/src/main/java/io/spine/tools/mc/js/code/index/GenerateIndexFile.java index c09e240..ecde446 100644 --- a/mc-js/src/main/java/io/spine/tools/mc/js/code/index/GenerateIndexFile.java +++ b/mc-js/src/main/java/io/spine/tools/mc/js/code/index/GenerateIndexFile.java @@ -27,9 +27,9 @@ package io.spine.tools.mc.js.code.index; import com.google.common.annotations.VisibleForTesting; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileSet; import io.spine.code.proto.TypeSet; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.fs.FileName; import io.spine.tools.mc.js.code.CodeWriter; import io.spine.tools.mc.js.code.step.CodeGenStep; diff --git a/mc-js/src/main/java/io/spine/tools/mc/js/code/step/AppendTypeUrlGetter.java b/mc-js/src/main/java/io/spine/tools/mc/js/code/step/AppendTypeUrlGetter.java index aa69570..bda3f02 100644 --- a/mc-js/src/main/java/io/spine/tools/mc/js/code/step/AppendTypeUrlGetter.java +++ b/mc-js/src/main/java/io/spine/tools/mc/js/code/step/AppendTypeUrlGetter.java @@ -28,10 +28,10 @@ import com.google.common.annotations.VisibleForTesting; import com.google.protobuf.Descriptors.FileDescriptor; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileSet; import io.spine.code.proto.TypeSet; import io.spine.tools.code.Line; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.code.MethodReference; import io.spine.tools.js.code.TypeName; import io.spine.tools.mc.js.code.CodeWriter; diff --git a/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CodeGenStep.java b/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CodeGenStep.java index 1e6db82..0e12007 100644 --- a/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CodeGenStep.java +++ b/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CodeGenStep.java @@ -26,8 +26,8 @@ package io.spine.tools.mc.js.code.step; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileSet; +import io.spine.tools.fs.SourceCodeDirectory; import static com.google.common.base.Preconditions.checkNotNull; diff --git a/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CompiledProtoBelongsToModule.java b/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CompiledProtoBelongsToModule.java index c3fb5f3..0edae18 100644 --- a/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CompiledProtoBelongsToModule.java +++ b/mc-js/src/main/java/io/spine/tools/mc/js/code/step/CompiledProtoBelongsToModule.java @@ -26,8 +26,8 @@ package io.spine.tools.mc.js.code.step; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.SourceFile; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.fs.FileName; import io.spine.tools.js.fs.JsFiles; diff --git a/mc-js/src/main/java/io/spine/tools/mc/js/fs/FileWriter.java b/mc-js/src/main/java/io/spine/tools/mc/js/fs/FileWriter.java index 1c99546..3a0024f 100644 --- a/mc-js/src/main/java/io/spine/tools/mc/js/fs/FileWriter.java +++ b/mc-js/src/main/java/io/spine/tools/mc/js/fs/FileWriter.java @@ -28,7 +28,7 @@ import com.google.common.base.Charsets; import com.google.protobuf.Descriptors.FileDescriptor; -import io.spine.code.fs.SourceCodeDirectory; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.fs.FileName; import io.spine.tools.mc.js.code.CodeWriter; diff --git a/mc-js/src/test/java/io/spine/tools/mc/js/code/given/TestCodeGenStep.java b/mc-js/src/test/java/io/spine/tools/mc/js/code/given/TestCodeGenStep.java index d665d6b..6b2332c 100644 --- a/mc-js/src/test/java/io/spine/tools/mc/js/code/given/TestCodeGenStep.java +++ b/mc-js/src/test/java/io/spine/tools/mc/js/code/given/TestCodeGenStep.java @@ -26,8 +26,8 @@ package io.spine.tools.mc.js.code.given; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileSet; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.mc.js.code.step.CodeGenStep; import javax.annotation.Nullable; diff --git a/mc-js/src/test/java/io/spine/tools/mc/js/code/index/GenerateIndexFileTest.java b/mc-js/src/test/java/io/spine/tools/mc/js/code/index/GenerateIndexFileTest.java index 58b6a8e..2a0cba3 100644 --- a/mc-js/src/test/java/io/spine/tools/mc/js/code/index/GenerateIndexFileTest.java +++ b/mc-js/src/test/java/io/spine/tools/mc/js/code/index/GenerateIndexFileTest.java @@ -27,8 +27,8 @@ package io.spine.tools.mc.js.code.index; import com.google.protobuf.Descriptors.FileDescriptor; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileSet; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.fs.FileName; import io.spine.tools.js.fs.JsFiles; import io.spine.tools.mc.js.code.CodeWriter; diff --git a/mc-js/src/test/java/io/spine/tools/mc/js/code/step/CodeGenStepTest.java b/mc-js/src/test/java/io/spine/tools/mc/js/code/step/CodeGenStepTest.java index d1f2911..82b483f 100644 --- a/mc-js/src/test/java/io/spine/tools/mc/js/code/step/CodeGenStepTest.java +++ b/mc-js/src/test/java/io/spine/tools/mc/js/code/step/CodeGenStepTest.java @@ -27,9 +27,9 @@ package io.spine.tools.mc.js.code.step; import com.google.common.collect.ImmutableSet; -import io.spine.code.fs.SourceCodeDirectory; import io.spine.code.proto.FileDescriptors; import io.spine.code.proto.FileSet; +import io.spine.tools.fs.SourceCodeDirectory; import io.spine.tools.js.fs.DefaultJsPaths; import io.spine.tools.mc.js.code.given.GivenProject; import io.spine.tools.mc.js.code.given.TestCodeGenStep;