Compare commits

..

1 Commits

Author SHA1 Message Date
Sebastian Crane b3a41acd51 Remove superfluous utilisation of 'do' forms
Since defn evaluates the expressions it its body in the same way as do,
this commit removes the superfluous uses of do where it appears directly
as a function body.

Signed-off-by: Sebastian Crane <seabass-labrax@gmx.com>
2022-04-04 22:48:22 +01:00
6 changed files with 3 additions and 126 deletions

View File

@ -5,12 +5,6 @@
`matchbot` uses [version 2.0.0 of the Semantic Versioning](https://semver.org/spec/v2.0.0.html) scheme.
## [1.1.0] - 2022-05-14
* Add build system for generating POM, JAR and uberjar (standalone JAR) files
* Improve code quality
## [1.0.1] - 2022-04-01
* Fix vulnerability that causes serialised data to be deleted when it contains certain user input
@ -23,6 +17,5 @@
* Initial release
[1.1.0]: https://git.libregaming.org/LibreGaming/matchbot/releases/tag/1.1.0
[1.0.1]: https://git.libregaming.org/LibreGaming/matchbot/releases/tag/1.0.1
[1.0.0]: https://git.libregaming.org/LibreGaming/matchbot/releases/tag/1.0.0

View File

@ -40,37 +40,3 @@ For example:
> `;; SPDX-FileCopyrightText: 2022 Joe Bloggs <joe@example.com>`
If the copyright to your contributions is held by your employer, put your employer's name in brackets after your own name.
## Build system
### Building a POM file
The POM file lists the dependencies needed to run `matchbot` as well as some additional information that can help people learn more about `matchbot`.
To generate a POM file, run `clojure -T:build pom`; you should find the generated `POM.xml` file in the `target/` directory.
### Building a JAR file
A JAR file contains all the source code of `matchbot` in a form that the JVM can load and pass to the Clojure compiler to run.
To generate a JAR file, run `clojure -T:build jar`; again, you should find the JAR file called something like `matchbot-x.x.x.jar` in the `target/` directory.
### Building an uberjar
An uberjar is much like a normal JAR file, but comes with all the dependencies of `matchbot` bundled in it.
This means that it can run directly on the JVM without Clojure being installed (it contains a copy of the Clojure compiler itself).
To generate an uberjar, run `clojure -T:build uber`; you should find the uberjar called something like `matchbot-x.x.x-standalone.jar` in the `target/` directory.
Please note that if you distribute an uberjar, you must not only comply with the licence of `matchbot`, but also the licences of all `matchbot`'s dependencies, both transitive and intransitive.
## Versioning and release process
### Semantic Versioning
`matchbot` uses [version 2.0.0 of the Semantic Versioning](https://semver.org/spec/v2.0.0.html) scheme, but there is still ambiguity in what exactly comprises the 'Public API' (used for determining the right part of the version to increment) for something like `matchbot`.
This 'Public API' is defined for `matchbot` as everything that is accessible by the end user or administrator of a `matchbot` instance.
For example, a change that requires the configuration file to be updated warrants a major version increment because it effects the administrator; however, a change to the structure of the internal namespaces would only require a patch level version increment because it doesn't affect either the administrator or the end user.
### Release process
At some point after a new feature has been added to `matchbot` or a bug has been fixed, a release will be made.
Once a suitable version increment for the type of changes has been determined, the `CHANGELOG.md` file at the root of the repository will be updated with release notes documenting the changes made in that version.
Then, a JAR file and a POM file will be produced using the build system (see above for more information), signed using GPG and finally uploaded to [Maven Central](https://central.sonatype.org/).
Currently this process is done by [Sebastian Crane](https://git.libregaming.org/seabass); if you would like to help with making releases, please familiarise yourself with the process (you can try everything locally except upload to Maven Central) and get in contact! 😀

View File

@ -55,7 +55,7 @@ clojure -M -m system
Running the tests is a similar process to running the main application:
```bash
clojure -M:test
clojure -M:test -m kaocha.runner
```
### Starting a development REPL

View File

@ -1,77 +0,0 @@
;; SPDX-License-Identifier: Apache-2.0
;; SPDX-FileCopyrightText: 2022 Sebastian Crane <seabass-labrax@gmx.com>
(ns build
(:require [clojure.tools.build.api :as b]
[tools-pom.tasks :as pom]))
(def application 'org.libregaming/matchbot)
(def version "1.1.1-SNAPSHOT")
(def src-dirs ["src"])
(def target-dir "target")
(def class-dir (format "%s/%s" target-dir "classes"))
(def basis (b/create-basis {:project "deps.edn"}))
(def pom-file (format "%s/pom.xml" target-dir))
(def jar-file (format "%s/%s-%s.jar" target-dir (name application) version))
(def uber-file (format "%s/%s-%s-standalone.jar" target-dir (name application) version))
(defn clean [_]
(b/delete {:path target-dir}))
(defn uber [_]
(b/delete {:path class-dir})
(b/copy-dir {:src-dirs src-dirs
:target-dir class-dir})
(b/compile-clj {:basis basis
:src-dirs src-dirs
:class-dir class-dir})
(b/uber {:class-dir class-dir
:uber-file uber-file
:basis basis
:main 'system}))
(defn jar [_]
(b/delete {:path class-dir})
(b/copy-dir {:src-dirs src-dirs
:target-dir class-dir})
(b/jar {:class-dir class-dir
:jar-file jar-file}))
(defn pom [_]
(pom/pom
{:lib application
:version version
:write-pom true
:validate-pom true
:pom
{:description
"A chatbot for announcing upcoming matches and finding fellow players, written for the LibreGaming community"
:url
"https://git.libregaming.org/LibreGaming/matchbot"
:licenses
[:license
{:name "Apache-2.0"
:url "https://www.apache.org/licenses/LICENSE-2.0.html"}]
:developers
[:developer
{:id "seabass"
:name "Sebastian Crane"
:email "seabass-labrax@gmx.com"
:organization "LibreGaming"
:organization-url "https://libregaming.org"
:roles [:role "Maintainer"]
:timezone "Europe/London"}]
:scm
{:url "https://git.libregaming.org/LibreGaming/matchbot"
:connection "scm:git:https://git.libregaming.org/LibreGaming/matchbot.git"
:developer-connection "scm:git:ssh://git@git.libregaming.org/LibreGaming/matchbot.git"}
:issue-management
{:system "Gitea"
:url "https://git.libregaming.org/LibreGaming/matchbot/issues"}}})
(b/copy-file {:src "pom.xml" :target pom-file})
(b/delete {:path "pom.xml"}))
(defn all [_]
(jar nil)
(uber nil)
(pom nil))

View File

@ -6,8 +6,4 @@
clj-commons/clj-yaml {:mvn/version "0.7.107"}
irclj/irclj {:mvn/version "0.5.0-alpha4"}}
:aliases {:test {:extra-paths ["test"]
:extra-deps {lambdaisland/kaocha {:mvn/version "1.60.972"}}
:main-opts ["-m" "kaocha.runner"]}
:build {:deps {io.github.clojure/tools.build {:git/tag "v0.8.1" :git/sha "7d40500"}
com.github.pmonks/tools-pom {:mvn/version "1.0.74"}}
:ns-default build}}}
:extra-deps {lambdaisland/kaocha {:mvn/version "1.60.972"}}}}}

View File

@ -5,8 +5,7 @@
(:require [irc]
[clojure.data.json :as json]
[clojure.set :as set]
[clj-yaml.core :as yaml])
(:gen-class))
[clj-yaml.core :as yaml]))
(defn setify-vals [x]
(reduce #(assoc %1