mCaptcha/docs/HACKING.md

176 lines
4.2 KiB
Markdown
Raw Permalink Normal View History

2021-04-11 08:38:14 +00:00
# Development Setup
2021-05-12 13:43:09 +00:00
## To quickly make changes:
We have a docker-compose config that you can use to quickly spin up dev
environment.
From the root of the repo, run:
```bash
$ docker-compose -d up
```
### Logs from docker:
- Logs from database and web server as they are generated:
2021-05-12 13:43:09 +00:00
```bash
$ docker-compose logs -f
```
- from just webserver:
2021-05-12 13:43:09 +00:00
```bash
2021-06-01 12:03:47 +00:00
$ docker-compose logs -f mcaptcha
2021-05-12 13:43:09 +00:00
```
## Setting up elaborate development environment
2021-04-11 08:38:14 +00:00
### Toolchain
You'll have to install before you can start writing code.
1. Install Rust:
Install Cargo(Rust toolchain) using [rustup](https://rustup.rs/) with:
```
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
```
2021-05-12 13:43:09 +00:00
2. Install Node `v14.16.0`:
2021-04-11 08:38:14 +00:00
Please refer to [official instructions](https://nodejs.org/en/download/)
3. Install yarn:
`npm install -g yarn`
For more details, refer to [official
instructions](https://yarnpkg.com/getting-started/install)
4. GNU Make:
If you are on Linux, it's probably already installed on your machine.
You can check it's existence by running:
```bash
$ make --version
```
If it's not available, you download it with your package manager or
refer to [official instructions](https://www.gnu.org/software/make/)
### External Dependencies:
mCaptcha currently implements support for the following database:
1. Postgres
2. mariadb(MySQL)
For development purposes, currently it is recommended to setup both
databases as tests will break without it. In future, mechanisms will be
implemented for working with select databases.
2021-04-11 08:38:14 +00:00
### Postgres database:
2021-04-11 08:38:14 +00:00
I use Postgres in Docker.
1. To install Docker, please refer to [official
instructions](https://docs.docker.com/engine/install/].
2. Create create database user:
```bash
$ docker create --name mcaptcha-postgres \
-e POSTGRES_PASSWORD=password \
-p 5432:5432 postgres
```
3. Start database container:
```bash
$ docker start mcaptcha-postgres
```
4. Set configurations:
```bash
cd mcaptcha # your copy of https://github.com/mCaptcha/mcaptcha
echo 'export POSTGRES_DATABASE_URL="postgres://postgres:password@localhost:5432/postgres"' >> .env
```
### mariadb database
I use mariadb also in Docker
1. To install Docker, please refer to [official
instructions](https://docs.docker.com/engine/install/].
2. Create create database user:
```bash
docker create \
-p 3306:3306 \
--name some-mariadb \
--env MARIADB_USER=maria \
--env MARIADB_PASSWORD=password \
--env MARIADB_ROOT_PASSWORD=password \
--env MARIADB_DATABASE=maria \
mariadb:latest
```
3. Start database container:
```bash
docker start mcaptcha-mariadb
2021-04-11 08:38:14 +00:00
```
4. Set configurations:
```bash
cd mcaptcha # your copy of https://github.com/mCaptcha/mcaptcha
echo 'export MARIA_DATABASE_URL="mysql://maria:password@localhost/maria"' >> .env
```
2021-04-11 08:38:14 +00:00
### Database migrations
2021-04-11 08:38:14 +00:00
This step is only required when migrations are updated. The server
binary has inbuilt migrations manager but that can only be used after
the server is compiled. Since we are trying to compile the server here,
we can't use that. However, this project ships with a utility to run migrations!
2021-04-11 08:38:14 +00:00
```bash
2021-06-01 12:03:47 +00:00
$ cd mcaptcha # your copy of https://github.com/mCaptcha/mcaptcha
make migrate
2021-04-11 08:38:14 +00:00
```
That's it, you are all set!
## Build commands:
### Compile:
```bash
2021-06-01 12:03:47 +00:00
$ cd mcaptcha # your copy of https://github.com/mCaptcha/mcaptcha
2021-04-11 08:38:14 +00:00
$ make
```
### Additional commands:
```bash
2021-06-01 12:03:47 +00:00
➜ mcaptcha git:(master) ✗ make help
default Run app in debug mode
clean Delete build artifacts
coverage Generate code coverage report in HTML format
2022-07-17 05:29:21 +00:00
dev-env Setup development environment
doc Generate documentation
docker Build Docker image
docker-publish Build and publish Docker image
frontend Build frontend
frontend-test Run frontend tests
lint Lint codebase
migrate Run database migrations
release Build app with release optimizations
test Run all available tests
xml-test-coverage Generate code coverage report in XML format
help Prints help for targets with comments
2021-04-11 08:38:14 +00:00
```