Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/just-sultanov/clj-fsm

[Experimental] A Finite state machine (FSM) for Clojure(Script)
https://github.com/just-sultanov/clj-fsm

clojure clojurescript finite-state-machine fsm

Last synced: about 1 month ago
JSON representation

[Experimental] A Finite state machine (FSM) for Clojure(Script)

Awesome Lists containing this project

README

        

image:https://img.shields.io/github/license/just-sultanov/clj-fsm[License,link=LICENSE]
image:https://codecov.io/gh/just-sultanov/clj-fsm/branch/master/graph/badge.svg[Codecov,link=https://codecov.io/gh/just-sultanov/clj-fsm]
image:https://github.com/just-sultanov/clj-fsm/workflows/build/badge.svg[Build]
image:https://github.com/just-sultanov/clj-fsm/workflows/deploy/badge.svg[Deploy]
image:https://img.shields.io/clojars/v/clj-fsm.svg[Clojars, link=https://clojars.org/clj-fsm]

== clj-fsm

Finite state machine (FSM) for Clojure(Script).

STATUS: Pre-alpha, in design and prototyping phase.

=== Quick Start Guide

Add the following dependency in your project:

[source,clojure]
----
;; project.clj or build.boot
[clj-fsm "RELEASE"]

;; deps.edn
{:deps {clj-fsm {:mvn/version "RELEASE"}}}

----

=== Examples

You can see full examples link:example/src/clj_fsm/example.cljc[here].

=== Development

[source,bash]
----
# Run nREPL & connect from your IDE
$ make repl
nREPL server started on port 7888 on host localhost - nrepl://localhost:7888
----

=== Testing

[source,bash]
----
# Run Clojure tests
$ make test-clj

# Run ClojureScript tests
$ make test-cljs

# Run Clojure & ClojureScript tests
$ make test
----

=== Deploy

[source,bash]
----
# commit all changes then
# create a new git tag (available types `minor`, `major`)
$ make patch

# push a new git tag to Github then wait for GitHub Actions
# start to deploy the new version to clojars
$ git push origin --tags
----

=== Available commands

[source,bash]
----
$ make help
help Show help
repl Run nREPL
clean Clean
lint Run linter
test-clj Run Clojure tests
test-cljs Run ClojureScript tests
test Run all tests
build Build jar
init Init first version
patch Increment patch version
minor Increment minor version
major Increment major version
deploy Deploy to clojars
----

==== Changelog

TBD

==== License

link:LICENSE[Copyright © 2019 Ilshat Sultanov]