This repository holds the apps in the Main and Contrib channels for Coursier.
You can find information about creating your own application to be installed
with cs here on the
website.
Each channel is made of one JSON file per app, under apps/resources (Main
channel) and apps-contrib/resources (Contrib channel). Those are aggregated
into a single JSON file per channel, listings/apps.json
and listings/apps-contrib.json, that coursier
reads as URL-based channels:
- Main: https://raw.githubusercontent.com/coursier/apps/main/listings/apps.json
- Contrib: https://raw.githubusercontent.com/coursier/apps/main/listings/apps-contrib.json
Those aggregated files are generated by the
.github/scripts/generate-channels.sc Scala CLI script. Please don't update
them directly: upon pushes to the main branch, CI regenerates them and opens
a pull request with the changes, if any. Locally, you can regenerate them with
scala-cli run .github/scripts/generate-channels.sc
The channels are also published as JARs, as io.get-coursier:apps and
io.get-coursier:apps-contrib, for former coursier versions. Up to 1.0.70,
these were published on Maven Central. Newer versions, and snapshots of the
main branch, are published on
GitHub Packages,
whose Maven repository is https://maven.pkg.github.com/coursier/apps.
The app descriptors are validated by the validator module of
the Mill build. On PRs, CI checks every descriptor (that coursier can parse it,
that it has no unknown keys, valid main classes, …), and, for the descriptors
changed by the PR, fetches the dependencies, and checks the main class and the
prebuilt launchers, for a sample of the versions handled by the base descriptor
and by each version override. Each app has its own module in the Mill build,
whose check command validates it, so that Mill's selective execution only
validates the apps whose descriptor or known issues changed. Locally, you can
validate some apps with
./mill apps.scala.check
./mill apps-contrib.bfg.check
or with the validator directly (pass --offline to skip the online checks)
./mill validator.run scala apps-contrib/resources/bfg.json
Known problems of former app versions, like missing prebuilt launchers, are
listed in validator/known-issues, in one file per app.
These are the apps in the default Main channel, used by cs install and
cs launch.
- almond
- ammonite
- bloop-jvm
- bloop
- coursier
- cs
- csbt
- dotty-repl
- echo-graalvm
- echo-java
- echo-native
- giter8
- mdoc
- metac
- metals-emacs
- metals-mcp
- metals
- metap-native
- metap
- mill-interactive
- mill
- sbt-launcher
- sbt
- sbtn
- scala-cli
- scala-experimental
- scala
- scala3-compiler
- scala3-decompiler
- scala3-doc
- scala3-repl
- scala3
- scalac
- scaladoc
- scalafix
- scalafmt
- scalap
- scalapbc
- stc
These apps are available by passing --contrib to the cs install and
cs launch commands.
Feel free to send in a PR to add your application here!
- amm-runner
- asm-textifier
- asmifier
- authors
- avro-tools
- bfg
- cache-migration
- catscript
- cellar
- cfr
- clojure
- cmta
- cmtc
- fastpass-jvm
- fastpass
- firstbird-emergence
- flyway
- frege
- git-changelog
- google-java-format
- groovy-shell
- groovy
- guardrail
- ivy
- jansi
- jfiglet
- jruby
- jython
- kafka-console-consumer
- kafka-console-producer
- kafka-consumer-groups
- kafka-server
- kafka-topics
- kinetic-merge
- ktfmt
- lsif-java
- make-it-g8
- openapi-generator
- plantuml
- proguard-7
- proguard-retrace
- proguard
- protoc-jar
- rhino
- rsc
- rscj
- s2d
- scala-debugger
- scala-monitor
- scala-steward
- scala-update
- scalals
- scalaxb
- scip-java
- sclin
- sjsls
- smithy-cli
- smithy-language-server
- smithy4s
- smithytranslate
- sn-bindgen
- sn-sizemap
- sn-vcpkg
- spaeti
- spark-connect-repl
- spark-repl
- sqlline
- swagger-codegen
- wiremock
- zookeeper
This README is auto-generated by the .github/scripts/generate-readme.sc
Scala CLI script. Please don't update the README directly, but rather update
the README.template.md. Note that you don't need to manually add your app to it,
it will be automatically added in CI.
If you'd like to test a change locally to ensure what you're adding or changing works correctly, you can do the following while in the workspace.
cs launch --default-channels=false --channel ./(apps|apps-contrib)/resources <app name>
This reads the app descriptors straight from the resources directories, so
that you don't need to regenerate the files under listings/ when testing.