aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md67
-rw-r--r--CONTRIBUTING.md72
-rw-r--r--README.md184
3 files changed, 313 insertions, 10 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..03301f9
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,67 @@
+# v0.1
+
+The change log was generated from the git commit titles and grouped by type of
+commit or task completed with the commit. They are not in any particular order.
+If you'd like to see the contents of the commits please take a look at the git
+log! The major highlights of the first release include:
+
+- Initial release of `ds`
+- Initial release of `ticket`
+- Initial release of `hooked`
+
+Have fun taking the initial release out for a spin!
+
+## Added Features
+
+Make hooked and dev-suite git hooks cross platform
+Add the ability to install dev-suite to ds tool
+Add the ability to assign users to tickets
+Switch from termion to crossterm for tui
+Upgrade tui to allow commenting from it
+Add the ability to add comments to tickets
+Extend ds with config subcommand
+Create configamajig to handle dev-suite configs
+Upgrade ticket format from V0 to V1 to use UUIDs
+Add a tui for ticket
+Add logging output to ticket
+Add logging output to hooked
+Create dev-suite tool to orchestrate tooling
+Add 'hooked init' test
+Add hooked and empty inited hooks from the tool
+Add ticket functionality to dev-suite (#3)
+
+## Bug Fixes
+
+Change ticket tui to fix thread panic on Windows
+Fix init logic for `ds init`
+
+## Chores and refactors
+
+Add CHANGELOG and CONTRIBUTING and update README
+Cleanup ds install and format hooked properly
+Update reqwest and create a release profile
+Make the toolchain use the latest stable rustc
+Add licenses for dependencies to the project
+Add a repo config and set self as maintainer
+Refactor ticket to use common methods
+Change pre-commit hook so that it works in fish
+Upgrade Rust from 1.39 to 1.40
+Add README and CODE_OF_CONDUCT
+License all code under GPL-3.0
+Make the pre-commit script pedantic and fix errors
+Add commit message linting hook to the repo
+Remove GitHub actions now that git hooks exist
+Fix formatting and add checks to pre-commit hook
+Setup CI for dev-suite (#1)
+Initialize the dev-suite repo
+Change ticket/Cargo.toml to use non * versions
+Bump anyhow from 1.0.19 to 1.0.22
+Move find_root function into the new shared crate
+Setup the website skeleton with the kube theme
+
+## Issues
+
+Create ticket 'Create a tui for ticket'
+Close 'Create a tui for ticket'
+Create a ticket for a find_root function
+Add tickets to the repo
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..b57aa2a
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,72 @@
+# Contributing
+
+## Thanks!
+
+First of all thank you! You being here means you want to help in some way and
+that's greatly appreciated!
+
+## Mailing List
+
+Part of dogfooding dev-suite's tools means figuring out how to make contributing
+easy. It's not expected to be easy for a while, but that's part of the fun;
+solving really hard problems. However, it's not impossible and working towards
+this is the end goal of this project. There are a few ways you can contribute.
+
+Many of them involve interacting with the mailing list:
+- Mailing list email address: dev-suite@googlegroups.com
+- [Google Group][google]
+
+## Commit Messages
+
+Before jumping into all of the below ways you can contribute please note that
+any commits being submitted must be in the form laid out in
+[this blog post][blog_post]. In summary all commits must have the following
+form:
+
+1. Separate subject from body with a blank line
+2. Limit the subject line to 50 characters
+3. Capitalize the subject line
+4. Do not end the subject line with a period
+5. Use the imperative mood in the subject line
+6. Wrap the body at 72 characters
+7. Use the body to explain what and why vs. how
+
+Commits not following this will be rejected though number seven as a requirement
+is a bit more lax.
+
+## Feature Requests
+
+There's a lot of things dev-suite can be and while there already some ideas for
+future work it's nice to hear what people want out of their tools. Feature
+requests will not be considered issues until they've been actively accepted as
+something to be worked on. With that in mind please feel free to send in your
+requests to the [wish list topic][wish_list] in the mailing list.
+
+## Filing Issues
+
+Bugs are inevitable feature of all software. If you find a bug please file an
+issue with ticket in your own fork and send an email to
+[the issues topic][issues] in the mailing list with where it can be pulled from
+and it will get integrated it into the repo. Comments added to issues should be
+done the same way as well. If it's a feature request follow the above to send
+that in. In the future finding a way to automate this part so that you can just
+send an email and have it merge the issue or comment automatically would be
+great.
+
+## Adding code or sending in bug fixes
+
+Much like filing issues send an email to the mailing list with [PR] and what
+the PR is for in the subject and a link to a publicly accessible repo where the
+commits can be pulled from for review. Discussion will happen on that thread
+until changes are accepted. Please follow the Commit Messages guidelines when
+doing this. The history is not going to be cluttered with those that don't
+follow the rules above. Having a nice git log to work with is absolutely
+critical. Please also do not send patches by email. Sending patches screws up
+the history and email clients do all kinds of stuff with newlines and white
+space. git was designed to work in a distributed manner. Just make the repo
+public and your changes should be able to be pulled in to the main repo!
+
+[blog_post]: https://chris.beams.io/posts/git-commit/
+[google]: https://groups.google.com/forum/#!forum/dev-sute
+[wish_list]: https://groups.google.com/d/topic/dev-suite/H62oYcV-mE4/discussion
+[issues]: https://groups.google.com/d/msg/dev-suite/IJdllJGoqSA/q6-VVmE9BAAJ
diff --git a/README.md b/README.md
index b71ac62..47754d1 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,188 @@
# dev-suite
-dev-suite is a set of tools designed to redistribute distributed work
+dev-suite is a set of tools designed to redistribute distributed work. Our code
+has been locked into centralized services like GitHub and Gitlab. They provide
+nice things like an issue tracker and PRs as an integrated service. If we can
+put that into the git repo itself we'd be free to host our code wherever and
+have our code and it's project management share a common history rather than
+being locked into a service and divorcing the context of the important things
+that shape what code gets written.
-## Current Status
-Highly experimental and not for general use.
+Currently dev-suite has two tools:
+- Hooked, a git hooks manager to allow cross platform git hooks that can help
+ enable things like trunk based development and allow CI in a local
+ environment
+- Ticket, an on disk ticket manager and viewer to allow issues to live inside of
+ the repo and travel with it
+
+## Installation
+
+### Dependencies
+
+#### OSX
+- git
+
+#### Linux
+- git
+
+#### Windows
+- git for Windows installed to the default path for hooked to work
+
+#### Optional deps
+- Ruby
+- Python
+- Bash (included with git for Windows)
+
+Make sure you have these on your path somewhere for the git hooks to work
+properly in hooked
+
+### Recommended install method
+1. Grab a binary for the ds tool for your platform and place it somewhere on
+ your PATH
+ - [Windows](https://dev-suite-spaces.nyc3.digitaloceanspaces.com/windows/ds.exe)
+ - [Linux](https://dev-suite-spaces.nyc3.digitaloceanspaces.com/linux/ds)
+ - [OSX](https://dev-suite-spaces.nyc3.digitaloceanspaces.com/osx/ds)
+2. Run `ds install` which will install `ticket` and `hooked` to:
+ - Windows: `C:\\Users\YourUser\AppData\Local\dev-suite`
+ - Linux: `$XDG_BIN_HOME` or `$XDG_DATA_HOME/../bin` or `$HOME/.local/bin`
+ - OSX: `/usr/local/bin`
+ On Windows `ds install` will add the install path to your PATH with the `setx`
+ command. You might need to log out or restart your computer to see the
+ desired effect of not needing to type the path to the executable to run it.
+3. Run `ds config self init` to initialize a user config on the system. Failing
+ to do so will likely cause unexpected errors.
+
+### Manually compile
+In the event the above doesn't work for some reason or because of a bug (please
+file an issue and see CONTRIBUTING.md on how to do so) you can install these
+tools manually.
+
+1. Make sure you have the stable Rust compiler and Cargo installed we recommend
+ doing so via [rustup](https://rustup.rs/)
+2. Clone this repo
+3. `cd` into the repo
+4. `cargo install --path .`
+5. `cargo install --path hooked`
+6. `cargo install --path ticket`
+7. Run `ds config self init` to initialize a user config on the system. Failing
+ to do so will likely cause unexpected errors.
+
+## Usage
+
+### Initializing a repo to use dev-suite
+While each tool has it's own init command we recommend running `ds init` inside
+of a repo that you want to use these tools. You can choose the ones that you
+want to use from the command prompt and it will also initialize the repo with
+it's own repo config so this is probably the best way to do so.
+
+### ds
+
+`ds` is the main orchestration tool for setting things up with dev-suite. As
+this is not the main driver beyond setup it only has a few commands:
+
+```bash
+# Initialize a repo to use dev-suite and it's tools
+ds init
+
+# Install dev-suite's tools onto your computer
+ds install
+
+# Config commands for the user and repo
+
+## Create a dev-suite repo config in a repo
+ds config repo init
+
+## Add yourself as a maintainer to the repo config
+ds config repo add me
+
+## Pretty print the repo config to the terminal
+ds config repo show
+
+## Create a dev-suite user config for the system
+ds config user init "Display Name"
+
+## Pretty print the user config to the terminal
+ds config user show
+```
+
+## Hooked
+`hooked` is a dev-suite tool used to create git hooks for your repo to travel
+with it and to link them to `.git/hooks` on a fresh clone of it.
+
+```bash
+# Initialize a repo to use hooked if it was not initialized with it when using
+# `ds init`
+
+## Initialize the repo to use bash for git hooks
+hooked init bash
+
+## Initialize the repo to use ruby for git hooks
+hooked init ruby
+
+## Initialize the repo to use python for git hooks
+hooked init python
+
+# Link pre-existing dev-suite git hooks
+hooked link
+```
+
+## Ticket
+
+`ticket` is a dev-suite tool used to create, update, view, and manage
+tickets for your code base.
+
+```bash
+# Initialize a repo to use ticket if it was not initialized with it when using
+# `ds init`
+ticket init
+
+# Open up a new ticket
+ticket new
+
+# Close a ticket
+ticket close <TICKET-UUID>
+
+# Comment on a ticket
+ticket comment <TICKET-UUID> <MESSAGE>
+
+# Show a ticket on the commandline
+ticket show <TICKET-UUID>
+
+# Assign a ticket to yourself
+ticket assign <TICKET-UUID> to me
+
+# Assign a ticket to someone else
+ticket assign <TICKET-UUID> to them <USER-UUID> <NAME>
+
+# Migrate old versions of tickets to the newer versions this does nothing for now
+# unless you checkout the codebase from a pre v0.1 release
+ticket migrate
+
+# Open up the tui to look at tickets and comment on them
+ticket
+
+```
+
+## Contributing
+See CONTRIBUTING.md for more details
+
+## Changelog
+See CHANGELOG.md for more details
## Code of Conduct
The Code of Conduct is strictly enforced. See CODE_OF_CONDUCT.md for more
details.
-## PRs and Issues
-GitHub is a mirrored repo and all PRs and Issues will be closed. The point of
-these tools is to not depend on these things. This is merely to provide a public
-way to clone the source code. Currently this is mostly a private project. If you
-want to add issues or send a PR you can email me at `self@mgattozzi.dev`, but
-I doubt I will respond or accept changes currently
+## Opening PRs and Issues on public mirrors
+GitHub, Gitlab, and Bitbucket are mirrored repos and all PRs and Issues will be
+closed. The point of dev-suite is to not depend on the value add of these
+services. These mirror exist only to provide a public way to clone the source
+code.
## Blog Posts
- [Redistributing Distributed Work](https://blog.mgattozzi.dev/redistributing-distributed-work/)
## License
All code and contributions are licensed under the GNU Public License v3.0
-See LICENSE.md for more details.
+See LICENSE.md for more details. While this code does use the GPL we don't
+condone the actions of Richard Stallman or the FSF in it's protection of him.