Skip to content

Commit

Permalink
Add linting, formatting and other checks
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ViViDboarder committed Jul 9, 2020
1 parent 2e5c4c5 commit 91d70e6
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 13 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
README.md
target/
scripts/
22 changes: 22 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -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
12 changes: 5 additions & 7 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -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"]
10 changes: 5 additions & 5 deletions Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -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

Expand All @@ -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 changes: 54 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -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) .
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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.
Expand Down
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
---
version: '3'
services:
ldap_sync:
Expand Down
8 changes: 8 additions & 0 deletions scripts/check-version.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 91d70e6

Please sign in to comment.