diff options
author | Nick Gerace <nickagerace@gmail.com> | 2022-03-30 01:06:52 -0400 |
---|---|---|
committer | Nick Gerace <nickagerace@gmail.com> | 2022-03-30 01:36:38 -0400 |
commit | fde1cd0c5f32e407cddbf677fb86d78a4e028d28 (patch) | |
tree | 1d22cf74e60598022ccd03047e6acdcfa78c237c /docs | |
parent | 52ccb1444e7aa675430ce4016685e0a60054a1d9 (diff) | |
download | gfold-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.md | 48 | ||||
-rw-r--r-- | docs/RELEASE.md | 65 | ||||
-rw-r--r-- | docs/THANKS.md | 8 |
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 |