Any of the following will work:
Create a new issue and fill out the template. Thanks for providing feedback on what's important to you as a user!
See the milestones for details on planned features.
Pull requests are very welcome. Thanks in advance for helping the project (that goes double for those of you updating documentation)!
.gradle/eclipse-java-formatter.xml
. (See Code Style for more information.)docs/
.
docs/_includes/nav.md
(for the https://clojurephant.dev site)docs/cljdoc.edn
(for the https://cljdoc.org docs)clojurephant-plugin/
clojurephant-tools/
clojurephant-plugin/src/compatTest
templates/*
A few helpful resources if you're new to writing Gradle plugins:
./gradlew :templates:<template project name>:newProject
(e.g. ./gradlew :templates:gradle-clj-lib:newProject
)templates-test/sample-*
).templates/
with a name matching what the template should be called. All templates should start with gradle-
.settings.gradle
to list the new template project.templates/<my-template>/src/main/clojure
and templates/<my-template>/src/main/resources
This project uses the Google Java Style Guide. Google provides google-java-format and an Eclipse formatter profile to help automate this. Both however have a weakness in how they line wrap, primarily for code that heavily uses lambdas. The style guide's text allows for more discretion in where line wrapping happens, but the automated ones can be overzealous. For this reason, we are using a modified version of the Eclipse profile that disables the automatic line wrapping.
The style is enforced using the spotless plugin, which can also reformat your code to comply with the style with ./gradlew spotlessApply
.
You can import the Eclipse formatter settings .gradle/eclipse-java-formatter.xml
to have your IDE respect the style.
clojurephant is built on Circle CI. This is configured in .circleci/config.yml
.
There is one workflow:
main
- General build verification running on all branches and PRs on push:
./gradlew check
test suites and style verification.To update the lock with the latest versions matching any ranges we specified:
./gradlew lock --write-locks
The following task will update our lock files will the latest available versions that match the compatibility rules in our stutter {}
block in modules/clojurephant-plugin/build.gradle
.
./gradlew stutterWriteLocks
The stutter {}
block can also be used to change the ranges we support. See stutter's documentation for details.
We use reckon to manage our versioning and tagging. There is no version number stored in the build file, reckon will determine this automatically from the project history and user input.
We have 3 release stages:
beta
- significant functionality that we'd like to release but the version isn't feature-complete yetrc
- intended as a final
release, but want to provide an opportunity for bug testingfinal
- no known or significant bugs were found in the rc, and it's ready for general consumptionTo generate a release:
rc
or final
) Make sure all issues in GitHub milestone.final
) make sure we've released an rc
already for this commit.master
branch checked out./gradlew reckonTagPush -Preckon.scope=<scope> -Preckon.stage=<stage>
(e.g. ./gradlew reckonTagPush -Preckon.scope=patch -Preckon.stage=beta
)
check
on the project, create a version tag, and push that tagmain
workflow, including the publish step if tests pass on all supported Java versions.beta
or rc
.Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close