A Gradle plugin for Spotube that packages Zipline executables into .smplug files for Spotube plugin projects.
This plugin automatically creates packaging tasks when applied alongside the app.cash.zipline plugin. It bundles Zipline compiler outputs with your plugin.json into distributable .smplug files.
- Gradle 9.4+
- Kotlin JVM plugin
- Zipline
plugins {
id 'dev.krtirtho.spotube.gradle-plugin' version '0.1.1'
}plugins {
id("dev.krtirtho.spotube.gradle-plugin") version "0.1.1"
}Add the plugin to your version catalog (gradle/libs.versions.toml):
[plugins]
spotube = { id = "dev.krtirtho.spotube.gradle-plugin", version = "0.1.1" }Then reference it in your build files:
// build.gradle.kts
plugins {
alias(libs.plugins.spotube)
}Apply the plugin after the Zipline plugin:
plugins {
id("app.cash.zipline")
id("dev.krtirtho.spotube.gradle-plugin")
}The plugin automatically registers two tasks:
| Task | Description |
|---|---|
packageDevelopmentPlugin |
Packages the development Zipline build into plugin-development.smplug |
packageProductionPlugin |
Packages the production Zipline build into plugin-production.smplug |
Output files are placed in build/distributions/.
Ensure your project contains a plugin.json file at the project root, as it is automatically included in the package.
$ ./gradlew tasks --group distribution
Distribution tasks
------------------
packageDevelopmentPlugin - Packages the development Zipline executable and plugin.json into a smplug.
packageProductionPlugin - Packages the production Zipline executable and plugin.json into a smplug.
Copyright (C) 2026 spotube.cc
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License.
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.