Skip to content

Commit

Permalink
Readme updates
Browse files Browse the repository at this point in the history
  • Loading branch information
julienvincent committed Sep 8, 2024
1 parent 0d98790 commit 76203fa
Showing 1 changed file with 58 additions and 21 deletions.
79 changes: 58 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,26 @@ providing a better understanding of deps.edn projects.
This project was built with a focus on improving the experience of working in Clojure monorepos but works great in
standalone projects too.

## Overview
## Index

- **Workspace features**: Discovers packages and understands relationships between dependencies
- **Aliases**: Allows dynamically interacting with workspace package aliases in a 'Clojure native' way
- **Build Tools**: Exposes a suite of libs intended to be used from tools.build programs to build monorepos
- **Command Runner**: Allows executing Clojure or external commands in workspace packages
- **Local Deps Overrides**: Allow overriding properties and `deps.edn` config during local development

## Documentation

+ **[kmono-core](https://cljdoc.org/d/com.kepler16/kmono-core)** - The core suite of API's for working with kmono
packages.
+ **[kmono-build](https://cljdoc.org/d/com.kepler16/kmono-build)** - A companion lib to `tools.build` which contains
API's for building jar artifacts or simplifying the use of `tools.build` in a kmono workspace.
+ **[kmono-version](https://cljdoc.org/d/com.kepler16/kmono-version)** - A set of API's for versioning kmono packages.
+ **[Features](#features)**
+ **[Installation](#installation)**
+ **[Documentation](#Documentation)**
+ **[Kmono CLI](#kmono-cli)**
+ **[Example Project](#example-project)**
+ **[Clojure-lsp / Editor Integration](#clojure-lsp-%2F-editor-integration)**

## Example project
## Features

Take a look at **[the example project](./examples/workspace/)** to get a better idea of the type of project
structures kmono is built to support and for references on how to correctly use the kmono API's and integrate it into
your own project.
- **Workspace features**: Discovers packages and understands relationships between dependencies
- **Aliases**: Allows working with packages aliases defined in `deps.edn` in a 'Clojure native' way without having to
pull all alias definitions into root `deps.edn`
- **Build Tools**: Exposes a suite of libs intended to be used from `tools.build` programs to build and release
monorepos
- **Command Runner**: Allows executing Clojure and/or external commands in workspace packages
- **Local Deps Overrides**: Allow overriding kmono config and `deps.edn` dependencies during local development. Useful
for providing local paths to in-development libs without committing.
- **Editor/Clojure-lsp**: Improves developer/editing experience by augmenting the classpath used by clojure-lsp

## Installation

Expand All @@ -64,23 +63,61 @@ bash < <(curl -s https://raw.githubusercontent.com/kepler16/kmono/master/install
Or alternatively binaries for various platforms can be pulled directly from the
[Releases](https://github.com/kepler16/kmono/releases) page.

### Editor Integration / ClojureLSP
## Documentation

+ **[kmono-core](https://cljdoc.org/d/com.kepler16/kmono-core)** - The core suite of API's for working with kmono
packages.
+ **[kmono-build](https://cljdoc.org/d/com.kepler16/kmono-build)** - A companion lib to `tools.build` which contains
API's for building jar artifacts or simplifying the use of `tools.build` in a kmono workspace.
+ **[kmono-version](https://cljdoc.org/d/com.kepler16/kmono-version)** - A set of API's for versioning kmono packages.

#### Kmono CLI

```bash
❯ kmono
NAME:
kmono - A cli for managing clojure (mono)repos

USAGE:
kmono [global-options] command [command options] [arguments...]

VERSION:
4.2.0

COMMANDS:
cp Produce a classpath string from a clojure project
repl Start a clojure repl
exec Run a command in each package
run Run an alias in project packages

GLOBAL OPTIONS:
-d, --dir S Run commands as if in this directory
-?, --help
```
#### Example project
Take a look at **[the example project](./examples/workspace/)** to get a better idea of the type of project
structures kmono is built to support and for references on how to correctly use the kmono API's and integrate it into
your own project.
## Clojure-lsp / Editor Integration
One of the things that kmono enables is integration into your editor by acting as a drop-in replacement for `clojure
-Spath` which is used by default by clojure-lsp.
If we instead use `kmono cp` to generate the classpath then your clojure-lsp server will be able to provide better
analysis.
##### Project local Clojure-LSP config
#### Project local Clojure-LSP config
```clojure
;; .lsp/config.edn
{:project-specs [{:project-path "deps.edn"
:classpath-cmd ["kmono" "cp"]}]}
```
##### Neovim / nvim-lspconfig
#### Neovim / nvim-lspconfig
```lua
local lspconfig = require('lspconfig')
Expand Down

0 comments on commit 76203fa

Please sign in to comment.