summaryrefslogtreecommitdiff
path: root/docs/DEVELOPING.md
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/DEVELOPING.md
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/DEVELOPING.md')
-rw-r--r--docs/DEVELOPING.md48
1 files changed, 48 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