diff options
Diffstat (limited to 'readme.md')
-rw-r--r-- | readme.md | 102 |
1 files changed, 65 insertions, 37 deletions
@@ -1,23 +1,27 @@ # Table of Contents -1. [Getting Started](#org9c3903e) - 1. [Usage](#org6fa9d8a) - 2. [Installation](#org10b2c96) - 1. [Prerequisites](#orgd426ed1) - 2. [Building Shackle](#orgb7eee70) - 3. [Creating the required directory structure](#orgf8fd81a) - 4. [Set Shackle as your default shell](#org58e1057) -2. [Operating System Support](#org8418be0) -3. [Development Guide](#org8b93b3d) - 1. [Development Environment Setup](#org6250a5d) - 2. [Running Tests](#org7f14941) - 3. [Linting](#orgc006671) - 4. [Building a Release Binary](#orgcd5123a) -4. [Roadmap / Issue Tracker TODO list](#orgba8330a) - 1. [MVP](#org565bb14) - 2. [Post-MVP](#org50cfb78) -5. [License](#org013cf1e) +1. [Getting Started](#orgd504466) + 1. [Usage](#orgaa56d06) + 2. [Installation](#org26cfe7c) + 1. [Background](#orgcc164e3) + 2. [Prerequisites](#org0cfd05b) + 3. [Building Shackle](#org44ca1cf) + 4. [Creating the required directory structure](#orgc188534) + 5. [Set Shackle as your default shell](#orge6ddfb3) +2. [Operating System Support](#orgc028af6) +3. [Development Guide](#org6f989dd) + 1. [Development Environment Setup](#orgf0cf08f) + 2. [Running Tests](#org91f4451) + 3. [Linting](#org71e8518) + 4. [Building a Release Binary](#org8fb9e6c) +4. [Roadmap / Issue Tracker TODO list](#org4ee647c) + 1. [MVP](#orge1019db) + 2. [Post-MVP](#org41cb56d) +5. [Support](#orgd5588f5) +6. [License](#org36ecb42) + +<https://img.shields.io/crates/v/shackle-shell> A shell for restricting access on a version control server. @@ -37,12 +41,12 @@ differences: - (coming soon!) Support for other other version control systems. -<a id="org9c3903e"></a> +<a id="orgd504466"></a> # Getting Started -<a id="org6fa9d8a"></a> +<a id="orgaa56d06"></a> ## Usage @@ -101,15 +105,28 @@ all of the options, and is a great way to learn what all the commands do. -h, --help Print help -<a id="org10b2c96"></a> +<a id="org26cfe7c"></a> ## Installation -<a id="orgd426ed1"></a> +<a id="orgcc164e3"></a> + +### 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: + +- [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). + + +<a id="org0cfd05b"></a> ### Prerequisites +The following programs much be installed: + - Git - This is used for git operations which are passed through for the operation of `git push` and `git fetch`. @@ -121,12 +138,14 @@ all of the options, and is a great way to learn what all the commands do. the OpenSSH daemon. -<a id="orgb7eee70"></a> +<a id="org44ca1cf"></a> ### Building Shackle -There is not yet a binary release of Shackle, so you need to build it yourself -from source. The easiest way to do this is using `cargo install`. +Binary releases of Shackle can be downloaded from [Codeberg](https://codeberg.org/worthe-it/shackle-shell/releases/). + +You can also build it yourself from source. The easiest way to do this is using +`cargo install`. This requires a the Rust toolchain and a C compiler. See the Development Environment Setup section below for more information on environment setup to @@ -137,7 +156,7 @@ build from source. cargo install shackle-shell -<a id="orgf8fd81a"></a> +<a id="orgc188534"></a> ### Creating the required directory structure @@ -160,7 +179,7 @@ users have a `~/git` symlink in their home directory which actually points at chmod --recursive u=rwX,g=rwXs,o= ~/git/$GROUP -<a id="org58e1057"></a> +<a id="orge6ddfb3"></a> ### Set Shackle as your default shell @@ -171,7 +190,7 @@ will be Shackle. sudo usermod --shell $HOME/.cargo/bin/shackle-shell $USER -<a id="org8418be0"></a> +<a id="orgc028af6"></a> # Operating System Support @@ -182,12 +201,12 @@ currently tested, and there are currently no plans to do so. I would not expect it to work on Windows. -<a id="org8b93b3d"></a> +<a id="org6f989dd"></a> # Development Guide -<a id="org6250a5d"></a> +<a id="orgf0cf08f"></a> ## Development Environment Setup @@ -231,7 +250,7 @@ environment ready. # Note: you need to log out and in again for the new group to take effect -<a id="org7f14941"></a> +<a id="org91f4451"></a> ## Running Tests @@ -240,7 +259,7 @@ All unit tests are run with Cargo. cargo test -<a id="orgc006671"></a> +<a id="org71e8518"></a> ## Linting @@ -253,7 +272,7 @@ And it can be run via Cargo. cargo clippy -<a id="orgcd5123a"></a> +<a id="org8fb9e6c"></a> ## Building a Release Binary @@ -264,12 +283,12 @@ Release binaries should be built in release mode. After running this, the binary is available in `./target/release/shackle-shell` -<a id="orgba8330a"></a> +<a id="org4ee647c"></a> # Roadmap / Issue Tracker TODO list -<a id="org565bb14"></a> +<a id="orge1019db"></a> ## MVP @@ -303,7 +322,7 @@ After running this, the binary is available in `./target/release/shackle-shell` - [X] help docs on all the commands -<a id="org50cfb78"></a> +<a id="org41cb56d"></a> ## Post-MVP @@ -312,7 +331,7 @@ After running this, the binary is available in `./target/release/shackle-shell` - [X] clean up crates.io metadata - [X] crates.io friendly readme: needs to be markdown - [X] rename to something that isn't taken on crates.io (shackle-shell) -- [ ] publish to crates.io +- [X] publish to crates.io - [ ] project website - [ ] functions correctly when the git path isn't created with correct permissions yet @@ -324,7 +343,16 @@ After running this, the binary is available in `./target/release/shackle-shell` - [ ] pijul support on other commands -<a id="org013cf1e"></a> +<a id="orgd5588f5"></a> + +# 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. + + +<a id="org36ecb42"></a> # License |