summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorNick Gerace <nickagerace@gmail.com>2022-03-30 01:06:52 -0400
committerNick Gerace <nickagerace@gmail.com>2022-03-30 01:36:38 -0400
commitfde1cd0c5f32e407cddbf677fb86d78a4e028d28 (patch)
tree1d22cf74e60598022ccd03047e6acdcfa78c237c /docs
parent52ccb1444e7aa675430ce4016685e0a60054a1d9 (diff)
downloadgfold-fde1cd0c5f32e407cddbf677fb86d78a4e028d28.zip
Enable multi-platform development
TLDR: remove barriers to multi-platform development, like Bash and Make. Moreover, remove the nightly fmt dependency and improve testing to catch potential corner cases on multiple platforms. Core: - Rename "Reports" to "LabeledReports" since "Reports" is not of implied type Vec<Report> Testing: - Add second half to the integration test: comparing found reports with expected reports - Essentially, we run the core gfold loop _again_, but only generate reports and skip displaying them to stdout CI: - Removed nightly fmt check and job - Moved fmt check to stable - Update bors toml to match changes Scripts: - Convert scripts from Bash scripts to independent crates (multi-platform friendly) - Add README to scripts directory - Ensure script crates do not have their Cargo lockfile tracked in Git Docs: - Adding DEVELOPING file to replace Makefile - Move THANKS and RELEASE files to new docs directory, along with DEVELOPING - Replace make commands in README and RELEASE files Misc: - Remove Rust nightly dependency since it was solely for imports granulaity for rustfmt - This repository is once again only reliant on stable Rust toolchains - Remove "rust-version" from Cargo toml since it was unused - Remove Makefile entirely in favor of DEVELOPING file (multi-platform friendly) - Update markdown code block languages as "shell" instead of "bash" to be multi-platform friendly Signed-off-by: Nick Gerace <nickagerace@gmail.com>
Diffstat (limited to 'docs')
-rw-r--r--docs/DEVELOPING.md48
-rw-r--r--docs/RELEASE.md65
-rw-r--r--docs/THANKS.md8
3 files changed, 121 insertions, 0 deletions
diff --git a/docs/DEVELOPING.md b/docs/DEVELOPING.md
new file mode 100644
index 0000000..d990684
--- /dev/null
+++ b/docs/DEVELOPING.md
@@ -0,0 +1,48 @@
+# Developing
+
+This document contains information related to development.
+
+## Preparing Changes
+
+First, update dependencies and tidy your changes.
+
+```shell
+cargo fmt
+cargo update
+cargo fix --edition-idioms --allow-dirty --allow-staged
+cargo clippy --all-features --all-targets
+```
+
+Now, ensure that lints, tests, and builds succeed.
+
+```shell
+cargo fmt --all -- --check
+cargo clippy -- -D warnings
+cargo doc
+cargo test
+cargo build
+```
+
+> Alternatively, you can replace `cargo test` above with [cargo nextest](https://github.com/nextest-rs/nextest).
+>
+> ```shell
+> cargo nextest run
+> ```
+
+## Performance Checks
+
+Navigate to the [README in the `scripts` directory](../scripts/README.md) for more information on
+how to run performance checks.
+
+## Optional Checks
+
+The following checks are optional and should be run occasionally.
+
+
+```shell
+# This command requires a nightly toolchain to be installed.
+cargo +nightly udeps
+cargo bloat --release
+cargo bloat --release --crates
+cargo audit
+``` \ No newline at end of file
diff --git a/docs/RELEASE.md b/docs/RELEASE.md
new file mode 100644
index 0000000..3c0f43e
--- /dev/null
+++ b/docs/RELEASE.md
@@ -0,0 +1,65 @@
+# Release
+
+This document contains all information related to release.
+
+## Checklist
+
+This checklist details the `gfold` release process.
+Steps should be executed in sequential order.
+
+- [ ] Checkout and rebase `main` to its latest commit, then checkout a new branch
+- [ ] Change the `version` field in `Cargo.toml` to the new tag
+- [ ] **Full Releases Only**: change the version in `CHANGELOG.md` and uncomment the following line: `<!--The latest version contains all changes.-->`
+- [ ] Verify that everything looks/works as expected:
+
+```shell
+cargo fmt --all -- --check
+cargo clippy -- -D warnings
+cargo test
+cargo doc
+cargo build
+```
+
+- [ ] Create and _do not merge_ a commit with the following message: `Update to <tag>`
+- [ ] Test and verify the publishing workflow:
+
+```bash
+cargo publish --dry-run
+```
+
+- [ ] Merge the preparation commit into `main`
+- [ ] Checkout and rebase `main` to its latest commit, which should be the aforementioned commit
+- [ ] Tag and push the tag:
+
+```shell
+git tag <tag>
+git push --tags origin main
+```
+
+- [ ] Publish the crate:
+
+```shell
+cargo publish
+```
+
+- [ ] Verify that the [crate](https://crates.io/crates/gfold) on `crates.io` looks correct
+- [ ] Download and install the crate:
+
+```shell
+# Full releases
+cargo install --locked gfold
+
+# Release candidates (RCs)
+cargo install --locked --version <tag> gfold
+```
+
+- [ ] Verify that the [GitHub release](https://github.com/nickgerace/gfold/releases) on the repository's releases page looks correct
+- [ ] **Full Releases Only**: Update the formula for the [Hombrew tap](https://github.com/nickgerace/homebrew-nickgerace)
+
+## Versioning Scheme
+
+This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+Generally, the versioning scheme looks like the following formats where `X` is an unsigned integer:
+
+- **Release candidates (RCs):** `X.X.X-rc.X`
+- **Full releases:** `X.X.X` \ No newline at end of file
diff --git a/docs/THANKS.md b/docs/THANKS.md
new file mode 100644
index 0000000..cf1a526
--- /dev/null
+++ b/docs/THANKS.md
@@ -0,0 +1,8 @@
+# Thanks
+
+- [@AcksID](https://github.com/AckslD/nvim-gfold.lua) for creating and maintaining [nvim-gfold.lua](https://github.com/AckslD/nvim-gfold.lua), a `neovim` plugin for `gfold`
+- [@jrcichra](https://github.com/jrcichra) for adding multi-OS support to the original, early-stage CI pipeline
+- [@orhun](https://github.com/orhun) for adding `gfold` to the [Arch Linux community repository](https://archlinux.org/packages/community/x86_64/gfold/) and for maintaining [all AUR packages](https://github.com/orhun/PKGBUILDs)
+- [@shanesveller](https://github.com/shanesveller) for adding `gfold` to [nixpkgs](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/version-management/git-and-tools/gfold/default.nix)
+- [@wezm](https://github.com/wezm) for featuring `gfold` in the ["One Hundred Rust Binaries"](https://www.wezm.net/v2/posts/2020/100-rust-binaries/page2/) series
+- [@yaahc](https://github.com/yaahc) for mentoring during an early refactor