all: lint build html release


test: build
	@clear
	@echo Testing features: \(ALL\)
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --all-features
	@echo Testing features: \(None\)
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test
	@echo Testing features: sm3
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm3
	@echo Testing features: insecure_md5
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features insecure_md5
	@echo Testing features: insecure_sha1
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features insecure_sha1
	@echo Testing features: sha2
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sha2
	@echo Testing features: hmac
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm3,insecure_md5,insecure_sha1,sha2,hmac
	@echo Testing features: sm4
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm4
	@echo Linting features: sm4,ecb
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm4,ecb
	@echo Linting features: sm4,cbc
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm4,cbc
	@echo Linting features: sm4,cfb
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm4,cfb
	@echo Linting features: sm4,ofb
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo test --no-default-features --no-doc-test --features sm4,ofb

lint:
	@clear
	@echo Linting features: \(None\)
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features
	@echo Linting features: sm3
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm3
	@echo Linting features: insecure_md5
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features insecure_md5
	@echo Linting features: insecure_sha1
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features insecure_sha1
	@echo Linting features: sha2
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sha2
	@echo Linting features: hmac
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm3,insecure_md5,insecure_sha1,sha2,hmac
	@echo Linting features: sm4
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm4
	@echo Linting features: sm4,ecb
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm4,ecb
	@echo Linting features: sm4,cbc
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm4,cbc
	@echo Linting features: sm4,cfb
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm4,cfb
	@echo Linting features: sm4,ofb
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clippy --no-default-features --features sm4,ofb

build:
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo build --no-default-features --all-features

release:
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo build --release --no-default-features

publish:
	@clear
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo publish --registry crates-io

html:
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo doc --no-deps --no-default-features --all-features

clean:
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo clean

update:
	@CARGO_NET_GIT_FETCH_WITH_CLI=true cargo update
