Compare commits

...

55 Commits

Author SHA1 Message Date
1b9e04f41b chore: Bump version (v0.25.0)
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-28 14:53:12 +02:00
ebc5c26a6f Merge pull request #499 from vbrandl/fix/replace-deprecated-badge
All checks were successful
continuous-integration/drone/push Build is passing
Replace deprecated `badge` crate with `badgers`
2022-09-28 10:51:58 +02:00
d5e30ba727 Replace deprecated badge crate with badgers 2022-09-28 10:43:49 +02:00
cdbf3e5c06 Merge pull request #498 from vbrandl/dependabot/cargo/tokio-1.21.2
chore(deps): Bump tokio from 1.21.1 to 1.21.2
2022-09-28 08:37:55 +02:00
4012e835a6 chore(deps): Bump tokio from 1.21.1 to 1.21.2
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.21.1 to 1.21.2.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.21.1...tokio-1.21.2)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-28 04:12:29 +00:00
481f4d5e3d chore: Bump version number (v0.24.0)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-09-23 15:39:50 +02:00
4df06b344c Merge remote-tracking branch 'gvb/master'
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-23 15:32:56 +02:00
47b6b27e59 Merge pull request #497 from vbrandl/dependabot/cargo/serde-1.0.145
chore(deps): Bump serde from 1.0.144 to 1.0.145
2022-09-23 12:27:17 +02:00
21cb4d15a5 chore(deps): Bump serde from 1.0.144 to 1.0.145
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.144 to 1.0.145.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.144...v1.0.145)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-23 04:13:09 +00:00
c68b5812c2 Merge pull request #496 from vbrandl/dependabot/cargo/reqwest-0.11.12
chore(deps): Bump reqwest from 0.11.11 to 0.11.12
2022-09-21 09:40:23 +02:00
c4f852f9d4 Merge pull request #495 from vbrandl/dependabot/cargo/tracing-actix-web-0.6.1
chore(deps): Bump tracing-actix-web from 0.6.0 to 0.6.1
2022-09-21 09:39:29 +02:00
f104bf9ce6 chore(deps): Bump reqwest from 0.11.11 to 0.11.12
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.11.11 to 0.11.12.
- [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.11.11...v0.11.12)

