mirror of
https://github.com/cheat/cheat.git
synced 2024-12-22 04:35:06 +01:00
docs: create HACKING.md
Create a `HACKING.md` file for onboarding new developers to `cheat`.
This commit is contained in:
parent
a297d1619c
commit
7fed1f63a6
@ -19,7 +19,8 @@ tracker][issues] to discuss with the maintainer whether it would be considered
|
|||||||
for merging.
|
for merging.
|
||||||
|
|
||||||
`cheat` is mostly mature and feature-complete, but may still have some room for
|
`cheat` is mostly mature and feature-complete, but may still have some room for
|
||||||
new features.
|
new features. See [HACKING.md][hacking] for a quick-start guide to `cheat`
|
||||||
|
development.
|
||||||
|
|
||||||
#### Add documentation ####
|
#### Add documentation ####
|
||||||
Did you encounter features, bugs, edge-cases, use-cases, or environment
|
Did you encounter features, bugs, edge-cases, use-cases, or environment
|
||||||
@ -41,6 +42,7 @@ Please open all pull-requests against the `develop` branch.
|
|||||||
|
|
||||||
[cheat]: https://github.com/cheat/cheat
|
[cheat]: https://github.com/cheat/cheat
|
||||||
[cheatsheets]: https://github.com/cheat/cheatsheets
|
[cheatsheets]: https://github.com/cheat/cheatsheets
|
||||||
|
[hacking]: HACKING.md
|
||||||
[issues]: https://github.com/cheat/cheat/issues
|
[issues]: https://github.com/cheat/cheat/issues
|
||||||
[pr]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork
|
[pr]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork
|
||||||
[wiki]: https://github.com/cheat/cheat/wiki
|
[wiki]: https://github.com/cheat/cheat/wiki
|
||||||
|
57
HACKING.md
Normal file
57
HACKING.md
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
Hacking
|
||||||
|
=======
|
||||||
|
The following is a quickstart guide for developing `cheat`.
|
||||||
|
|
||||||
|
## 1. Install system dependencies
|
||||||
|
Before you begin, you must install a handful of system dependencies. The
|
||||||
|
following are required, and must be available on your `PATH`:
|
||||||
|
|
||||||
|
- `git`
|
||||||
|
- `go` (>= 1.17 is recommended)
|
||||||
|
- `make`
|
||||||
|
|
||||||
|
The following dependencies are optional:
|
||||||
|
- `docker`
|
||||||
|
- `pandoc` (necessary to generate a `man` page)
|
||||||
|
|
||||||
|
## 2. Install utility applications
|
||||||
|
Run `make setup` to install `scc` and `revive`, which are used by various
|
||||||
|
`make` targets.
|
||||||
|
|
||||||
|
## 3. Development workflow
|
||||||
|
After your environment has been configured, your development workflow will
|
||||||
|
resemble the following:
|
||||||
|
|
||||||
|
1. Make changes to the `cheat` source code.
|
||||||
|
2. Run `make test` to run unit-tests.
|
||||||
|
3. Fix compiler errors and failing tests as necessary.
|
||||||
|
4. Run `make`. A `cheat` executable will be written to the `dist` directory.
|
||||||
|
5. Use the new executable by running `dist/cheat <command>`.
|
||||||
|
6. Run `make install` to install `cheat` to your `PATH`.
|
||||||
|
7. Run `make build-release` to build cross-platform binaries in `dist`.
|
||||||
|
8. Run `make clean` to clean the `dist` directory when desired.
|
||||||
|
|
||||||
|
You may run `make help` to see a list of available `make` commands.
|
||||||
|
|
||||||
|
### Developing with docker
|
||||||
|
It may be useful to test your changes within a pristine environment. An
|
||||||
|
Alpine-based docker container has been provided for that purpose.
|
||||||
|
|
||||||
|
If you would like to build the docker container, run:
|
||||||
|
```sh
|
||||||
|
make docker-setup
|
||||||
|
```
|
||||||
|
|
||||||
|
To shell into the container, run:
|
||||||
|
```sh
|
||||||
|
make docker-sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The `cheat` source code will be mounted at `/app` within the container.
|
||||||
|
|
||||||
|
If you would like to destroy this container, you may run:
|
||||||
|
```sh
|
||||||
|
make distclean
|
||||||
|
```
|
||||||
|
|
||||||
|
[go]: https://go.dev/
|
Loading…
Reference in New Issue
Block a user