fundamentum-portforwarding-proto-rust 0.4.0

Port forwarding proto bindings for rust usage.
Documentation
target_dir := "target"

project_name := "fundamentum-portforwarding-proto-rust"

# Build the default variant of this package, its doc and perform all available
# checks
default: build doc check

# Build all variants of this package, its doc and perform all available checks
all: build-all doc check

# Clean all products of this justfile
clean: clean-build

#----------
# Building
#----------

# Build all variants of this package.
build-all: build-debug-features build-debug

# Build the default variant of this package.
build: build-debug

# Clean any products of the 'build' task
clean-build:
    cargo clean

# Build the debug version of this package.
build-debug:
    cargo build

# Build a debug version of this package for the various possible active feature
# possibilities
build-debug-features: build-debug-features-none build-debug-features-with-server build-debug-features-with-client

# Build a debug version of this package with all features disabled
build-debug-features-none:
    cargo build --no-default-features

# Build a debug version of this package with only the server feature active
build-debug-features-with-server:
    cargo build --no-default-features --features with-server

# Build a debug version of this package with only the client feature active
build-debug-features-with-client:
    cargo build --no-default-features --features with-client

#----------
# Checks
#----------

# Run all available checks
check: check-static check-test

# Run cargo test with all features enabled
check-test:
    cargo test --all-features

# Run cargo test
check-test-quick:
    cargo test

# Run all static checks (i.e.: all checks but without any tests).
check-static: check-formatting check-clippy check-doc-readme

# Check the formatting
check-formatting:
    cargo fmt --all -- --check

# Check clippy
check-clippy:
    cargo clippy --all

#------
# Docs
#------

# Build this package's documentation
doc: doc-package doc-readme

# Clean any doc related build products
clean-doc: clean-doc-package

# Generates this package's full doc (including that of all its
# dependencies)
doc-package:
    cargo doc --all-features

# Generates this package's full doc and launch a browser to it
doc-package-preview:
    cargo doc --all-features --open

# Generates only this package's doc (without any dependencies)
doc-package-only:
    cargo doc --all-features --no-deps

# Clean this package's doc
clean-doc-package:
    cargo clean --doc

#----------------------
# README.md generation
#----------------------

# Generate README.md for a single crate
doc-readme: _build-readme
    #!/usr/bin/env bash
    set -euo pipefail
    cp "{{target_dir}}/README.md" "README.md"

# Check README.md for a single crate
check-doc-readme: _build-readme
    #!/usr/bin/env bash
    set -euo pipefail
    diff -q "{{target_dir}}/README.md" "README.md" || ( \
        echo -e "\033[1;31mError:\033[0m README.md for {{project_name}} needs to be regenerated."; \
        echo -e "       Run 'just doc-readme' to regenerate.\n"; \
        exit 1 \
    )

# Builds README.md for a single crate
_build-readme:
    #!/usr/bin/env bash
    set -e -o pipefail
    mkdir -p {{target_dir}}
    echo "Building README.md for {{project_name}}"
    cargo readme > {{target_dir}}/README.md

#----------
# Publish
#----------

# Publish this package to crates.io
publish:
    echo ${CARGO_REGISTRY_TOKEN} | cargo login
    cargo publish

#---------------
# Misc actions
#---------------

# Format the rust code base
format:
    cargo fmt --all