---
updated-dependencies:
- dependency-name: reqwest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-21 04:15:07 +00:00
e2a4d41633 chore(deps): Bump tracing-actix-web from 0.6.0 to 0.6.1
Bumps [tracing-actix-web](https://github.com/LukeMathWalker/tracing-actix-web) from 0.6.0 to 0.6.1.
- [Release notes](https://github.com/LukeMathWalker/tracing-actix-web/releases)
- [Commits](https://github.com/LukeMathWalker/tracing-actix-web/compare/v0.6.0...v0.6.1)

---
updated-dependencies:
- dependency-name: tracing-actix-web
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-21 04:15:01 +00:00
8fec5b457f Merge pull request #494 from vbrandl/dependabot/cargo/dotenvy-0.15.5
chore(deps): Bump dotenvy from 0.15.3 to 0.15.5
2022-09-20 19:20:57 +02:00
3eaba6b87c chore(deps): Bump dotenvy from 0.15.3 to 0.15.5
Bumps [dotenvy](https://github.com/allan2/dotenvy) from 0.15.3 to 0.15.5.
- [Release notes](https://github.com/allan2/dotenvy/releases)
- [Changelog](https://github.com/allan2/dotenvy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/allan2/dotenvy/compare/v0.15.3...v0.15.5)

---
updated-dependencies:
- dependency-name: dotenvy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 04:14:06 +00:00
6ca1eafe60 Merge pull request #493 from vbrandl/dependabot/cargo/ructe-0.15.0
chore(deps): Bump ructe from 0.14.2 to 0.15.0
2022-09-19 09:00:59 +02:00
66fa759bb6 chore(deps): Bump ructe from 0.14.2 to 0.15.0
Bumps [ructe](https://github.com/kaj/ructe) from 0.14.2 to 0.15.0.
- [Release notes](https://github.com/kaj/ructe/releases)
- [Changelog](https://github.com/kaj/ructe/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kaj/ructe/compare/v0.14.2...v0.15.0)

---
updated-dependencies:
- dependency-name: ructe
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-19 04:23:37 +00:00
84439d2d71 Merge pull request #492 from vbrandl/dependabot/cargo/tokio-1.21.1
chore(deps): Bump tokio from 1.21.0 to 1.21.1
2022-09-15 15:38:24 +02:00
bed16ef4fb chore(deps): Bump tokio from 1.21.0 to 1.21.1
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.21.0 to 1.21.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.21.0...tokio-1.21.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-14 04:16:21 +00:00
e10e9250a1 Merge pull request #491 from vbrandl/dependabot/cargo/actix-web-4.2.0
chore(deps): Bump actix-web from 4.1.0 to 4.2.0
2022-09-12 13:17:38 +02:00
e9accd6be8 Update to actix-web v4.2.1 2022-09-12 13:08:42 +02:00
218f55237a chore(deps): Bump actix-web from 4.1.0 to 4.2.0
Bumps [actix-web](https://github.com/actix/actix-web) from 4.1.0 to 4.2.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-v4.1.0...web-v4.2.0)

---
updated-dependencies:
- dependency-name: actix-web
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-12 04:12:47 +00:00
f679eaa1cd Merge pull request #490 from vbrandl/dependabot/cargo/tokio-1.21.0
chore(deps): Bump tokio from 1.20.1 to 1.21.0
2022-09-08 19:18:38 +02:00
fc668d961a chore(deps): Bump tokio from 1.20.1 to 1.21.0
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.20.1 to 1.21.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.20.1...tokio-1.21.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 13:36:19 +00:00
b4aaa0bcf5 Merge pull request #489 from vbrandl/fix/replace-dotenv
Use dotenvy over unmaintained dotenv
2022-08-31 11:32:33 +02:00
4a94af0f75 Use dotenvy over unmaintained dotenv 2022-08-31 11:09:23 +02:00
41205a4404 Merge pull request #486 from vbrandl/dependabot/cargo/futures-0.3.24
chore(deps): Bump futures from 0.3.23 to 0.3.24
2022-08-31 09:37:32 +02:00
9c7f7a3bdf chore(deps): Bump futures from 0.3.23 to 0.3.24
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.23 to 0.3.24.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.23...0.3.24)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-30 04:27:39 +00:00
db510c709f Merge pull request #485 from vbrandl/dependabot/cargo/awc-3.0.1
chore(deps): Bump awc from 3.0.0 to 3.0.1
2022-08-29 10:43:52 +02:00
c6319dd5eb chore(deps): Bump awc from 3.0.0 to 3.0.1
Bumps [awc](https://github.com/actix/actix-web) from 3.0.0 to 3.0.1.
- [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/awc-v3.0.0...awc-v3.0.1)

---
updated-dependencies:
- dependency-name: awc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-25 04:12:04 +00:00
42c094a7d7 chore: Bump version (v0.23.0)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2022-08-23 12:19:00 +02:00
330c21b12c Merge pull request #484 from vbrandl/fix/docker-build
All checks were successful
continuous-integration/drone/push Build is passing
Use different rust-musl image
2022-08-23 11:39:27 +02:00
9a0d8dfc37 Use different rust-musl image
All checks were successful
continuous-integration/drone/push Build is passing
2022-08-23 11:36:08 +02:00
633873814b Merge pull request #480 from vbrandl/feature/ructe-static
Use ructe static file support to serve static files with hashes and caching
2022-08-23 10:09:02 +02:00
95c54b95c1 Remove unnecessary testcase 2022-08-23 09:45:05 +02:00
a68a49f6ae Merge branch 'master' into feature/ructe-static 2022-08-22 15:34:49 +02:00
6c7cb9df97 Merge pull request #478 from Masynchin/count
Some checks failed
continuous-integration/drone/push Build is failing
Refactor count_repositories
2022-08-22 15:34:32 +02:00
0a4ec4ecd4 Run fmt 2022-08-22 16:20:24 +03:00
3ead212fe7 Add tests for count_repositories 2022-08-22 16:12:21 +03:00
b001db6558 Merge branch 'master' into feature/ructe-static 2022-08-22 12:28:56 +02:00
5543301140 Merge pull request #477 from vbrandl/feature/branch-in-generator
Allow providing a branch name in generator
2022-08-22 11:57:05 +02:00
028795effa Merge branch 'master' into feature/branch-in-generator 2022-08-22 11:53:39 +02:00
23303d818a Merge branch 'master' into feature/ructe-static 2022-08-22 11:50:45 +02:00
886caeca1c Merge pull request #476 from vbrandl/dependabot/cargo/futures-0.3.23
chore(deps): Bump futures from 0.3.21 to 0.3.23
2022-08-22 11:47:03 +02:00
6fbd437f34 Merge pull request #482 from vbrandl/dependabot/cargo/serde_json-1.0.85
chore(deps): Bump serde_json from 1.0.83 to 1.0.85
2022-08-22 11:46:55 +02:00
13095b0445 Merge pull request #483 from vbrandl/dependabot/cargo/serde-1.0.144
chore(deps): Bump serde from 1.0.143 to 1.0.144
2022-08-22 11:46:46 +02:00
6c8a635e12 chore(deps): Bump futures from 0.3.21 to 0.3.23
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.21 to 0.3.23.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.21...0.3.23)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 09:36:58 +00:00
d0ea0c8a68 chore(deps): Bump serde_json from 1.0.83 to 1.0.85
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.83 to 1.0.85.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.83...v1.0.85)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 09:36:57 +00:00
6bd843d9b8 chore(deps): Bump serde from 1.0.143 to 1.0.144
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.143 to 1.0.144.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.143...v1.0.144)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 09:36:47 +00:00
f4206140b3 Merge pull request #481 from vbrandl/dependabot/cargo/ructe-0.14.2
chore(deps): Bump ructe from 0.14.0 to 0.14.2
2022-08-22 11:35:51 +02:00
7139663544 Add docs to count_repositories 2022-08-22 10:51:57 +03:00
0c9ef2abd2 chore(deps): Bump ructe from 0.14.0 to 0.14.2
Bumps [ructe](https://github.com/kaj/ructe) from 0.14.0 to 0.14.2.
- [Release notes](https://github.com/kaj/ructe/releases)
- [Changelog](https://github.com/kaj/ructe/blob/master/CHANGELOG.md)
- [Commits](https://github.com/kaj/ructe/compare/v0.14.0...v0.14.2)

---
updated-dependencies:
- dependency-name: ructe
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 04:11:39 +00:00
d4248df45a Use helper struct to reduce template parameters 2022-08-19 10:34:37 +02:00
4b5d962c2c Refactor count_repositories 2022-08-18 17:23:09 +03:00
dbbbdad3fa Allow providing a branch name in generator 2022-08-18 14:07:07 +02:00
13 changed files with 250 additions and 146 deletions

189
Cargo.lock generated
View File

@ -2,6 +2,16 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "ab_glyph"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04a9283dace1c41c265496614998d5b9c4a97b3eb770e804f007c5144bf03f2b"
dependencies = [
"ab_glyph_rasterizer",
"owned_ttf_parser",
]
[[package]]
name = "ab_glyph_rasterizer"
version = "0.1.5"
@ -27,16 +37,16 @@ dependencies = [
[[package]]
name = "actix-http"
version = "3.1.0"
version = "3.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd2e9f6794b5826aff6df65e3a0d0127b271d1c03629c774238f3582e903d4e4"
checksum = "0c83abf9903e1f0ad9973cc4f7b9767fd5a03a583f51a5b7a339e07987cd2724"
dependencies = [
"actix-codec",
"actix-rt",
"actix-service",
"actix-utils",
"ahash",
"base64 0.13.0",
"base64",
"bitflags",
"brotli",
"bytes",
@ -155,9 +165,9 @@ dependencies = [
[[package]]
name = "actix-web"
version = "4.1.0"
version = "4.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a27e8fe9ba4ae613c21f677c2cfaf0696c3744030c6f485b34634e502d6bb379"
checksum = "d48f7b6534e06c7bfc72ee91db7917d4af6afe23e7d223b51e68fffbb21e96b9"
dependencies = [
"actix-codec",
"actix-http",
@ -177,6 +187,7 @@ dependencies = [
"encoding_rs",
"futures-core",
"futures-util",
"http",
"itoa",
"language-tags",
"log",
@ -195,9 +206,9 @@ dependencies = [
[[package]]
name = "actix-web-codegen"
version = "4.0.1"
version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f270541caec49c15673b0af0e9a00143421ad4f118d2df7edcb68b627632f56"
checksum = "1fa9362663c8643d67b2d5eafba49e4cb2c8a053a29ed00a0bea121f17c76b13"
dependencies = [
"actix-router",
"proc-macro2",
@ -280,9 +291,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "awc"
version = "3.0.0"
version = "3.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "65c60c44fbf3c8cee365e86b97d706e513b733c4eeb16437b45b88d2fffe889a"
checksum = "80ca7ff88063086d2e2c70b9f3b29b2fcd999bac68ac21731e66781970d68519"
dependencies = [
"actix-codec",
"actix-http",
@ -291,7 +302,7 @@ dependencies = [
"actix-tls",
"actix-utils",
"ahash",
"base64 0.13.0",
"base64",
"bytes",
"cfg-if",
"cookie",
@ -313,22 +324,16 @@ dependencies = [
]
[[package]]
name = "badge"
version = "0.3.0"
name = "badgers"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d0228ae65b89e72921e86c19c3574da63bda0628e9d7da5e164f569bbf4e477d"
checksum = "26315f90cbcd241425a27dcc1140dbc85505e87ddc90f324067df6a158572fb3"
dependencies = [
"base64 0.12.3",
"ab_glyph",
"base64",
"once_cell",
"rusttype",
]
[[package]]
name = "base64"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
[[package]]
name = "base64"
version = "0.13.0"
@ -558,6 +563,26 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "dirs"
version = "4.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
dependencies = [
"dirs-sys",
]
[[package]]
name = "dirs-sys"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
dependencies = [
"libc",
"redox_users",
"winapi",
]
[[package]]
name = "dlv-list"
version = "0.3.0"
@ -565,10 +590,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257"
[[package]]
name = "dotenv"
version = "0.15.0"
name = "dotenvy"
version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
checksum = "ed9155c8f4dc55c7470ae9da3f63c6785245093b3f6aeb0f5bf2e968efbba314"
dependencies = [
"dirs",
]
[[package]]
name = "either"
@ -669,9 +697,9 @@ dependencies = [
[[package]]
name = "futures"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
checksum = "7f21eda599937fba36daeb58a22e8f5cee2d14c4a17b5b7739c7c8e5e3b8230c"
dependencies = [
"futures-channel",
"futures-core",
@ -684,9 +712,9 @@ dependencies = [
[[package]]
name = "futures-channel"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050"
dependencies = [
"futures-core",
"futures-sink",
@ -694,15 +722,15 @@ dependencies = [
[[package]]
name = "futures-core"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf"
[[package]]
name = "futures-executor"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab"
dependencies = [
"futures-core",
"futures-task",
@ -711,15 +739,15 @@ dependencies = [
[[package]]
name = "futures-io"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68"
[[package]]
name = "futures-macro"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
checksum = "42cd15d1c7456c04dbdf7e88bcd69760d74f3a798d6444e16974b505b0e62f17"
dependencies = [
"proc-macro2",
"quote",
@ -728,21 +756,21 @@ dependencies = [
[[package]]
name = "futures-sink"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
checksum = "21b20ba5a92e727ba30e72834706623d94ac93a725410b6a6b6fbc1b07f7ba56"
[[package]]
name = "futures-task"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1"
[[package]]
name = "futures-util"
version = "0.3.21"
version = "0.3.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90"
dependencies = [
"futures-channel",
"futures-core",
@ -868,15 +896,15 @@ dependencies = [
[[package]]
name = "hoc"
version = "0.22.4"
version = "0.25.0"
dependencies = [
"actix-rt",
"actix-web",
"awc",
"badge",
"badgers",
"bytes",
"config",
"dotenv",
"dotenvy",
"futures",
"git2",
"lazy_static",
@ -1207,9 +1235,9 @@ dependencies = [
[[package]]
name = "mio"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"
checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
dependencies = [
"libc",
"log",
@ -1339,9 +1367,9 @@ dependencies = [
[[package]]
name = "owned_ttf_parser"
version = "0.6.0"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3"
checksum = "05e6affeb1632d6ff6a23d2cd40ffed138e82f1532571a26f527c8a284bb2fbb"
dependencies = [
"ttf-parser",
]
@ -1555,6 +1583,17 @@ dependencies = [
"bitflags",
]
[[package]]
name = "redox_users"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
"getrandom",
"redox_syscall",
"thiserror",
]
[[package]]
name = "regex"
version = "1.5.6"
@ -1592,11 +1631,11 @@ dependencies = [
[[package]]
name = "reqwest"
version = "0.11.11"
version = "0.11.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92"
checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc"
dependencies = [
"base64 0.13.0",
"base64",
"bytes",
"encoding_rs",
"futures-core",
@ -1608,10 +1647,10 @@ dependencies = [
"hyper-tls",
"ipnet",
"js-sys",
"lazy_static",
"log",
"mime",
"native-tls",
"once_cell",
"percent-encoding",
"pin-project-lite",
"serde",
@ -1633,18 +1672,18 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a"
dependencies = [
"base64 0.13.0",
"base64",
"bitflags",
"serde",
]
[[package]]
name = "ructe"
version = "0.14.0"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef88d8c2492d7266e264b31e0ffcf1149d5ba183bccd3abaf1483ee905fc85de"
checksum = "85517cd381cf0c34694881d8aaf173107c6af7670e66cec18d7a1a8bfce3b758"
dependencies = [
"base64 0.13.0",
"base64",
"bytecount",
"itertools",
"md5",
@ -1671,16 +1710,6 @@ dependencies = [
"semver",
]
[[package]]
name = "rusttype"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59"
dependencies = [
"ab_glyph_rasterizer",
"owned_ttf_parser",
]
[[package]]
name = "rustversion"
version = "1.0.6"
@ -1740,18 +1769,18 @@ checksum = "a41d061efea015927ac527063765e73601444cdc344ba855bc7bd44578b25e1c"
[[package]]
name = "serde"
version = "1.0.143"
version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553"
checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.143"
version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391"
checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
dependencies = [
"proc-macro2",
"quote",
@ -1760,9 +1789,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.83"
version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7"
checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
dependencies = [
"itoa",
"ryu",
@ -1933,16 +1962,15 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
version = "1.20.1"
version = "1.21.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581"
checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099"
dependencies = [
"autocfg",
"bytes",
"libc",
"memchr",
"mio",
"once_cell",
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
@ -2004,14 +2032,13 @@ dependencies = [
[[package]]
name = "tracing-actix-web"
version = "0.6.0"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0b2cd6e5074ff67679a0ff68bc6333be78d29910ba7cd295d948aa5ff152032"
checksum = "ee7247a77b494ee07bda43bce40a33e76f885662f11b3dda9894ecfdbe31fa06"
dependencies = [
"actix-web",
"pin-project",
"tracing",
"tracing-futures",
"uuid",
]
@ -2100,9 +2127,9 @@ checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
[[package]]
name = "ttf-parser"
version = "0.6.2"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc"
checksum = "7b3e06c9b9d80ed6b745c7159c40b311ad2916abb34a49e9be2653b90db0d8dd"
[[package]]
name = "typenum"

View File

@ -1,6 +1,6 @@
[package]
name = "hoc"
version = "0.22.4"
version = "0.25.0"
authors = ["Valentin Brandl <vbrandl@riseup.net>"]
edition = "2018"
build = "build.rs"
@ -14,34 +14,34 @@ name = "hoc"
[dependencies]
actix-rt = "2.7.0"
actix-web = "4.1.0"
badge = "0.3.0"
actix-web = "4.2.1"
badgers = "1.0.0"
bytes = "1.2.1"
config = { version = "0.13.2", features = ["toml"] }
dotenv = "0.15.0"
futures = "0.3.21"
dotenvy = "0.15.5"
futures = "0.3.24"
git2 = "0.15.0"
lazy_static = "1.4.0"
mime = "0.3"
number_prefix = "0.4.0"
openssl-probe = "0.1.5"
reqwest = "0.11.11"
serde = "1.0.143"
reqwest = "0.11.12"
serde = "1.0.145"
serde_derive = "1.0.137"
serde_json = "1.0.83"
serde_json = "1.0.85"
tracing = "0.1.36"
tracing-actix-web = "0.6.0"
tracing-actix-web = "0.6.1"
tracing-bunyan-formatter = "0.3.3"
tracing-futures = "0.2.5"
tracing-log = "0.1.3"
tracing-subscriber = { version = "0.3.15", features = ["registry", "env-filter"] }
[build-dependencies]
ructe = { version = "0.14.0", features = ["mime03"] }
ructe = { version = "0.15.0", features = ["mime03"] }
vergen = { version = "7.3.1", default-features = false, features = ["git"] }
[dev-dependencies]
awc = "3.0.0"
ructe = "0.14.0"
awc = "3.0.1"
ructe = "0.15.0"
tempfile = "3.3.0"
tokio = "1.20.1"
tokio = "1.21.2"

View File

@ -1,10 +1,13 @@
FROM ekidd/rust-musl-builder:stable as builder
# FROM ekidd/rust-musl-builder:stable as builder
FROM clux/muslrust:stable as builder
# create new cargo project
RUN USER=rust cargo init --lib
RUN cargo init --lib
# RUN USER=rust cargo init --lib
RUN echo 'fn main() { println!("Hello, world!"); }' >> src/main.rs
# copy build config
COPY --chown=rust ./Cargo.lock ./Cargo.lock
# COPY --chown=rust ./Cargo.lock ./Cargo.lock
COPY ./Cargo.lock ./Cargo.lock
COPY ./Cargo.toml ./Cargo.toml
# HACK: remove build-dependencies so we have at least some caching
RUN head -n $(($(grep -n "\[build-dependencies\]" Cargo.toml | cut -f1 -d:) - 1)) Cargo.toml | sed '/build.rs/d' > \
@ -38,6 +41,7 @@ USER hoc
# FROM scratch
# COPY --from=linuxkit/ca-certificates:v0.7 / /
COPY --from=builder /home/rust/src/target/x86_64-unknown-linux-musl/release/hoc .
# COPY --from=builder /home/rust/src/target/x86_64-unknown-linux-musl/release/hoc .
COPY --from=builder /volume/target/x86_64-unknown-linux-musl/release/hoc .
ENTRYPOINT ["/home/hoc/hoc"]

View File

@ -1,27 +1,30 @@
use crate::error::Result;
use std::{fs::read_dir, path::Path, result::Result as StdResult};
use std::{
fs::{read_dir, ReadDir},
iter::once,
path::Path,
result::Result as StdResult,
};
/// The on disk layout for served repos is `<service>/<user>/<repo>`
/// so to get the amount of repos, we just have to count everything
/// in `*/*/*` to get the count.
#[instrument]
pub(crate) fn count_repositories<P>(repo_path: P) -> Result<usize>
pub fn count_repositories<P>(repo_path: P) -> Result<usize>
where
P: AsRef<Path> + std::fmt::Debug,
{
trace!("Counting repositories");
std::fs::create_dir_all(&repo_path)?;
Ok(read_dir(repo_path)?
.filter_map(StdResult::ok)
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
.map(|entry| read_dir(entry.path()))
.filter_map(StdResult::ok)
.flat_map(|dir| {
dir.filter_map(StdResult::ok)
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
})
.map(|entry| read_dir(entry.path()))
.filter_map(StdResult::ok)
.flat_map(|dir| {
dir.filter_map(StdResult::ok)
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
})
Ok(once(read_dir(repo_path)?)
.flat_map(sub_directories)
.flat_map(sub_directories)
.flat_map(sub_directories)
.count())
}
fn sub_directories(dir: ReadDir) -> impl Iterator<Item = ReadDir> {
dir.filter_map(StdResult::ok)
.filter(|entry| entry.file_type().map(|ft| ft.is_dir()).unwrap_or(false))
.filter_map(|entry| read_dir(entry.path()).ok())
}

View File

@ -5,7 +5,7 @@ use std::fmt;
pub(crate) type Result<T> = std::result::Result<T, Error>;
#[derive(Debug)]
pub(crate) enum Error {
pub enum Error {
Badge(String),
Client(reqwest::Error),
Git(git2::Error),

View File

@ -11,7 +11,7 @@ extern crate tracing;
mod cache;
pub mod config;
mod count;
pub mod count;
mod error;
mod service;
mod statics;
@ -24,7 +24,7 @@ use crate::{
error::{Error, Result},
service::{Bitbucket, FormService, GitHub, Gitlab, Service, Sourcehut},
statics::{CLIENT, VERSION_INFO},
template::RepoInfo,
template::{RepoGeneratorInfo, RepoInfo},
};
use actix_web::{
dev::Server,
@ -32,7 +32,7 @@ use actix_web::{
middleware::{self, TrailingSlash},
web, App, HttpResponse, HttpServer, Responder,
};
use badge::{Badge, BadgeOptions};
use badgers::{Badge, BadgeOptions};
use git2::{BranchType, Repository};
use number_prefix::NumberPrefix;
use std::{
@ -56,6 +56,7 @@ struct GeneratorForm<'a> {
service: FormService,
user: Cow<'a, str>,
repo: Cow<'a, str>,
branch: Option<Cow<'a, str>>,
}
#[derive(Debug)]
@ -438,16 +439,23 @@ async fn generate(
state: web::Data<State>,
repo_count: web::Data<AtomicUsize>,
) -> Result<HttpResponse> {
let repo = format!("{}/{}", params.user, params.repo);
let mut buf = Vec::new();
let repo_info = RepoGeneratorInfo {
service: params.service,
user: &params.user,
repo: &params.repo,
branch: params
.branch
.as_deref()
.filter(|s| !s.is_empty())
.unwrap_or("master"),
};
templates::generate(
&mut buf,
VERSION_INFO,
repo_count.load(Ordering::Relaxed),
&state.settings.base_url,
params.service.url(),
params.service.service(),
&repo,
&repo_info,
)?;
Ok(HttpResponse::Ok().content_type("text/html").body(buf))

View File

@ -3,7 +3,7 @@ use hoc::{config::Settings, telemetry};
use std::net::TcpListener;
fn init() {
dotenv::dotenv().ok();
dotenvy::dotenv().ok();
openssl_probe::init_ssl_cert_env_vars();
telemetry::init_subscriber(telemetry::get_subscriber("hoc", "info"))

View File

@ -28,8 +28,8 @@ pub(crate) trait Service: Sized + 'static {
}
}
#[derive(Deserialize, Serialize)]
pub(crate) enum FormService {
#[derive(Deserialize, Serialize, Clone, Copy)]
pub enum FormService {
#[serde(rename = "github")]
GitHub,
#[serde(rename = "gitlab")]

View File

@ -1,3 +1,5 @@
use crate::service::FormService;
pub struct RepoInfo<'a> {
pub commit_url: &'a str,
pub commits: u64,
@ -9,3 +11,10 @@ pub struct RepoInfo<'a> {
pub url: &'a str,
pub branch: &'a str,
}
pub struct RepoGeneratorInfo<'a> {
pub service: FormService,
pub user: &'a str,
pub repo: &'a str,
pub branch: &'a str,
}

View File

@ -1,16 +1,16 @@
@use super::base;
@use crate::statics::VersionInfo;
@use crate::{statics::VersionInfo, template::RepoGeneratorInfo};
@(version_info: VersionInfo, repo_count: usize, base_url: &str, url: &str, service: &str, path: &str)
@(version_info: VersionInfo, repo_count: usize, base_url: &str, repo_info: &RepoGeneratorInfo)
@:base("Hits-of-Code Badges", "Badge Generator", {
<p>
Here is the markdown for the badge for <a href="https://@url/@path">@url/@path</a>
Here is the markdown for the badge for <a href="https://@repo_info.service.url()/@repo_info.user/@repo_info.repo">@repo_info.user/@repo_info.repo</a>
</p>
<pre>
[![Hits-of-Code](@base_url/@service/@path)](@base_url/@service/@path/view)
[![Hits-of-Code](@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo?branch=@repo_info.branch)](@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo/view?branch=@repo_info.branch)
</pre>
<p>
@ -18,6 +18,6 @@ It will be rendered like this
</p>
<pre>
<a href="@base_url/@service/@path/view"><img src="@base_url/@service/@path" alt="example badge" /></a>
<a href="@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo/view?branch=@repo_info.branch"><img src="@base_url/@repo_info.service.service()/@repo_info.user/@repo_info.repo?branch=@repo_info.branch" alt="example badge" /></a>
</pre>
}, version_info, repo_count)

View File

@ -80,6 +80,8 @@ the lines of
<input name="user" id="user" type="text" placeholder="user" />
<label>/</label>
<input name="repo" id="repo" type="text" placeholder="repository" />
<label>:</label>
<input name="branch" id="branch" type="text" placeholder="branch (defaults to `master`)" />
<button type="submit">Generate</button>
</form>

66
tests/count.rs Normal file
View File

@ -0,0 +1,66 @@
use hoc::count::count_repositories;
use tempfile::TempDir;
#[test]
fn no_repos() {
let repos = TempDir::new().unwrap();
assert_eq!(0, count_repositories(&repos).unwrap())
}
#[test]
fn no_repos_for_provider() {
let repos = TempDir::new().unwrap();
let _provider = TempDir::new_in(&repos).unwrap();
assert_eq!(0, count_repositories(&repos).unwrap())
}
#[test]
fn no_repos_for_owner() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let _owner = TempDir::new_in(&provider).unwrap();
assert_eq!(0, count_repositories(&repos).unwrap())
}
#[test]
fn one_repo_for_owner() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let owner = TempDir::new_in(&provider).unwrap();
let _repo = TempDir::new_in(&owner).unwrap();
assert_eq!(1, count_repositories(&repos).unwrap())
}
#[test]
fn two_repos_for_owner() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let owner = TempDir::new_in(&provider).unwrap();
let _repo1 = TempDir::new_in(&owner).unwrap();
let _repo2 = TempDir::new_in(&owner).unwrap();
assert_eq!(2, count_repositories(&repos).unwrap())
}
#[test]
fn two_repos_for_two_providers() {
let repos = TempDir::new().unwrap();
let provider1 = TempDir::new_in(&repos).unwrap();
let owner1 = TempDir::new_in(&provider1).unwrap();
let _repo1 = TempDir::new_in(&owner1).unwrap();
let provider2 = TempDir::new_in(&repos).unwrap();
let owner2 = TempDir::new_in(&provider2).unwrap();
let _repo2 = TempDir::new_in(&owner2).unwrap();
assert_eq!(2, count_repositories(&repos).unwrap())
}
#[test]
fn two_subdirs_in_one_repo() {
let repos = TempDir::new().unwrap();
let provider = TempDir::new_in(&repos).unwrap();
let owner = TempDir::new_in(&provider).unwrap();
let repo = TempDir::new_in(&owner).unwrap();
let _subdir1 = TempDir::new_in(&repo).unwrap();
let _subdir2 = TempDir::new_in(&repo).unwrap();
assert_eq!(1, count_repositories(&repos).unwrap())
}

View File

@ -14,18 +14,3 @@ async fn favicon() {
assert!(response.status().is_success());
}
#[actix_rt::test]
async fn tacit_css() {
let test_app = util::spawn_app().await;
let client = awc::Client::default();
let response = client
.get(&format!("{}/tacit-css.min.css", test_app.address))
.send()
.await
.expect("Failed to execute request");
assert!(response.status().is_success());
}