Compare commits

...

131 Commits

Author SHA1 Message Date
c1a1af0109 Bump version number
All checks were successful
continuous-integration/drone/push Build is passing
2020-04-04 13:48:04 +02:00
2c0094670b Bump dependencies 2020-04-04 13:47:37 +02:00
58fdc32627 Merge pull request #121 from vbrandl/dependabot/cargo/git2-0.13.1
Bump git2 from 0.13.0 to 0.13.1
2020-04-04 13:45:59 +02:00
cbeca19467 Update libgit2-sys 2020-04-04 13:39:17 +02:00
4cc8bd4385 Merge pull request #119 from vbrandl/dependabot/cargo/reqwest-0.10.4
Some checks failed
continuous-integration/drone/push Build is failing
Bump reqwest from 0.10.3 to 0.10.4
2020-04-04 13:23:59 +02:00
fac1efeb7d Bump reqwest from 0.10.3 to 0.10.4
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.10.3 to 0.10.4.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.10.3...v0.10.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-04 11:22:37 +00:00
1abc2d6333 Merge pull request #120 from vbrandl/dependabot/cargo/serde_json-1.0.50
Bump serde_json from 1.0.48 to 1.0.50
2020-04-04 13:21:22 +02:00
a69c523e3c Bump git2 from 0.13.0 to 0.13.1
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.13.0 to 0.13.1.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.13.0...0.13.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-04-02 04:18:28 +00:00
766c67f723 Bump serde_json from 1.0.48 to 1.0.50
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.48 to 1.0.50.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.48...v1.0.50)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-30 04:16:59 +00:00
2f70e42f9a Add git and cacerts to docker image 2020-03-22 20:54:33 +01:00
763910b515 Bump version number 2020-03-22 20:07:20 +01:00
dca32e4317 Set proper working directory 2020-03-22 20:05:06 +01:00
c301978f0b Cache nix store for CI actions 2020-03-22 19:47:09 +01:00
97fcb5a420 Use crate version for docker image 2020-03-22 19:44:05 +01:00
724c49d056 Bump version number 2020-03-22 19:43:51 +01:00
7b5d225701 Only build the binary 2020-03-22 18:33:48 +01:00
90fc0ee584 Add nix action 2020-03-22 18:22:16 +01:00
978321e6ef Bump version number 2020-03-22 18:13:29 +01:00
7e5adbee24 Update crate dependencies 2020-03-22 18:12:50 +01:00
803f95cde8 Merge pull request #112 from vbrandl/dependabot/cargo/reqwest-0.10.3
Bump reqwest from 0.10.1 to 0.10.3
2020-03-22 17:40:14 +01:00
31fe058879 Merge pull request #116 from vbrandl/dependabot/cargo/git2-0.13.0
Bump git2 from 0.11.0 to 0.13.0
2020-03-22 17:39:51 +01:00
421c1a4164 Bump reqwest from 0.10.1 to 0.10.3
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.10.1 to 0.10.3.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.10.1...v0.10.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 16:39:47 +00:00
06fa568225 Bump git2 from 0.11.0 to 0.13.0
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.11.0 to 0.13.0.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/git2-curl-0.11.0...git2-curl-0.13.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 16:39:06 +00:00
520ac2442f Merge pull request #117 from vbrandl/dependabot/cargo/structopt-0.3.12
Bump structopt from 0.3.9 to 0.3.12
2020-03-22 17:38:42 +01:00
61c4b18bf7 Merge pull request #118 from vbrandl/dependabot/cargo/serde-1.0.105
Bump serde from 1.0.104 to 1.0.105
2020-03-22 17:38:17 +01:00
a3ccfdc4a3 Bump serde from 1.0.104 to 1.0.105
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.104 to 1.0.105.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.104...v1.0.105)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 16:38:06 +00:00
70ce0f71e2 Bump structopt from 0.3.9 to 0.3.12
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.9 to 0.3.12.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.9...v0.3.12)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-22 16:38:05 +00:00
ce6150c48b Merge pull request #115 from vbrandl/dependabot/cargo/log4rs-0.11.0
Bump log4rs from 0.10.0 to 0.11.0
2020-03-22 17:37:28 +01:00
95b60f3753 Merge pull request #114 from vbrandl/dependabot/cargo/vergen-3.1.0
Bump vergen from 3.0.4 to 3.1.0
2020-03-22 17:37:01 +01:00
ec9f7a3635 Merge pull request #109 from vbrandl/dependabot/cargo/serde_json-1.0.48
Bump serde_json from 1.0.47 to 1.0.48
2020-03-22 17:36:35 +01:00
9fef178a27 Apply cargo fmt 2020-03-21 13:02:53 +01:00
7af58de9fa Mention nix build in readme 2020-03-20 17:47:55 +01:00
6c414bf07d Build Docker image using nix 2020-03-20 17:47:41 +01:00
d39a81720a Add shell expression 2020-03-20 17:47:18 +01:00
9ed5a5b257 Remove unused nix expressions 2020-03-20 17:46:54 +01:00
f3c138b7d4 Add nix expression to build the project 2020-03-20 17:08:00 +01:00
51b8519fc2 Update sources 2020-03-20 17:07:44 +01:00
b1bce024de add 2020-03-18 18:14:32 +01:00
89a5e52857 Delete cargo.nix 2020-03-18 07:23:34 +01:00
da9f9263d1 Bump log4rs from 0.10.0 to 0.11.0
Bumps [log4rs](https://github.com/estk/log4rs) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/estk/log4rs/releases)
- [Changelog](https://github.com/estk/log4rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/estk/log4rs/compare/v0.10.0...v0.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-12 04:17:45 +00:00
62accd6e43 Bump vergen from 3.0.4 to 3.1.0
Bumps [vergen](https://github.com/rustyhorde/vergen) from 3.0.4 to 3.1.0.
- [Release notes](https://github.com/rustyhorde/vergen/releases)
- [Commits](https://github.com/rustyhorde/vergen/commits/v3.1.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-03-11 04:19:00 +00:00
210a1f4592 Commit nix stuff 2020-02-15 20:26:30 +01:00
3708768f34 Add niv expressions 2020-02-14 15:54:04 +01:00
94265ba39f Add build scripts for binary and docker image 2020-02-14 15:53:53 +01:00
7e3ca9c620 Generate working nix expression to build the nix package 2020-02-14 14:07:26 +01:00
a3c978e0fc Ignore nix output directory 2020-02-14 14:06:28 +01:00
67db10460f Bump serde_json from 1.0.47 to 1.0.48
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.47 to 1.0.48.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.47...v1.0.48)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-14 04:18:31 +00:00
615f71bfd7 Add nix build expression and crate hashes 2020-02-13 00:15:41 +01:00
1010d5cf0d Bump version number 2020-02-12 21:02:13 +01:00
6896a22409 Handle non-existent master branch 2020-02-12 20:56:47 +01:00
3c2f06ebae Merge pull request #89 from vbrandl/dependabot/cargo/git2-0.11.0
Bump git2 from 0.9.1 to 0.11.0
2020-02-12 20:28:01 +01:00
3c945f5762 Bump git2 from 0.9.1 to 0.11.0
Bumps [git2](https://github.com/rust-lang/git2-rs) from 0.9.1 to 0.11.0.
- [Release notes](https://github.com/rust-lang/git2-rs/releases)
- [Commits](https://github.com/rust-lang/git2-rs/compare/libgit2-sys-0.9.1...git2-curl-0.11.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-12 19:17:59 +00:00
903abdefdc Remove unnecessray clone 2020-02-12 20:17:55 +01:00
01689fc89e Merge pull request #99 from vbrandl/dependabot/cargo/bytes-0.5.4
Bump bytes from 0.4.12 to 0.5.4
2020-02-12 20:16:34 +01:00
ede937d651 Bump bytes from 0.4.12 to 0.5.4
Bumps [bytes](https://github.com/tokio-rs/bytes) from 0.4.12 to 0.5.4.
- [Release notes](https://github.com/tokio-rs/bytes/releases)
- [Changelog](https://github.com/tokio-rs/bytes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/bytes/compare/v0.4.12...v0.5.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-12 19:11:52 +00:00
1805d86048 Merge branch 'master' of github.com:vbrandl/hoc 2020-02-12 20:10:14 +01:00
a81de6f89c Merge branch 'feature/dependency-upgrades' 2020-02-12 20:08:24 +01:00
dfc49c6b64 Update futures, actix and request to next major version, refactor to use async/await 2020-02-12 19:45:18 +01:00
c7cde6222a Merge remote-tracking branch 'github/dependabot/cargo/actix-web-2.0.0' into dependabot/cargo/futures-0.3.1 2020-02-12 18:47:34 +01:00
fb889aa0ec Merge pull request #108 from vbrandl/dependabot/cargo/serde_json-1.0.47
Bump serde_json from 1.0.44 to 1.0.47
2020-02-12 17:59:40 +01:00
36f29a410b Bump serde_json from 1.0.44 to 1.0.47
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.44 to 1.0.47.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.44...v1.0.47)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-12 16:59:26 +00:00
e65efb5ea1 Merge pull request #104 from vbrandl/dependabot/cargo/structopt-0.3.9
Bump structopt from 0.3.7 to 0.3.9
2020-02-12 17:58:02 +01:00
2127dbe879 Merge pull request #102 from vbrandl/dependabot/cargo/log4rs-0.10.0
Bump log4rs from 0.9.0 to 0.10.0
2020-02-12 17:57:52 +01:00
9fe0c080c7 Merge pull request #101 from vbrandl/dependabot/cargo/ructe-0.9.2
Bump ructe from 0.9.0 to 0.9.2
2020-02-12 17:57:42 +01:00
5f132ed0c8 Bump structopt from 0.3.7 to 0.3.9
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.7 to 0.3.9.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.7...v0.3.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-02-03 04:19:56 +00:00
5fe25b83e1 Bump log4rs from 0.9.0 to 0.10.0
Bumps [log4rs](https://github.com/estk/log4rs) from 0.9.0 to 0.10.0.
- [Release notes](https://github.com/estk/log4rs/releases)
- [Changelog](https://github.com/estk/log4rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/estk/log4rs/commits)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-30 04:18:26 +00:00
72655edcfc Bump ructe from 0.9.0 to 0.9.2
Bumps [ructe](https://github.com/kaj/ructe) from 0.9.0 to 0.9.2.
- [Release notes](https://github.com/kaj/ructe/releases)
- [Commits](https://github.com/kaj/ructe/compare/v0.9.0...v0.9.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-27 04:18:28 +00:00
2ef4412f0a Merge pull request #91 from vbrandl/dependabot/cargo/serde-1.0.104
Some checks reported errors
continuous-integration/drone/push Build was killed
Bump serde from 1.0.103 to 1.0.104
2020-01-10 13:32:11 +01:00
3863a870c5 Bump serde from 1.0.103 to 1.0.104
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.103 to 1.0.104.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.103...v1.0.104)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 11:29:48 +00:00
7e29eab063 Merge pull request #93 from vbrandl/dependabot/cargo/ructe-0.9.0
Bump ructe from 0.8.0 to 0.9.0
2020-01-10 12:27:34 +01:00
303445f3ad Merge pull request #87 from vbrandl/dependabot/cargo/serde_json-1.0.44
Bump serde_json from 1.0.42 to 1.0.44
2020-01-10 12:26:58 +01:00
6a03ae9fff Merge pull request #86 from vbrandl/dependabot/cargo/log4rs-0.9.0
Bump log4rs from 0.8.3 to 0.9.0
2020-01-10 12:20:50 +01:00
9ac60b8a26 Bump ructe from 0.8.0 to 0.9.0
Bumps [ructe](https://github.com/kaj/ructe) from 0.8.0 to 0.9.0.
- [Release notes](https://github.com/kaj/ructe/releases)
- [Commits](https://github.com/kaj/ructe/compare/v0.8.0...v0.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 11:20:16 +00:00
d2c23ebf4f Bump serde_json from 1.0.42 to 1.0.44
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.42 to 1.0.44.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.42...v1.0.44)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 11:20:06 +00:00
d0ddc7f62d Merge pull request #95 from vbrandl/dependabot/cargo/structopt-0.3.7
Bump structopt from 0.3.5 to 0.3.7
2020-01-10 12:18:42 +01:00
164c97f453 Bump structopt from 0.3.5 to 0.3.7
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.5 to 0.3.7.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.5...v0.3.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-10 11:11:57 +00:00
c702bec8e2 Merge pull request #96 from vbrandl/dependabot/cargo/http-0.1.21
[Security] Bump http from 0.1.17 to 0.1.21
2020-01-10 11:55:39 +01:00
2c002a1865 Fix clippy lint
Some checks reported errors
continuous-integration/drone/push Build was killed
2020-01-10 11:46:30 +01:00
95efa4d875 Remove unnecessray clone
Some checks reported errors
continuous-integration/drone/push Build was killed
2020-01-10 11:40:14 +01:00
65f1575045 [Security] Bump http from 0.1.17 to 0.1.21
Bumps [http](https://github.com/hyperium/http) from 0.1.17 to 0.1.21. **This update includes security fixes.**
- [Release notes](https://github.com/hyperium/http/releases)
- [Changelog](https://github.com/hyperium/http/blob/v0.1.21/CHANGELOG.md)
- [Commits](https://github.com/hyperium/http/compare/v0.1.17...v0.1.21)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-01-09 20:04:27 +00:00
9f95ae74a4 Bump actix-web from 1.0.9 to 2.0.0
Bumps [actix-web](https://github.com/actix/actix-web) from 1.0.9 to 2.0.0.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/master/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/web-v1.0.9...web-v2.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-26 04:20:46 +00:00
37159f8909 Fix path pattern
Some checks are pending
continuous-integration/drone/push Build is pending
2019-12-11 19:38:56 +01:00
0142425f1e Bump log4rs from 0.8.3 to 0.9.0
Bumps [log4rs](https://github.com/estk/log4rs) from 0.8.3 to 0.9.0.
- [Release notes](https://github.com/estk/log4rs/releases)
- [Changelog](https://github.com/estk/log4rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/estk/log4rs/compare/v0.8.3...v0.9.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-12-02 04:23:17 +00:00
b72641221b Merge pull request #80 from vbrandl/dependabot/cargo/serde_json-1.0.42
Some checks are pending
continuous-integration/drone/push Build is pending
Bump serde_json from 1.0.41 to 1.0.42
2019-11-25 17:44:24 +01:00
50d985ffd4 Bump serde_json from 1.0.41 to 1.0.42
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.41 to 1.0.42.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.41...v1.0.42)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 16:43:36 +00:00
8b0cc49724 Merge pull request #81 from vbrandl/dependabot/cargo/serde-1.0.103
Bump serde from 1.0.101 to 1.0.103
2019-11-25 17:42:26 +01:00
6d0d53af1b Bump serde from 1.0.101 to 1.0.103
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.101 to 1.0.103.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.101...v1.0.103)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 16:42:03 +00:00
b666a3e3b3 Bump futures from 0.1.29 to 0.3.1
Bumps [futures](https://github.com/rust-lang-nursery/futures-rs) from 0.1.29 to 0.3.1.
- [Release notes](https://github.com/rust-lang-nursery/futures-rs/releases)
- [Changelog](https://github.com/rust-lang-nursery/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang-nursery/futures-rs/compare/0.1.29...0.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 16:41:24 +00:00
f5b37ba700 Merge pull request #79 from vbrandl/dependabot/cargo/serde_derive-1.0.103
Bump serde_derive from 1.0.101 to 1.0.103
2019-11-25 17:40:49 +01:00
beb3c8330c Merge pull request #77 from vbrandl/dependabot/cargo/actix-web-1.0.9
Bump actix-web from 1.0.8 to 1.0.9
2019-11-25 17:40:13 +01:00
34ee7e3853 Merge pull request #74 from vbrandl/dependabot/cargo/ructe-0.8.0
Bump ructe from 0.7.2 to 0.8.0
2019-11-25 17:40:02 +01:00
84cf8b9a6f Merge pull request #82 from vbrandl/dependabot/cargo/structopt-0.3.5
Bump structopt from 0.3.3 to 0.3.5
2019-11-25 17:39:29 +01:00
9ef0337605 Apply cargo fmt
Some checks are pending
continuous-integration/drone/push Build is pending
2019-11-25 17:35:00 +01:00
bbf5bba490 Reduce number of parameters
Some checks are pending
continuous-integration/drone/push Build is pending
2019-11-25 17:27:16 +01:00
9991f6c545 Rollback changes 2019-11-25 17:25:43 +01:00
37e3c5ee72 Change to test cargo audit
Some checks are pending
continuous-integration/drone/push Build is pending
2019-11-25 16:57:59 +01:00
edab6fd3dd Don't run the tool in CI 2019-11-25 16:55:18 +01:00
97197190f5 Use actions-rs and caching
Some checks are pending
continuous-integration/drone/push Build is pending
2019-11-25 16:53:06 +01:00
4959fabd29 Run audit if deps changed, on merge requests and scheduled
Some checks are pending
continuous-integration/drone/push Build is pending
2019-11-25 16:50:17 +01:00
fecd5d0b6a Bump structopt from 0.3.3 to 0.3.5
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.3 to 0.3.5.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.3...v0.3.5)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 04:19:40 +00:00
1060edaebe Bump serde_derive from 1.0.101 to 1.0.103
Bumps [serde_derive](https://github.com/serde-rs/serde) from 1.0.101 to 1.0.103.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.101...v1.0.103)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-25 04:18:37 +00:00
bc9f411297 Bump actix-web from 1.0.8 to 1.0.9
Bumps [actix-web](https://github.com/actix/actix-web) from 1.0.8 to 1.0.9.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/master/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/web-v1.0.8...web-v1.0.9)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-14 04:21:38 +00:00
7fc920cddd Bump version number
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone/tag Build is pending
2019-11-08 17:17:55 +01:00
6a4c1edf9e Bump ructe from 0.7.2 to 0.8.0
Bumps [ructe](https://github.com/kaj/ructe) from 0.7.2 to 0.8.0.
- [Release notes](https://github.com/kaj/ructe/releases)
- [Commits](https://github.com/kaj/ructe/compare/v0.7.2...v0.8.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-11-07 04:22:25 +00:00
c1ea45d517 Merge pull request #68 from vbrandl/dependabot/cargo/reqwest-0.9.22
Some checks reported errors
continuous-integration/drone/push Build was killed
Bump reqwest from 0.9.20 to 0.9.22
2019-10-14 15:37:50 +02:00
0b729da42f Merge pull request #65 from vbrandl/dependabot/cargo/actix-web-1.0.8
Bump actix-web from 1.0.7 to 1.0.8
2019-10-14 15:37:35 +02:00
c0d0aa2176 Bump reqwest from 0.9.20 to 0.9.22
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.9.20 to 0.9.22.
- [Release notes](https://github.com/seanmonstar/reqwest/releases)
- [Changelog](https://github.com/seanmonstar/reqwest/blob/v0.9.22/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/reqwest/compare/v0.9.20...v0.9.22)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 13:35:53 +00:00
41159c4ba4 Merge pull request #63 from vbrandl/dependabot/cargo/serde-1.0.101
Bump serde from 1.0.100 to 1.0.101
2019-10-14 15:34:09 +02:00
b40b6bcad2 Bump serde from 1.0.100 to 1.0.101
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.100 to 1.0.101.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.100...v1.0.101)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 13:31:42 +00:00
6e86f49585 Merge pull request #67 from vbrandl/dependabot/cargo/serde_json-1.0.41
Bump serde_json from 1.0.40 to 1.0.41
2019-10-14 15:29:52 +02:00
c8c73b6b83 Bump serde_json from 1.0.40 to 1.0.41
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.40 to 1.0.41.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.40...v1.0.41)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-14 13:25:55 +00:00
c6cc956f4d Merge pull request #69 from vbrandl/dependabot/cargo/structopt-0.3.3
Bump structopt from 0.3.1 to 0.3.3
2019-10-14 15:23:19 +02:00
e37489d2cb Merge pull request #62 from vbrandl/dependabot/cargo/serde_derive-1.0.101
Bump serde_derive from 1.0.100 to 1.0.101
2019-10-14 15:21:43 +02:00
8246be996e Bump structopt from 0.3.1 to 0.3.3
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.3.1 to 0.3.3.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.3.1...v0.3.3)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-10-11 05:01:25 +00:00
1f32f3eda4 Bump actix-web from 1.0.7 to 1.0.8
Bumps [actix-web](https://github.com/actix/actix-web) from 1.0.7 to 1.0.8.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/master/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/web-v1.0.7...web-v1.0.8)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-26 04:24:19 +00:00
ab6c317241 Bump serde_derive from 1.0.100 to 1.0.101
Bumps [serde_derive](https://github.com/serde-rs/serde) from 1.0.100 to 1.0.101.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.100...v1.0.101)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-17 04:23:34 +00:00
1223d429db Merge pull request #60 from vbrandl/vbrandl-patch-1
All checks were successful
continuous-integration/drone/push Build is passing
Add Github actions
2019-09-09 21:39:32 +02:00
9613aa7848 Add Github actions 2019-09-09 21:39:16 +02:00
334fa8ced5 Bump version number
All checks were successful
continuous-integration/drone/push Build is passing
2019-09-09 18:19:53 +02:00
062343dd32 Merge pull request #57 from vbrandl/dependabot/cargo/serde-1.0.100
Bump serde from 1.0.99 to 1.0.100
2019-09-09 18:18:15 +02:00
bdb2a151fa Merge pull request #56 from vbrandl/dependabot/cargo/futures-0.1.29
Bump futures from 0.1.28 to 0.1.29
2019-09-09 18:17:04 +02:00
7e66393966 Bump serde from 1.0.99 to 1.0.100
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.99 to 1.0.100.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.99...v1.0.100)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 16:16:33 +00:00
32ac5ca0d8 Merge pull request #58 from vbrandl/dependabot/cargo/structopt-0.3.1
Bump structopt from 0.2.18 to 0.3.1
2019-09-09 18:15:19 +02:00
b3b4cd0e42 Merge pull request #59 from vbrandl/dependabot/cargo/serde_derive-1.0.100
Bump serde_derive from 1.0.99 to 1.0.100
2019-09-09 18:15:07 +02:00
be08b87bbb Bump serde_derive from 1.0.99 to 1.0.100
Bumps [serde_derive](https://github.com/serde-rs/serde) from 1.0.99 to 1.0.100.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.99...v1.0.100)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 04:25:47 +00:00
cf4d427b96 Bump structopt from 0.2.18 to 0.3.1
Bumps [structopt](https://github.com/TeXitoi/structopt) from 0.2.18 to 0.3.1.
- [Release notes](https://github.com/TeXitoi/structopt/releases)
- [Changelog](https://github.com/TeXitoi/structopt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TeXitoi/structopt/compare/v0.2.18...v0.3.1)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-09 04:25:23 +00:00
b5ebc54372 Bump futures from 0.1.28 to 0.1.29
Bumps [futures](https://github.com/rust-lang-nursery/futures-rs) from 0.1.28 to 0.1.29.
- [Release notes](https://github.com/rust-lang-nursery/futures-rs/releases)
- [Changelog](https://github.com/rust-lang-nursery/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang-nursery/futures-rs/compare/0.1.28...0.1.29)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-09-06 04:23:07 +00:00
231741629e Merge pull request #53 from vbrandl/dependabot/cargo/actix-web-1.0.7
All checks were successful
continuous-integration/drone/push Build is passing
Bump actix-web from 1.0.5 to 1.0.7
2019-08-30 11:22:26 +02:00
135c5756b1 Merge pull request #54 from vbrandl/dependabot/cargo/ructe-0.7.2
Bump ructe from 0.7.0 to 0.7.2
2019-08-30 11:21:07 +02:00
79cfee5fa5 Bump ructe from 0.7.0 to 0.7.2
Bumps [ructe](https://github.com/kaj/ructe) from 0.7.0 to 0.7.2.
- [Release notes](https://github.com/kaj/ructe/releases)
- [Commits](https://github.com/kaj/ructe/compare/v0.7.0...v0.7.2)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-29 04:27:17 +00:00
1c9b5db4e1 Bump actix-web from 1.0.5 to 1.0.7
Bumps [actix-web](https://github.com/actix/actix-web) from 1.0.5 to 1.0.7.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/master/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/web-v1.0.5...web-v1.0.7)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-29 04:26:47 +00:00
21 changed files with 5280 additions and 1735 deletions

31
.github/workflows/audit.yml vendored Normal file
View File

@ -0,0 +1,31 @@
name: Security audit
on:
schedule:
- cron: '0 1 * * *'
push:
paths:
- 'Cargo.toml'
- 'Cargo.lock'
pull_request:
jobs:
security_audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Cache cargo registry
uses: actions/cache@v1
with:
path: /usr/share/rust/.cargo/registry
key: ${{ runner.os }}-cargo-registry
- name: Cache cargo index
uses: actions/cache@v1
with:
path: /usr/share/rust/.cargo/git
key: ${{ runner.os }}-cargo-index
- uses: actions-rs/audit-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}

20
.github/workflows/nix-build.yml vendored Normal file
View File

@ -0,0 +1,20 @@
name: "Nix Build"
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: cachix/install-nix-action@v8
- name: Cache nix store
uses: actions/cache@v1
with:
path: /nix
key: ${{ runner.os }}-nix-store
- uses: cachix/cachix-action@v5
with:
name: hitsofcode
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
attributes: package

94
.github/workflows/rust.yml vendored Normal file
View File

@ -0,0 +1,94 @@
name: Rust
on: [push, pull_request]
jobs:
lint:
name: Linting and Formatting Checks
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v1
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Install rustfmt
run: rustup component add rustfmt
- name: Cache cargo registry
uses: actions/cache@v1
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v1
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v1
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Check Formatting
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Install clippy
run: rustup component add clippy
- name: Clippy Linting
uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
test:
name: Run Tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
# add windows-latest when it is clear why tests are failing
os: [ubuntu-latest, macos-latest]
steps:
- name: Checkout sources
uses: actions/checkout@v1
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Cache cargo registry
uses: actions/cache@v1
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo index
uses: actions/cache@v1
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v1
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- name: Run Tests
uses: actions-rs/cargo@v1
with:
command: test

1
.gitignore vendored
View File

@ -3,3 +3,4 @@
repos repos
cache cache
hoc.log hoc.log
result

2931
Cargo.lock generated

File diff suppressed because it is too large Load Diff

3336
Cargo.nix Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,28 @@
[package] [package]
name = "hoc" name = "hoc"
version = "0.11.2" version = "0.11.8"
authors = ["Valentin Brandl <vbrandl@riseup.net>"] authors = ["Valentin Brandl <vbrandl@riseup.net>"]
edition = "2018" edition = "2018"
build = "build.rs" build = "build.rs"
[dependencies] [dependencies]
actix-web = "1.0.5" actix-web = "2.0.0"
badge = "0.2.0" badge = "0.2.0"
bytes = "0.4.12" bytes = "0.5.4"
futures = "0.1.28" futures = "0.3.1"
git2 = "0.9.1" git2 = "0.13.1"
lazy_static = "1.4.0" lazy_static = "1.4.0"
log = "0.4.8" log = "0.4.8"
log4rs = "0.8.3" log4rs = "0.11.0"
number_prefix = "0.3.0" number_prefix = "0.3.0"
openssl-probe = "0.1.2" openssl-probe = "0.1.2"
reqwest = "0.9.20" reqwest = "0.10.4"
serde = "1.0.99" serde = "1.0.105"
serde_derive = "1.0.99" serde_derive = "1.0.103"
serde_json = "1.0.40" serde_json = "1.0.50"
structopt = "0.2.18" structopt = "0.3.12"
actix-rt = "1.0.0"
[build-dependencies] [build-dependencies]
ructe = "0.7.0" ructe = "0.9.2"
vergen = "3.0.4" vergen = "3.1.0"

View File

@ -45,6 +45,10 @@ $ docker build .
inside the repository. inside the repository.
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`.
## Running ## Running

1
crate-hashes.json Normal file
View File

@ -0,0 +1 @@
{}

56
default.nix Normal file
View File

@ -0,0 +1,56 @@
{ sources ? import ./nix/sources.nix
, system ? builtins.currentSystem
}:
let
rustOverlay = import "${sources.nixpkgs-mozilla}/rust-overlay.nix";
cargo2nixOverlay = import "${sources.cargo2nix}/overlay";
pkgs = import sources.nixpkgs {
# pkgs = import <nixpkgs> {
inherit system;
overlays = [ cargo2nixOverlay rustOverlay ];
};
rustPkgs = pkgs.rustBuilder.makePackageSet' {
rustChannel = "stable";
packageFun = import ./Cargo.nix;
localPatterns =
[
''^(src|tests)(/.*)?''
''[^/]*\.(rs|toml)$''
# include other directory from the project repository
''^templates(/.*)?''
''^static(/.*)?''
''^.git.*(/.*)?''
];
# packageOverrides
};
in
rec {
inherit rustPkgs;
shell = pkgs.mkShell {
inputsFrom = pkgs.lib.mapAttrsToList (_: pkg: pkg { }) rustPkgs.noBuild.workspace;
nativeBuildInputs = with rustPkgs; [ cargo rustc ];
};
package = (rustPkgs.workspace.hoc {}).overrideAttrs (drv: {
buildInputs = drv.buildInputs or [ ] ++ [ pkgs.git ];
});
dockerImage =
pkgs.dockerTools.buildImage {
name = "vbrandl/hits-of-code";
tag = package.version;
contents =
[
package
pkgs.cacert
pkgs.gitMinimal
];
config = {
Cmd = [ "/bin/hoc" ];
WorkingDir = "/home/hoc";
};
};
}

50
nix/sources.json Normal file
View File

@ -0,0 +1,50 @@
{
"cargo2nix": {
"branch": "master",
"description": "Convert a Cargo.lock to mkRustCrate statements for import in Nix",
"homepage": "",
"owner": "tenx-tech",
"repo": "cargo2nix",
"rev": "7bc062ccffc41dc7d3759b8b797e8b4f8dd23a15",
"sha256": "1z7xwk1hbp26aydsk3y07riy0ivwqss06n1470mvdl7allfcd1w5",
"type": "tarball",
"url": "https://github.com/tenx-tech/cargo2nix/archive/7bc062ccffc41dc7d3759b8b797e8b4f8dd23a15.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"niv": {
"branch": "master",
"description": "Easy dependency management for Nix projects",
"homepage": "https://github.com/nmattia/niv",
"owner": "nmattia",
"repo": "niv",
"rev": "98c74a80934123cb4c3bf3314567f67311eb711a",
"sha256": "1w8n54hapd4x9f1am33icvngkqns7m3hl9yair38yqq08ffwg0kn",
"type": "tarball",
"url": "https://github.com/nmattia/niv/archive/98c74a80934123cb4c3bf3314567f67311eb711a.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs": {
"branch": "nixpkgs-unstable",
"description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
"homepage": "https://github.com/NixOS/nixpkgs",
"owner": "NixOS",
"repo": "nixpkgs-channels",
"rev": "053ad4e0db7241ae6a02394d62750fdc5d64aa9f",
"sha256": "11l9sr8zg8j1n5p43zjkqwpj59gn8c84z1kf16icnsbnv2smzqdc",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs-channels/archive/053ad4e0db7241ae6a02394d62750fdc5d64aa9f.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs-mozilla": {
"branch": "master",
"description": "mozilla related nixpkgs (extends nixos/nixpkgs repo)",
"homepage": null,
"owner": "mozilla",
"repo": "nixpkgs-mozilla",
"rev": "e912ed483e980dfb4666ae0ed17845c4220e5e7c",
"sha256": "08fvzb8w80bkkabc1iyhzd15f4sm7ra10jn32kfch5klgl0gj3j3",
"type": "tarball",
"url": "https://github.com/mozilla/nixpkgs-mozilla/archive/e912ed483e980dfb4666ae0ed17845c4220e5e7c.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}

134
nix/sources.nix Normal file
View File

@ -0,0 +1,134 @@
# This file has been generated by Niv.
let
#
# The fetchers. fetch_<type> fetches specs of type <type>.
#
fetch_file = pkgs: spec:
if spec.builtin or true then
builtins_fetchurl { inherit (spec) url sha256; }
else
pkgs.fetchurl { inherit (spec) url sha256; };
fetch_tarball = pkgs: spec:
if spec.builtin or true then
builtins_fetchTarball { inherit (spec) url sha256; }
else
pkgs.fetchzip { inherit (spec) url sha256; };
fetch_git = spec:
builtins.fetchGit { url = spec.repo; inherit (spec) rev ref; };
fetch_builtin-tarball = spec:
builtins.trace
''
WARNING:
The niv type "builtin-tarball" will soon be deprecated. You should
instead use `builtin = true`.
$ niv modify <package> -a type=tarball -a builtin=true
''
builtins_fetchTarball { inherit (spec) url sha256; };
fetch_builtin-url = spec:
builtins.trace
''
WARNING:
The niv type "builtin-url" will soon be deprecated. You should
instead use `builtin = true`.
$ niv modify <package> -a type=file -a builtin=true
''
(builtins_fetchurl { inherit (spec) url sha256; });
#
# Various helpers
#
# The set of packages used when specs are fetched using non-builtins.
mkPkgs = sources:
let
sourcesNixpkgs =
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) {};
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
in
if builtins.hasAttr "nixpkgs" sources
then sourcesNixpkgs
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
import <nixpkgs> {}
else
abort
''
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
add a package called "nixpkgs" to your sources.json.
'';
# The actual fetching function.
fetch = pkgs: name: spec:
if ! builtins.hasAttr "type" spec then
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
else if spec.type == "file" then fetch_file pkgs spec
else if spec.type == "tarball" then fetch_tarball pkgs spec
else if spec.type == "git" then fetch_git spec
else if spec.type == "builtin-tarball" then fetch_builtin-tarball spec
else if spec.type == "builtin-url" then fetch_builtin-url spec
else
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
# Ports of functions for older nix versions
# a Nix version of mapAttrs if the built-in doesn't exist
mapAttrs = builtins.mapAttrs or (
f: set: with builtins;
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
);
# fetchTarball version that is compatible between all the versions of Nix
builtins_fetchTarball = { url, sha256 }@attrs:
let
inherit (builtins) lessThan nixVersion fetchTarball;
in
if lessThan nixVersion "1.12" then
fetchTarball { inherit url; }
else
fetchTarball attrs;
# fetchurl version that is compatible between all the versions of Nix
builtins_fetchurl = { url, sha256 }@attrs:
let
inherit (builtins) lessThan nixVersion fetchurl;
in
if lessThan nixVersion "1.12" then
fetchurl { inherit url; }
else
fetchurl attrs;
# Create the final "sources" from the config
mkSources = config:
mapAttrs (
name: spec:
if builtins.hasAttr "outPath" spec
then abort
"The values in sources.json should not have an 'outPath' attribute"
else
spec // { outPath = fetch config.pkgs name spec; }
) config.sources;
# The "config" used by the fetchers
mkConfig =
{ sourcesFile ? ./sources.json
, sources ? builtins.fromJSON (builtins.readFile sourcesFile)
, pkgs ? mkPkgs sources
}: rec {
# The sources, i.e. the attribute set of spec name to spec
inherit sources;
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
inherit pkgs;
};
in
mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); }

1
shell.nix Normal file
View File

@ -0,0 +1 @@
with import ./. { }; shell

View File

@ -48,7 +48,7 @@ pub(crate) struct Opt {
pub(crate) logfile: PathBuf, pub(crate) logfile: PathBuf,
} }
pub(crate) fn init() -> Result<()> { pub(crate) async fn init() -> Result<()> {
std::env::set_var("RUST_LOG", "actix_web=info,hoc=info"); std::env::set_var("RUST_LOG", "actix_web=info,hoc=info");
// pretty_env_logger::init(); // pretty_env_logger::init();
openssl_probe::init_ssl_cert_env_vars(); openssl_probe::init_ssl_cert_env_vars();

View File

@ -18,6 +18,7 @@ pub(crate) enum Error {
LogBuilder(log4rs::config::Errors), LogBuilder(log4rs::config::Errors),
Parse(std::num::ParseIntError), Parse(std::num::ParseIntError),
Serial(serde_json::Error), Serial(serde_json::Error),
GitNoMaster,
} }
impl fmt::Display for Error { impl fmt::Display for Error {
@ -32,6 +33,7 @@ impl fmt::Display for Error {
Error::LogBuilder(e) => write!(fmt, "LogBuilder({})", e), Error::LogBuilder(e) => write!(fmt, "LogBuilder({})", e),
Error::Parse(e) => write!(fmt, "Parse({})", e), Error::Parse(e) => write!(fmt, "Parse({})", e),
Error::Serial(e) => write!(fmt, "Serial({})", e), Error::Serial(e) => write!(fmt, "Serial({})", e),
Error::GitNoMaster => write!(fmt, "Repo doesn't have master branch"),
} }
} }
} }
@ -39,14 +41,24 @@ impl fmt::Display for Error {
impl ResponseError for Error { impl ResponseError for Error {
fn error_response(&self) -> HttpResponse { fn error_response(&self) -> HttpResponse {
let mut buf = Vec::new(); let mut buf = Vec::new();
templates::p500(&mut buf, VERSION_INFO, REPO_COUNT.load(Ordering::Relaxed)).unwrap(); match self {
HttpResponse::InternalServerError() Error::GitNoMaster => {
.content_type("text/html") templates::p404_no_master(
.body(buf) &mut buf,
} VERSION_INFO,
REPO_COUNT.load(Ordering::Relaxed),
fn render_response(&self) -> HttpResponse { )
self.error_response() .unwrap();
HttpResponse::NotFound().content_type("text/html").body(buf)
}
_ => {
templates::p500(&mut buf, VERSION_INFO, REPO_COUNT.load(Ordering::Relaxed))
.unwrap();
HttpResponse::InternalServerError()
.content_type("text/html")
.body(buf)
}
}
} }
} }

View File

@ -15,21 +15,21 @@ mod count;
mod error; mod error;
mod service; mod service;
mod statics; mod statics;
mod template;
use crate::{ use crate::{
cache::CacheState, cache::CacheState,
error::{Error, Result}, error::{Error, Result},
service::{Bitbucket, FormService, GitHub, Gitlab, Service}, service::{Bitbucket, FormService, GitHub, Gitlab, Service},
statics::{CLIENT, CSS, FAVICON, OPT, REPO_COUNT, VERSION_INFO}, statics::{CLIENT, CSS, FAVICON, OPT, REPO_COUNT, VERSION_INFO},
template::RepoInfo,
}; };
use actix_web::{ use actix_web::{
error::ErrorBadRequest,
http::header::{CacheControl, CacheDirective, Expires}, http::header::{CacheControl, CacheDirective, Expires},
middleware, web, App, HttpResponse, HttpServer, middleware, web, App, HttpResponse, HttpServer,
}; };
use badge::{Badge, BadgeOptions}; use badge::{Badge, BadgeOptions};
use bytes::Bytes; use futures::future::Future;
use futures::{unsync::mpsc, Future, Stream};
use git2::Repository; use git2::Repository;
use number_prefix::{NumberPrefix, Prefixed, Standalone}; use number_prefix::{NumberPrefix, Prefixed, Standalone};
use std::{ use std::{
@ -75,7 +75,12 @@ fn hoc(repo: &str, repo_dir: &str, cache_dir: &str) -> Result<(u64, String, u64)
let cache_dir = format!("{}/{}.json", cache_dir, repo); let cache_dir = format!("{}/{}.json", cache_dir, repo);
let cache_dir = Path::new(&cache_dir); let cache_dir = Path::new(&cache_dir);
let repo = Repository::open_bare(&repo_dir)?; let repo = Repository::open_bare(&repo_dir)?;
let head = format!("{}", repo.head()?.target().ok_or(Error::Internal)?); // TODO: do better...
let head = match repo.head() {
Ok(v) => v,
Err(_) => return Err(Error::GitNoMaster),
};
let head = format!("{}", head.target().ok_or(Error::Internal)?);
let mut arg_commit_count = vec!["rev-list".to_string(), "--count".to_string()]; let mut arg_commit_count = vec!["rev-list".to_string(), "--count".to_string()];
let mut arg = vec![ let mut arg = vec![
"log".to_string(), "log".to_string(),
@ -137,12 +142,12 @@ fn hoc(repo: &str, repo_dir: &str, cache_dir: &str) -> Result<(u64, String, u64)
Ok((cache.count, head, commits)) Ok((cache.count, head, commits))
} }
fn remote_exists(url: &str) -> impl Future<Item = bool, Error = Error> { async fn remote_exists(url: &str) -> Result<bool> {
CLIENT let resp = CLIENT.head(url).send().await?;
.head(url) Ok(resp.status() == reqwest::StatusCode::OK)
.send()
.map(|resp| resp.status() == reqwest::StatusCode::OK) // .map(|resp| resp.status() == reqwest::StatusCode::OK)
.from_err() // .from_err()
} }
enum HocResult { enum HocResult {
@ -158,11 +163,11 @@ enum HocResult {
NotFound, NotFound,
} }
fn handle_hoc_request<T, F>( async fn handle_hoc_request<T, F>(
state: web::Data<Arc<State>>, state: web::Data<Arc<State>>,
data: web::Path<(String, String)>, data: web::Path<(String, String)>,
mapper: F, mapper: F,
) -> impl Future<Item = HttpResponse, Error = Error> ) -> Result<HttpResponse>
where where
T: Service, T: Service,
F: Fn(HocResult) -> Result<HttpResponse>, F: Fn(HocResult) -> Result<HttpResponse>,
@ -171,44 +176,42 @@ where
let service_path = format!("{}/{}", T::domain(), repo); let service_path = format!("{}/{}", T::domain(), repo);
let path = format!("{}/{}", state.repos, service_path); let path = format!("{}/{}", state.repos, service_path);
let url = format!("https://{}", service_path); let url = format!("https://{}", service_path);
remote_exists(&url) let remote_exists = remote_exists(&url).await?;
.and_then(move |remote_exists| { let file = Path::new(&path);
let file = Path::new(&path); if !file.exists() {
if !file.exists() { if !remote_exists {
if !remote_exists { warn!("Repository does not exist: {}", url);
warn!("Repository does not exist: {}", url); return mapper(HocResult::NotFound);
return Ok(HocResult::NotFound); }
} info!("Cloning {} for the first time", url);
info!("Cloning {} for the first time", url); create_dir_all(file)?;
create_dir_all(file)?; let repo = Repository::init_bare(file)?;
let repo = Repository::init_bare(file)?; repo.remote_add_fetch("origin", "refs/heads/*:refs/heads/*")?;
repo.remote_add_fetch("origin", "refs/heads/*:refs/heads/*")?; repo.remote_set_url("origin", &url)?;
repo.remote_set_url("origin", &url)?; REPO_COUNT.fetch_add(1, Ordering::Relaxed);
REPO_COUNT.fetch_add(1, Ordering::Relaxed); }
} pull(&path)?;
pull(&path)?; let (hoc, head, commits) = hoc(&service_path, &state.repos, &state.cache)?;
let (hoc, head, commits) = hoc(&service_path, &state.repos, &state.cache)?; let hoc_pretty = match NumberPrefix::decimal(hoc as f64) {
let hoc_pretty = match NumberPrefix::decimal(hoc as f64) { Standalone(hoc) => hoc.to_string(),
Standalone(hoc) => hoc.to_string(), Prefixed(prefix, hoc) => format!("{:.1}{}", hoc, prefix),
Prefixed(prefix, hoc) => format!("{:.1}{}", hoc, prefix), };
}; let res = HocResult::Hoc {
Ok(HocResult::Hoc { hoc,
hoc, commits,
commits, hoc_pretty,
hoc_pretty, head,
head: head.to_string(), url,
url, repo,
repo, service_path,
service_path, };
}) mapper(res)
})
.and_then(mapper)
} }
fn json_hoc<T: Service>( fn json_hoc<T: Service>(
state: web::Data<Arc<State>>, state: web::Data<Arc<State>>,
data: web::Path<(String, String)>, data: web::Path<(String, String)>,
) -> impl Future<Item = HttpResponse, Error = Error> { ) -> impl Future<Output = Result<HttpResponse>> {
let mapper = |r| match r { let mapper = |r| match r {
HocResult::NotFound => p404(), HocResult::NotFound => p404(),
HocResult::Hoc { HocResult::Hoc {
@ -225,8 +228,8 @@ fn json_hoc<T: Service>(
fn calculate_hoc<T: Service>( fn calculate_hoc<T: Service>(
state: web::Data<Arc<State>>, state: web::Data<Arc<State>>,
data: web::Path<(String, String)>, data: web::Path<(String, String)>,
) -> impl Future<Item = HttpResponse, Error = Error> { ) -> impl Future<Output = Result<HttpResponse>> {
let mapper = |r| match r { let mapper = move |r| match r {
HocResult::NotFound => p404(), HocResult::NotFound => p404(),
HocResult::Hoc { hoc_pretty, .. } => { HocResult::Hoc { hoc_pretty, .. } => {
let badge_opt = BadgeOptions { let badge_opt = BadgeOptions {
@ -235,9 +238,8 @@ fn calculate_hoc<T: Service>(
status: hoc_pretty, status: hoc_pretty,
}; };
let badge = Badge::new(badge_opt)?; let badge = Badge::new(badge_opt)?;
// TODO: remove clone
let (tx, rx_body) = mpsc::unbounded(); let body = badge.to_svg().as_bytes().to_vec();
let _ = tx.unbounded_send(Bytes::from(badge.to_svg().as_bytes()));
let expiration = SystemTime::now() + Duration::from_secs(30); let expiration = SystemTime::now() + Duration::from_secs(30);
Ok(HttpResponse::Ok() Ok(HttpResponse::Ok()
@ -249,7 +251,7 @@ fn calculate_hoc<T: Service>(
CacheDirective::NoCache, CacheDirective::NoCache,
CacheDirective::NoStore, CacheDirective::NoStore,
])) ]))
.streaming(rx_body.map_err(|_| ErrorBadRequest("bad request")))) .body(body))
} }
}; };
handle_hoc_request::<T, _>(state, data, mapper) handle_hoc_request::<T, _>(state, data, mapper)
@ -258,7 +260,7 @@ fn calculate_hoc<T: Service>(
fn overview<T: Service>( fn overview<T: Service>(
state: web::Data<Arc<State>>, state: web::Data<Arc<State>>,
data: web::Path<(String, String)>, data: web::Path<(String, String)>,
) -> impl Future<Item = HttpResponse, Error = Error> { ) -> impl Future<Output = Result<HttpResponse>> {
let mapper = |r| match r { let mapper = |r| match r {
HocResult::NotFound => p404(), HocResult::NotFound => p404(),
HocResult::Hoc { HocResult::Hoc {
@ -271,33 +273,31 @@ fn overview<T: Service>(
service_path, service_path,
} => { } => {
let mut buf = Vec::new(); let mut buf = Vec::new();
let repo_info = RepoInfo {
commit_url: &T::commit_url(&repo, &head),
commits,
domain: &OPT.domain,
head: &head,
hoc,
hoc_pretty: &hoc_pretty,
path: &service_path,
url: &url,
};
templates::overview( templates::overview(
&mut buf, &mut buf,
VERSION_INFO, VERSION_INFO,
REPO_COUNT.load(Ordering::Relaxed), REPO_COUNT.load(Ordering::Relaxed),
&OPT.domain, repo_info,
&service_path,
&url,
hoc,
&hoc_pretty,
&head,
&T::commit_url(&repo, &head),
commits,
)?; )?;
let (tx, rx_body) = mpsc::unbounded(); Ok(HttpResponse::Ok().content_type("text/html").body(buf))
let _ = tx.unbounded_send(Bytes::from(buf));
Ok(HttpResponse::Ok()
.content_type("text/html")
.streaming(rx_body.map_err(|_| ErrorBadRequest("bad request"))))
} }
}; };
handle_hoc_request::<T, _>(state, data, mapper) handle_hoc_request::<T, _>(state, data, mapper)
} }
#[get("/")] #[get("/")]
fn index() -> Result<HttpResponse> { async fn index() -> Result<HttpResponse> {
let mut buf = Vec::new(); let mut buf = Vec::new();
templates::index( templates::index(
&mut buf, &mut buf,
@ -309,7 +309,7 @@ fn index() -> Result<HttpResponse> {
} }
#[post("/generate")] #[post("/generate")]
fn generate(params: web::Form<GeneratorForm>) -> Result<HttpResponse> { async fn generate(params: web::Form<GeneratorForm<'_>>) -> Result<HttpResponse> {
let repo = format!("{}/{}", params.user, params.repo); let repo = format!("{}/{}", params.user, params.repo);
let mut buf = Vec::new(); let mut buf = Vec::new();
templates::generate( templates::generate(
@ -321,12 +321,8 @@ fn generate(params: web::Form<GeneratorForm>) -> Result<HttpResponse> {
params.service.service(), params.service.service(),
&repo, &repo,
)?; )?;
let (tx, rx_body) = mpsc::unbounded();
let _ = tx.unbounded_send(Bytes::from(buf));
Ok(HttpResponse::Ok() Ok(HttpResponse::Ok().content_type("text/html").body(buf))
.content_type("text/html")
.streaming(rx_body.map_err(|_| ErrorBadRequest("bad request"))))
} }
fn p404() -> Result<HttpResponse> { fn p404() -> Result<HttpResponse> {
@ -335,6 +331,10 @@ fn p404() -> Result<HttpResponse> {
Ok(HttpResponse::NotFound().content_type("text/html").body(buf)) Ok(HttpResponse::NotFound().content_type("text/html").body(buf))
} }
async fn async_p404() -> Result<HttpResponse> {
p404()
}
#[get("/tacit-css.min.css")] #[get("/tacit-css.min.css")]
fn css() -> HttpResponse { fn css() -> HttpResponse {
HttpResponse::Ok().content_type("text/css").body(CSS) HttpResponse::Ok().content_type("text/css").body(CSS)
@ -345,13 +345,13 @@ fn favicon32() -> HttpResponse {
HttpResponse::Ok().content_type("image/png").body(FAVICON) HttpResponse::Ok().content_type("image/png").body(FAVICON)
} }
fn start_server() -> Result<()> { async fn start_server() -> std::io::Result<()> {
let interface = format!("{}:{}", OPT.host, OPT.port); let interface = format!("{}:{}", OPT.host, OPT.port);
let state = Arc::new(State { let state = Arc::new(State {
repos: OPT.outdir.display().to_string(), repos: OPT.outdir.display().to_string(),
cache: OPT.cachedir.display().to_string(), cache: OPT.cachedir.display().to_string(),
}); });
Ok(HttpServer::new(move || { HttpServer::new(move || {
App::new() App::new()
.data(state.clone()) .data(state.clone())
.wrap(middleware::Logger::default()) .wrap(middleware::Logger::default())
@ -360,23 +360,25 @@ fn start_server() -> Result<()> {
.service(css) .service(css)
.service(favicon32) .service(favicon32)
.service(generate) .service(generate)
.service(web::resource("/github/{user}/{repo}").to_async(calculate_hoc::<GitHub>)) .service(web::resource("/github/{user}/{repo}").to(calculate_hoc::<GitHub>))
.service(web::resource("/gitlab/{user}/{repo}").to_async(calculate_hoc::<Gitlab>)) .service(web::resource("/gitlab/{user}/{repo}").to(calculate_hoc::<Gitlab>))
.service(web::resource("/bitbucket/{user}/{repo}").to_async(calculate_hoc::<Bitbucket>)) .service(web::resource("/bitbucket/{user}/{repo}").to(calculate_hoc::<Bitbucket>))
.service(web::resource("/github/{user}/{repo}/json").to_async(json_hoc::<GitHub>)) .service(web::resource("/github/{user}/{repo}/json").to(json_hoc::<GitHub>))
.service(web::resource("/gitlab/{user}/{repo}/json").to_async(json_hoc::<Gitlab>)) .service(web::resource("/gitlab/{user}/{repo}/json").to(json_hoc::<Gitlab>))
.service(web::resource("/bitbucket/{user}/{repo}/json").to_async(json_hoc::<Bitbucket>)) .service(web::resource("/bitbucket/{user}/{repo}/json").to(json_hoc::<Bitbucket>))
.service(web::resource("/view/github/{user}/{repo}").to_async(overview::<GitHub>)) .service(web::resource("/view/github/{user}/{repo}").to(overview::<GitHub>))
.service(web::resource("/view/gitlab/{user}/{repo}").to_async(overview::<Gitlab>)) .service(web::resource("/view/gitlab/{user}/{repo}").to(overview::<Gitlab>))
.service(web::resource("/view/bitbucket/{user}/{repo}").to_async(overview::<Bitbucket>)) .service(web::resource("/view/bitbucket/{user}/{repo}").to(overview::<Bitbucket>))
.default_service(web::resource("").route(web::get().to_async(p404))) .default_service(web::resource("").route(web::get().to(async_p404)))
}) })
.workers(OPT.workers) .workers(OPT.workers)
.bind(interface)? .bind(interface)?
.run()?) .run()
.await
} }
fn main() -> Result<()> { #[actix_rt::main]
config::init()?; async fn main() -> std::io::Result<()> {
start_server() config::init().await.unwrap();
start_server().await
} }

View File

@ -15,7 +15,7 @@ pub(crate) const CSS: &str = include_str!("../static/tacit-css.min.css");
pub(crate) const FAVICON: &[u8] = include_bytes!("../static/favicon32.png"); pub(crate) const FAVICON: &[u8] = include_bytes!("../static/favicon32.png");
lazy_static! { lazy_static! {
pub(crate) static ref CLIENT: reqwest::r#async::Client = reqwest::r#async::Client::new(); pub(crate) static ref CLIENT: reqwest::Client = reqwest::Client::new();
pub(crate) static ref OPT: Opt = Opt::from_args(); pub(crate) static ref OPT: Opt = Opt::from_args();
pub(crate) static ref REPO_COUNT: AtomicUsize = pub(crate) static ref REPO_COUNT: AtomicUsize =
AtomicUsize::new(count_repositories(&OPT.outdir).unwrap()); AtomicUsize::new(count_repositories(&OPT.outdir).unwrap());

10
src/template.rs Normal file
View File

@ -0,0 +1,10 @@
pub struct RepoInfo<'a> {
pub commit_url: &'a str,
pub commits: u64,
pub domain: &'a str,
pub head: &'a str,
pub hoc: u64,
pub hoc_pretty: &'a str,
pub path: &'a str,
pub url: &'a str,
}

View File

@ -1,13 +1,16 @@
@use super::base; @use super::base;
@use crate::statics::VersionInfo; @use crate::statics::VersionInfo;
@use crate::template::RepoInfo;
@(version_info: VersionInfo, repo_count: usize, domain: &str, path: &str, url: &str, hoc: u64, hoc_pretty: &str, head: &str, commit_url: &str, commits: u64) @(version_info: VersionInfo, repo_count: usize, repo_info: RepoInfo)
@:base("Hits-of-Code Badges", "Overview", { @:base("Hits-of-Code Badges", "Overview", {
<p> <p>
The project <a href="@url">@url</a> has <strong>@hoc_pretty</strong> (exactly @hoc) hits of code at The project <a href="@repo_info.url">@repo_info.url</a> has
<a href="@commit_url">@head</a>. The repository contains <strong>@commits</strong> commits. <strong>@repo_info.hoc_pretty</strong> (exactly @repo_info.hoc) hits of code at
<a href="@repo_info.commit_url">@repo_info.head</a>. The repository contains
<strong>@repo_info.commits</strong> commits.
</p> </p>
<p> <p>
@ -15,6 +18,6 @@ To include the badge in your readme, use the following markdown:
</p> </p>
<pre> <pre>
[![Hits-of-Code](https://@domain/@path)](https://@domain/view/@path) [![Hits-of-Code](https://@repo_info.domain/@repo_info.path)](https://@repo_info.domain/view/@repo_info.path)
</pre> </pre>
}, version_info, repo_count) }, version_info, repo_count)

View File

@ -0,0 +1,16 @@
@use super::base;
@use crate::statics::VersionInfo;
@(version_info: VersionInfo, repo_count: usize)
@:base("Master Branch not Found - Hits-of-Code Badges", "404 - Master Branch not Found", {
<p>
<big>Sorry</big>. I couldn't find the master branch of your repositroy.
Currently this service depends on the existence of a master branch. Please go
<a href="/">back to the homepage</a>.
</p>
<p>
If you think, this is a mistake on my side, please <a href="mailto:mail+hoc@@vbrandl.net">drop me a mail</a>.
</p>
}, version_info, repo_count)

80
vm.nix Normal file
View File

@ -0,0 +1,80 @@
# Nix configuration for a VM to run a custom configured Vim
#
# It is intended as an example of building a VM that builds Vim for testing
# and evaluation purposes. It does not represent a production or secure
# deployment.
{ sources ? import ./nix/sources.nix
, pkgs ? import sources.nixpkgs { }
, callPackage ? pkgs.callPackage
, config
, lib
, ...
}:
# config, pkgs, lib, ... }:
let
hoc = pkgs.callPackage ./default.nix { };
# hoc = cargoNix.rootCrate.build;
in
{
environment = {
systemPackages = with pkgs; [
(
hoc
# import ./default.nix
)
];
};
networking.hostName = "hoc"; # Define your hostname.
system.stateVersion = "19.09"; # The version of NixOS originally installed
# Set security options:
security = {
sudo = {
enable = true; # Enable sudo
wheelNeedsPassword = false; # Allow wheel members to run sudo without a passowrd
};
};
networking.firewall.allowedTCPPorts = [ 80 ];
# List services that you want to enable:
services.openssh = {
enable = true; # Enable the OpenSSH daemon.
#permitRootLogin = "yes"; # Probably want to change this in production
#challengeResponseAuthentication = true; # Probably want to change this in production
#passwordAuthentication = true; # Probably want to change this in production
openFirewall = true;
hostKeys = [
{
path = "/etc/ssh/ssh_host_ed25519_key"; # Generate a key for the vm
type = "ed25519"; # Use the current best key type
}
];
};
# Users of the Vim VM:
users.mutableUsers = false; # Remove any users not defined in here
users.users.root = {
password = "123456"; # Probably want to change this in production
};
# Misc groups:
users.groups.nixos.gid = 1000;
# NixOS users
users.users.nixos = {
isNormalUser = true;
uid = 1000;
group = "nixos";
extraGroups = [ "wheel" ];
password = "123456"; # Probably want to change this in production
};
}