rename: cloud-installer → cloud-sync
CI / build (push) Failing after 3s
CI / release (push) Has been skipped

'installer' implied one-way install (matching packwiz-installer); this
tool is bidirectional sync (pull on launch, push on exit). Aligns with
the existing automc <scope>-<role> pattern: cloud-svc ↔ cloud-sync,
matching mc-router, mc-wrapper, gate-waker.

Gitea repo renamed via API (id 2974 preserved); jar filename now
cloud-sync-<version>.jar. Build verified post-rename.
This commit is contained in:
2026-06-02 20:25:27 +02:00
parent 6ab43a168e
commit ed4115cba8
6 changed files with 21 additions and 21 deletions
+4 -4
View File
@@ -26,8 +26,8 @@ jobs:
if: startsWith(github.ref, 'refs/tags/v') if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: cloud-installer-jar name: cloud-sync-jar
path: build/libs/cloud-installer-*.jar path: build/libs/cloud-sync-*.jar
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -38,7 +38,7 @@ jobs:
- uses: actions/download-artifact@v4 - uses: actions/download-artifact@v4
with: with:
name: cloud-installer-jar name: cloud-sync-jar
path: build/libs/ path: build/libs/
- name: Publish release - name: Publish release
@@ -51,7 +51,7 @@ jobs:
-d "{\"tag_name\":\"${tag}\",\"name\":\"${tag}\",\"draft\":false,\"prerelease\":false}" \ -d "{\"tag_name\":\"${tag}\",\"name\":\"${tag}\",\"draft\":false,\"prerelease\":false}" \
"${GITEA_SERVER_URL}/api/v1/repos/${{ gitea.event.repository.full_name }}/releases" > /tmp/release.json "${GITEA_SERVER_URL}/api/v1/repos/${{ gitea.event.repository.full_name }}/releases" > /tmp/release.json
release_id=$(jq -r .id /tmp/release.json) release_id=$(jq -r .id /tmp/release.json)
for jar in build/libs/cloud-installer-*.jar; do for jar in build/libs/cloud-sync-*.jar; do
curl -sS -X POST \ curl -sS -X POST \
-H "Authorization: token ${gh_token}" \ -H "Authorization: token ${gh_token}" \
-F "attachment=@${jar}" \ -F "attachment=@${jar}" \
+7 -7
View File
@@ -1,4 +1,4 @@
# cloud-installer # cloud-sync
Single-jar Kotlin client for [`cloud-svc`](https://git.timemachine.center/Timemachine/cloud-svc). Drops into Prism / MMC / ATLauncher / frazclient pre-launch + post-exit hooks alongside [`packwiz-installer-bootstrap`](https://github.com/packwiz/packwiz-installer-bootstrap). One tool, all launchers, no Python dependency on the client side. Single-jar Kotlin client for [`cloud-svc`](https://git.timemachine.center/Timemachine/cloud-svc). Drops into Prism / MMC / ATLauncher / frazclient pre-launch + post-exit hooks alongside [`packwiz-installer-bootstrap`](https://github.com/packwiz/packwiz-installer-bootstrap). One tool, all launchers, no Python dependency on the client side.
@@ -12,12 +12,12 @@ In Prism's instance settings → Custom commands:
``` ```
Pre-launch command: Pre-launch command:
"$INST_JAVA" -jar /path/to/cloud-installer.jar pull \ "$INST_JAVA" -jar /path/to/cloud-sync.jar pull \
--url=https://cloud.timemachine.center \ --url=https://cloud.timemachine.center \
--pack-folder=$INST_MC_DIR --pack-folder=$INST_MC_DIR
Post-exit command: Post-exit command:
"$INST_JAVA" -jar /path/to/cloud-installer.jar push \ "$INST_JAVA" -jar /path/to/cloud-sync.jar push \
--url=https://cloud.timemachine.center \ --url=https://cloud.timemachine.center \
--pack-folder=$INST_MC_DIR --pack-folder=$INST_MC_DIR
``` ```
@@ -27,7 +27,7 @@ Token comes from `$INST_MC_DIR/.cloud-token` (paste once from your Discord-bot D
## CLI ## CLI
``` ```
java -jar cloud-installer.jar <subcommand> [flags] java -jar cloud-sync.jar <subcommand> [flags]
Subcommands: Subcommands:
pull Fetch user's cloud state, apply conflict resolution, write to instance. pull Fetch user's cloud state, apply conflict resolution, write to instance.
@@ -52,7 +52,7 @@ podman run --rm -v "$PWD":/work:Z -w /work docker.io/gradle:8.10.2-jdk21 \
gradle --no-daemon shadowJar gradle --no-daemon shadowJar
``` ```
Output: `build/libs/cloud-installer-<version>.jar`. Single fat jar; ship as-is. Output: `build/libs/cloud-sync-<version>.jar`. Single fat jar; ship as-is.
For local development with a matching JDK installed: For local development with a matching JDK installed:
@@ -71,10 +71,10 @@ Conflict resolution dialog: per-file [keep local | use remote | skip] radio butt
| Tool | What it owns | | Tool | What it owns |
|---|---| |---|---|
| **packwiz-installer-bootstrap** | Mod sync — jars, configs shipped by the modpack, options.txt baseline | | **packwiz-installer-bootstrap** | Mod sync — jars, configs shipped by the modpack, options.txt baseline |
| **cloud-installer** (this) | Per-user sync — player-modified configs, JourneyMap waypoints, screenshots | | **cloud-sync** (this) | Per-user sync — player-modified configs, JourneyMap waypoints, screenshots |
| **frazclient** | Cracked-launcher orchestration — JDK, vanilla MC, Fabric, then invokes both jars | | **frazclient** | Cracked-launcher orchestration — JDK, vanilla MC, Fabric, then invokes both jars |
cloud-installer and packwiz-installer-bootstrap are deliberately **separate jars** so players can disable cloud sync without affecting modpack sync (or vice versa) by just commenting out the line in Prism's hook config. cloud-sync and packwiz-installer-bootstrap are deliberately **separate jars** so players can disable cloud sync without affecting modpack sync (or vice versa) by just commenting out the line in Prism's hook config.
## License ## License
+1 -1
View File
@@ -48,7 +48,7 @@ tasks.test {
} }
tasks.shadowJar { tasks.shadowJar {
archiveBaseName.set("cloud-installer") archiveBaseName.set("cloud-sync")
archiveClassifier.set("") archiveClassifier.set("")
archiveVersion.set(project.version.toString()) archiveVersion.set(project.version.toString())
mergeServiceFiles() mergeServiceFiles()
+1 -1
View File
@@ -1 +1 @@
rootProject.name = "cloud-installer" rootProject.name = "cloud-sync"
@@ -7,13 +7,13 @@ package center.timemachine.cloud
*/ */
object Cli { object Cli {
fun runPull(args: Array<String>): Int { fun runPull(args: Array<String>): Int {
println("cloud-installer pull: ${args.joinToString(" ")}") println("cloud-sync pull: ${args.joinToString(" ")}")
println("(not yet implemented; skeleton commit only)") println("(not yet implemented; skeleton commit only)")
return 0 return 0
} }
fun runPush(args: Array<String>): Int { fun runPush(args: Array<String>): Int {
println("cloud-installer push: ${args.joinToString(" ")}") println("cloud-sync push: ${args.joinToString(" ")}")
println("(not yet implemented; skeleton commit only)") println("(not yet implemented; skeleton commit only)")
return 0 return 0
} }
@@ -4,11 +4,11 @@ import com.formdev.flatlaf.themes.FlatMacDarkLaf
import javax.swing.UIManager import javax.swing.UIManager
/** /**
* cloud-installer entrypoint. * cloud-sync entrypoint.
* *
* Invoked twice in the launcher hooks: * Invoked twice in the launcher hooks:
* PreLaunch: java -jar cloud-installer.jar pull --url=... --pack-folder=... * PreLaunch: java -jar cloud-sync.jar pull --url=... --pack-folder=...
* PostExit: java -jar cloud-installer.jar push --url=... --pack-folder=... * PostExit: java -jar cloud-sync.jar push --url=... --pack-folder=...
* *
* Exit codes: * Exit codes:
* 0 ok * 0 ok
@@ -21,7 +21,7 @@ fun main(args: Array<String>) {
return return
} }
if (args[0] in listOf("--version", "-V")) { if (args[0] in listOf("--version", "-V")) {
println("cloud-installer 0.1.0") println("cloud-sync 0.1.0")
return return
} }
@@ -50,10 +50,10 @@ fun main(args: Array<String>) {
private fun printHelp() { private fun printHelp() {
println(""" println("""
cloud-installer — per-user state sync for Minecraft clients cloud-sync — per-user state sync for Minecraft clients
Usage: Usage:
java -jar cloud-installer.jar <subcommand> [flags] java -jar cloud-sync.jar <subcommand> [flags]
Subcommands: Subcommands:
pull Fetch user's cloud state, apply conflict resolution, write to instance. pull Fetch user's cloud state, apply conflict resolution, write to instance.