2019-04-16 16:57:33 +02:00
|
|
|
# Hits-of-Code
|
|
|
|
|
2020-11-24 19:13:08 +01:00
|
|
|
[![Hits-of-Code](https://hitsofcode.com/github/vbrandl/hoc)](https://hitsofcode.com/github/vbrandl/hoc/view)
|
2019-05-01 22:13:06 +02:00
|
|
|
[![Drone build](https://drone.vbrandl.net/api/badges/vbrandl/hoc/status.svg)](https://drone.vbrandl.net/vbrandl/hoc)
|
2019-04-29 22:15:49 +02:00
|
|
|
[![Gitlab build](https://gitlab.com/vbrandl/hoc/badges/master/pipeline.svg)](https://gitlab.com/vbrandl/hoc/pipelines)
|
2019-05-04 15:46:36 +02:00
|
|
|
[![dependency status](https://deps.rs/repo/github/vbrandl/hoc/status.svg)](https://deps.rs/repo/github/vbrandl/hoc)
|
2019-04-18 01:46:08 +02:00
|
|
|
|
2019-04-16 20:00:03 +02:00
|
|
|
Small webservice, that returns a badge of the Hits-of-Code of a git repository, as described by [Yegor
|
2019-04-18 02:04:02 +02:00
|
|
|
Bugayenko](https://www.yegor256.com/2014/11/14/hits-of-code.html). It is implemented in
|
|
|
|
[Rust](https://www.rust-lang.org/), using the [actix-web](https://actix.rs/) web framework.
|
2019-04-16 16:57:33 +02:00
|
|
|
|
2019-05-01 13:42:43 +02:00
|
|
|
A live version of this webservice can be found on [hitsofcode.com](https://hitsofcode.com/).
|
2019-04-16 20:02:21 +02:00
|
|
|
|
2019-04-16 16:57:33 +02:00
|
|
|
## API
|
|
|
|
|
|
|
|
The API is as simple as
|
|
|
|
|
|
|
|
```
|
2019-04-16 20:00:03 +02:00
|
|
|
https://<host>/<service>/<user>/<repo>
|
2019-04-16 16:57:33 +02:00
|
|
|
```
|
|
|
|
|
2019-06-16 15:02:45 +02:00
|
|
|
where `<service>` is one of `gitub`, `gitlab` or `bitbucket`. The HoC data can also be received as JSON by appending
|
|
|
|
`/json` to the reuqest path:
|
2019-04-16 20:00:03 +02:00
|
|
|
|
2019-06-16 15:02:45 +02:00
|
|
|
```
|
|
|
|
https://<host>/<service>/<user>/<repo>/json
|
|
|
|
```
|
|
|
|
|
2020-11-24 19:13:08 +01:00
|
|
|
There is also an overview page available via `https://<host>/<service>/<user>/<repo>/view`
|
2019-04-16 16:57:33 +02:00
|
|
|
|
2020-05-15 14:03:17 +02:00
|
|
|
To delete a repository and the cache from the server, send a `POST` request to
|
|
|
|
`https://<host>/<service>/<user>/<repo>/delete`. On the overview page, there is a button to perform this operation. It
|
|
|
|
will respond with a redirect to the overview page so the cache is rebuilt directly.
|
|
|
|
|
2019-04-18 01:59:42 +02:00
|
|
|
## Building
|
|
|
|
|
|
|
|
The code can be built as a standalone binary, using `cargo` or as a Docker container. Run either
|
|
|
|
|
|
|
|
```
|
|
|
|
$ cargo build --release
|
|
|
|
```
|
|
|
|
|
|
|
|
or
|
|
|
|
|
|
|
|
```
|
|
|
|
$ docker build .
|
|
|
|
```
|
|
|
|
|
|
|
|
inside the repository.
|
|
|
|
|
2020-11-24 19:13:08 +01:00
|
|
|
I'm currently working on migrating to [nix](https://nixos.org/nix). To get a development shell, run `nix-shell`, to
|
|
|
|
build the package run `nix-build --attr package` and to build the Docker image, run `nix-build --attr dockerImage`.
|
2020-03-20 17:47:55 +01:00
|
|
|
|
2019-04-18 01:59:42 +02:00
|
|
|
|
|
|
|
## Running
|
|
|
|
|
2020-11-24 19:13:08 +01:00
|
|
|
Rename [`hoc.toml.example`](./hoc.toml.example) to `hoc.toml` or [`.env.example`](./.env.example) to `.env` and set the
|
|
|
|
correct value for `base_url`/`HOC_BASE_URL`. If you don't want to use a configuration or dotenv file, you can pass all
|
|
|
|
parameters directly via environment variables. For variable names see [`.env.example`](./.env.example).
|
2020-11-24 19:07:21 +01:00
|
|
|
|
|
|
|
To start a local instance of the service just run:
|
|
|
|
|
|
|
|
```
|
|
|
|
$ HOC_BASE_URL='http://0.0.0.0:8080' ./hoc
|
|
|
|
```
|
|
|
|
|
|
|
|
You can also use the Docker image:
|
2019-04-18 01:59:42 +02:00
|
|
|
|
|
|
|
```
|
2020-11-24 19:07:21 +01:00
|
|
|
$ docker run -p 8080:8080 --env HOC_BASE_URL='http://0.0.0.0:8080' -it --rm vbrandl/hits-of-code
|
2019-04-18 01:59:42 +02:00
|
|
|
```
|
|
|
|
|
2020-11-24 19:07:21 +01:00
|
|
|
When running the binary directly, you need a `git` binary in your `PATH`.
|
2019-05-01 13:42:43 +02:00
|
|
|
|
2019-04-18 01:59:42 +02:00
|
|
|
|
2019-04-16 20:37:13 +02:00
|
|
|
## License
|
|
|
|
|
|
|
|
`hoc` is licensed under the MIT License ([LICENSE](LICENSE) or http://opensource.org/licenses/MIT)
|