summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorJustin Wernick <justin@worthe-it.co.za>2023-06-15 22:08:32 +0200
committerJustin Wernick <justin@worthe-it.co.za>2023-06-15 22:08:32 +0200
commitabeb43732a2a9b45453e6acb6df3de2395659943 (patch)
tree2e7ef8ecc6f2fbe91d0e2e374a3899d9e85771d4 /README.md
parente38a8633ce01b702af944c052dd7ae9b621ac3df (diff)
Split contributing docs into their own file
Diffstat (limited to 'README.md')
-rw-r--r--README.md118
1 files changed, 30 insertions, 88 deletions
diff --git a/README.md b/README.md
index 6e0bfc1..d3db94d 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+# Shackle Shell
+
[![crates.io](https://img.shields.io/crates/v/shackle-shell)](https://crates.io/crates/shackle-shell)
A shell for restricting access on a version control server.
@@ -17,9 +19,9 @@ differences:
- Docs available for all commands, available in the shell itself.
- (coming soon!) Support for other other version control systems.
-# Getting Started
+## Getting Started
-## Usage
+### Usage
Shackle Shell is intended to be set as the default shell for a user on a git
server, where the user connects over SSH (see the Installation section below).
@@ -85,9 +87,9 @@ Options:
-h, --help Print help
```
-## Installation
+### Installation
-### Background
+#### Background
Shackle is designed to run on a Git server. The process of setting up your own
Git server, which is set up as described in the following two articles:
@@ -95,7 +97,7 @@ Git server, which is set up as described in the following two articles:
- [initial server setup](https://www.worthe-it.co.za/blog/2022-06-10-how-to-train-your-git-server.html)
- [sharing repos](https://www.worthe-it.co.za/blog/2023-06-02-leveling-up-your-git-server-sharing-repos.html).
-### Prerequisites
+#### Prerequisites
The following programs much be installed:
@@ -110,7 +112,7 @@ The following programs much be installed:
the OpenSSH daemon.
-### Building Shackle
+#### Building Shackle
Binary releases of Shackle can be downloaded from [Codeberg](https://codeberg.org/worthe-it/shackle-shell/releases/).
@@ -127,7 +129,7 @@ build from source.
cargo install shackle-shell
```
-### Creating the required directory structure
+#### Creating the required directory structure
Next, Shackle expects a specific directory structure. Specifically, personal git
repos will live in `~/git/your-username` and shared repos will live in
@@ -149,7 +151,7 @@ chown --recursive $USER:$GROUP ~/git/$GROUP
chmod --recursive u=rwX,g=rwXs,o= ~/git/$GROUP
```
-### Set Shackle as your default shell
+#### Set Shackle as your default shell
The next step is to set the default shell of your user to Shackle. This will
mean that if you login as the user, for example over ssh, then the default shell
@@ -159,7 +161,7 @@ will be Shackle.
sudo usermod --shell $HOME/.cargo/bin/shackle-shell $USER
```
-# Operating System Support
+## Operating System Support
Currently, Shackle Shell only supports running on Linux.
@@ -167,88 +169,22 @@ It will likely work on other Unix-like platforms, such as MacOS, but this is not
currently tested, and there are currently no plans to do so. I would not expect
it to work on Windows.
+## Releases
-# Development Guide
-
-## Development Environment Setup
-
-- Rust
- - This project is built using the Rust programming language, and its build
- tool Cargo. Information on how to install these tools is available on [the
- Rust website](https://www.rust-lang.org/learn/get-started).
-- C Compiler
- - This is used to built one of the dependencies, libgit2. This can be
- obtained from your operating system's package manager.
-- Docker
- - Some of the tests use Docker to create a simulated environment. This can be
- obtained from your operating system's package manager, or the [Docker
- website](https://www.docker.com/).
- - Docker must be installed, with the `docker` executable on the path.
- - Your user must have permission to use docker, including building and running
- Docker containers.
-- Git
- - Some of the tests use Git to test the end to end functionality of the
- shell. This can be obtained from your operating system's package manager, or
- the [Git website](https://git-scm.com/).
- - Git must be installed, with the `git` executable on the path.
-- SSH
- - Some of the tests use an SSH client to test the end to end functionality of
- the shell. I have tested this with OpenSSH, which can be obtained from your
- operating system's package manager, or the [Git website](https://git-scm.com/).
- - with the `ssh` executable on the path.
-
-If you're running Arch Linux, these are the steps you'll need to get your
-environment ready.
-
-```sh
-sudo pacman -S rustup docker git openssh gcc
-
-# Rust
-rustup default stable
+See [CHANGELOG.md](https://codeberg.org/worthe-it/shackle-shell/src/branch/main/CHANGELOG.md)
+for release notes.
-# Docker
-sudo usermod -a -G docker $USER
-sudo systemctl start docker.service
+Releases are also available on
+[Crates.io](https://crates.io/crates/shackle-shell) and
+[Codeberg](https://codeberg.org/worthe-it/shackle-shell/releases).
-# Note: you need to log out and in again for the new group to take effect
-```
+## Reporting issues
-## Running Tests
+Please report any issues on the project's [issue
+tracker](https://codeberg.org/worthe-it/shackle-shell/issues).
-All unit tests are run with Cargo.
-```sh
-cargo test
-```
-
-## Linting
-
-Clippy should be used for linting. This can be installed using Rustup.
-
-```sh
-rustup component add clippy
-```
-
-And it can be run via Cargo.
-
-```sh
-cargo clippy
-```
-
-## Building a Release Binary
-
-Release binaries should be built in release mode.
-
-```sh
-cargo build --release
-```
-
-After running this, the binary is available in `./target/release/shackle-shell`
-
-
-# Roadmap
-
-## Post-MVP
+## Roadmap
- [ ] project website
- [ ] functions correctly when the git path isn't created with correct
@@ -260,12 +196,18 @@ After running this, the binary is available in `./target/release/shackle-shell`
- [ ] pijul fetch and pijul push
- [ ] pijul support on other commands
+### Contributing
+
+See [CONTRIBUTING.md](https://codeberg.org/worthe-it/shackle-shell/src/branch/main/CONTRIBUTING.md)
+for instructions on setting up a development environment to make changes and
+submit contributions.
# Support
-If you get value from this project, consider supporting me on [Patreon](https://www.patreon.com/worthe_it). Support
-via Patreon helps to cover hosting, buying computer stuff, and will allow me to
-spend more time writing articles and open source software.
+If you get value from this project, consider supporting me on
+[Patreon](https://www.patreon.com/worthe_it). Support via Patreon helps to cover
+hosting, buying computer stuff, and will allow me to spend more time writing
+articles and open source software.
# License