Add linting, formatting and other checks

This adds pre-commit hooks installable using the provided Makefile as
well as a new check to validate the version in the Cargo file matches
the git tag. This will be useful as a check before pushing releases.
This commit is contained in:
ViViDboarder 2020-07-09 12:04:05 -07:00
parent 2e5c4c5b55
commit 91d70e6bb8
8 changed files with 103 additions and 13 deletions

View File

@ -1,2 +1,3 @@
README.md
target/
scripts/

22
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,22 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.1.0
hooks:
- id: check-added-large-files
- id: check-yaml
- id: check-toml
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-merge-conflict
- repo: https://github.com/doublify/pre-commit-rust
rev: 14b3e118cfc36fb87d8d9cbd1305a2238fd85868
hooks:
- id: fmt
- id: cargo-check
- id: clippy
- repo: https://github.com/IamTheFij/docker-pre-commit
rev: v2.0.0
hooks:
- id: docker-compose-check
- id: hadolint

View File

@ -5,15 +5,13 @@ RUN USER=root cargo new --bin bitwarden_rs_ldap
WORKDIR /usr/src/bitwarden_rs_ldap
# Compile dependencies
COPY ./Cargo.toml ./Cargo.toml
COPY ./Cargo.lock ./Cargo.lock
RUN cargo build --release
# Remove temp src
RUN rm src/*.rs
COPY Cargo.toml Cargo.lock ./
RUN cargo build --locked --release
# Copy source and install
COPY ./src ./src
# Remove bins to make sure we rebuild
RUN rm ./target/release/deps/bitwarden_rs_ldap*
# Copy source and install
COPY src ./src
RUN cargo install --path .
CMD ["bitwarden_rs_ldap"]

View File

@ -1,4 +1,4 @@
FROM ekidd/rust-musl-builder AS builder
FROM ekidd/rust-musl-builder:1.33.0 AS builder
RUN USER=rust cargo init
@ -10,15 +10,15 @@ RUN cargo build --release
RUN rm src/*.rs
COPY ./src ./src
# Fix permissions on source
RUN sudo chown -R rust:rust /home/rust/src/src
RUN USER=root chown -R rust:rust /home/rust/src/src
RUN touch ./src/main.rs
RUN cargo build --release
FROM alpine:latest
RUN apk --no-cache add ca-certificates
FROM alpine:3
RUN apk --no-cache add ca-certificates=20191127-r4
COPY --from=builder \
/home/rust/src/target/x86_64-unknown-linux-musl/release/bitwarden_rs_ldap \
/usr/local/bin/
CMD /usr/local/bin/bitwarden_rs_ldap
CMD ["/usr/local/bin/bitwarden_rs_ldap"]

54
Makefile Normal file
View File

@ -0,0 +1,54 @@
DOCKER_TAG ?= bitwarden_rs_ldap_${USER}
.PHONY: all
all: test check release
# Default make target will run tests
.DEFAULT_GOAL = test
# Build debug version
target/debug/bitwarden_rs_ldap: src/
cargo build
# Build release version
target/release/bitwarden_rs_ldap: src/
cargo build --locked --release
.PHONY: debug
debug: target/debug/bitwarden_rs_ldap
.PHONY: release
release: target/release/bitwarden_rs_ldap
# Run debug version
.PHONY: run-debug
run-debug: target/debug/bitwarden_rs_ldap
target/debug/bitwarden_rs_ldap
# Run all tests
.PHONY: test
test:
cargo test
# Installs pre-commit hooks
.PHONY: install-hooks
install-hooks:
pre-commit install --install-hooks
# Checks files for encryption
.PHONY: check
check:
pre-commit run --all-files
# Checks that version matches the current tag
.PHONY: check-version
check-version:
./scripts/check-version.sh
.PHONY: clean
clean:
rm -f ./target
.PHONY: docker-build
docker-build:
docker build -f ./Dockerfile -t $(DOCKER_TAG) .

View File

@ -1,7 +1,7 @@
# bitwarden_rs_ldap
A simple LDAP connector for [bitwarden_rs](https://github.com/dani-garcia/bitwarden_rs)
After configuring, simply run `bitwarden_rs_ldap` and it will invite any users it finds in LDAP to your `bitwarden_rs` instance.
After configuring, run `bitwarden_rs_ldap` and it will invite any users it finds in LDAP to your `bitwarden_rs` instance.
## Deploying
@ -31,6 +31,12 @@ Configuration values are as follows:
|`ldap_sync_interval_seconds`|Integer|Optional|Number of seconds to wait between each LDAP request. Defaults to `60`|
|`ldap_sync_loop`|Boolean|Optional|Indicates whether or not syncing should be polled in a loop or done once. Defaults to `true`|
## Development
This repo has a predefined set of [pre-commit](https://pre-commit.com) rules. You can install pre-commit via any means you'd like. Once your system has `pre-commit` installed, you can run `make install-hooks` to ensure the hooks will run with every commit. You can also force running all hooks with `make check`.
For those less familiar with `cargo`, you can use the `make` targets that have been included for common tasks like running a debug version. `make run-debug` or building a release version `make release`.
## Testing
All testing is manual right now. First step is to set up Bitwarden and the LDAP server.

View File

@ -1,3 +1,4 @@
---
version: '3'
services:
ldap_sync:

8
scripts/check-version.sh Executable file
View File

@ -0,0 +1,8 @@
#! /bin/sh
CARGO_VERSION=$(cargo pkgid --offline | sed 's/.*#//')
GIT_VERSION=${GIT_VERSION:-$(git describe --tags --exact-match)}
if ! [ "v$CARGO_VERSION" = "$GIT_VERSION" ]; then
echo "ERROR: Cargo version (v$CARGO_VERSION) and git version ($GIT_VERSION) do not match"
exit 1
fi