From e6a6c0e18bbdea67cbbc3a15ef8b59582475fd7c Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Wed, 26 Jun 2024 23:02:11 +0300
Subject: [PATCH] chore: Add used utility files
Signed-off-by: Awiteb
---
Justfile | 37 ++++++++++++++++++
cliff.toml | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++++
sumi.toml | 57 +++++++++++++++++++++++++++
3 files changed, 204 insertions(+)
create mode 100644 Justfile
create mode 100644 cliff.toml
create mode 100644 sumi.toml
diff --git a/Justfile b/Justfile
new file mode 100644
index 0000000..0af9ced
--- /dev/null
+++ b/Justfile
@@ -0,0 +1,37 @@
+# This justfile is for the contrbutors of this project, not for the end user.
+#
+# Requirements for this justfile:
+# - Linux distribution
+# - just (Of course)
+# - cargo (For the build and tests)
+
+set shell := ["/usr/bin/bash", "-c"]
+
+JUST_EXECUTABLE := "just -u -f " + justfile()
+header := "Available tasks:\n"
+# Get the MSRV from the Cargo.toml
+msrv := `cat Cargo.toml | grep "rust-version" | sed 's/.*"\(.*\)".*/\1/'`
+
+
+_default:
+ @{{JUST_EXECUTABLE}} --list-heading "{{header}}" --list
+
+# Run the CI
+@ci: && msrv
+ cargo build --all-targets
+ cargo fmt --all -- --check
+ cargo clippy --all-targets -- -D warnings
+
+# Check that the current MSRV is correct
+@msrv:
+ rustup toolchain install {{msrv}}
+ echo "Checking MSRV ({{msrv}})"
+ cargo +{{msrv}} check -q --workspace
+ echo "MSRV is correct"
+
+run:
+ docker-compose up -d db
+ RUST_LOG=debug cargo run -p oxidetalis -- --config config.toml
+
+[private]
+alias r := run
diff --git a/cliff.toml b/cliff.toml
new file mode 100644
index 0000000..165cb70
--- /dev/null
+++ b/cliff.toml
@@ -0,0 +1,110 @@
+[changelog]
+body = """
+{# Check if there is a `BREAKING-CHANGE` footer in the message or not #}\
+{% macro is_breaking(commit) %}\
+ {{"BREAKING-CHANGE" in commit.message}}\
+{% endmacro is_breaking %}\
+
+{# Return the commit header #}\
+{% macro commit_header(commit) %}\
+ {{commit.message | split(pat="\n") | nth(n=0) | upper_first }}\
+{% endmacro commit_header %}\
+
+{# Return the `BREAKING-CHANGE` footer message #}\
+{% macro bc_des(commit) %}\
+ {% set lines = [] %}\
+ {% set found_breaking = false %}\
+ {% for line in commit.message | split(pat="\n") %}\
+ {% if found_breaking and line is not containing(":") %}\
+ {% set_global lines = lines | concat(with=line) %}\
+ {% elif found_breaking and line is containing(":") %}\
+ {% set_global found_breaking = false %}\
+ {% endif %}\
+ {% if line is starting_with("BREAKING-CHANGE") %}\
+ {% set_global found_breaking = true %}\
+ {% set breaking_line = line | split(pat=":") | nth(n=1) %}\
+ {% set_global lines = lines | concat(with=breaking_line) %}\
+ {% endif %}\
+ {% endfor %}\
+ {% if lines | length != 0 %}\
+ {{ lines | join(sep="\n") | trim_end(pat="\n") }}\
+ {% endif %}\
+{% endmacro bc_des %}\
+
+{% if version %}\
+ {% if previous.version %}\
+ ## [{{ version | trim_start_matches(pat="v") }}](/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
+ {% else %}\
+ ## {{ version | trim_start_matches(pat="v") }} - {{ timestamp | date(format="%Y-%m-%d") }}
+ {% endif %}\
+{% else %}\
+ ## unreleased
+{% endif %}\
+
+{% for group, commits in commits | group_by(attribute="group") %}\
+ ### {{ group | upper_first }}
+ {% for commit in commits | sort(attribute="message") %}\
+ - {{ self::commit_header(commit=commit) }} ([`{{ commit.id | truncate(length=7, end="") }}`](/commit/{{ commit.id }}))
+ {% if self::is_breaking(commit=commit) == "true" %}\
+ \t- **BC**: {{self::bc_des(commit=commit)}}
+ {% endif %}\
+ {% endfor %}\
+{% endfor %}\n
+"""
+
+footer = """
+This changelog was generated by [git-cliff](https://github.com/orhun/git-cliff)
+"""
+
+header = """
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n
+"""
+postprocessors = [
+ {pattern = '', replace = "https://git.4rs.nl/oxidetalis/oxidetalis"},
+ {pattern = '- (\w+)(\(\w+\))?:', replace = "- "}, # Remove the type
+ {pattern = '- \((\w+)\):', replace = "- (**$1**)"}, # Make the scope blod
+ {pattern = "\t", replace = " "},
+]
+
+# remove the leading and trailing whitespace from the template
+trim = true
+
+[git]
+# parse the commits based on https://www.conventionalcommits.org
+conventional_commits = false
+filter_unconventional = true
+# process each line of a commit as an individual commit
+split_commits = false
+# regex for preprocessing the commit messages
+commit_preprocessors = [
+ {pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([**#${2}**](/issues/${2}))"}, # replace issue numbers (Note the PR is also an issue in Forgejo, so this will also link to PRs)
+ {pattern = ' +$', replace = ""}, # Remove trailing whitespace.
+ {pattern = ' +', replace = " "}, # Replace multiple spaces with a single space.
+]
+# regex for parsing and grouping commits
+commit_parsers = [
+ {message = "^feat", group = "Added"},
+ {message = "^fix", group = "Fixed"},
+ {message = "^(refactor|change)", group = "Changed"},
+ {message = "^deprecate", group = "Deprecated"},
+ {message = "^remove", group = "Removed"},
+ {message = "^security", group = "Security"},
+]
+protect_breaking_commits = false
+# filter out the commits that are not matched by commit parsers
+filter_commits = false
+# regex for matching git tags
+tag_pattern = "v[0-9]+\\.[0-9]+\\.[0-9]+"
+
+# regex for skipping tags
+skip_tags = ""
+# regex for ignoring tags
+ignore_tags = "v[0-9]+\\.[0-9]+\\.[0-9]+-(alpha|beta|rc)(\\.[0-9]+)?"
+# sort the tags topologically
+topo_order = false
+# sort the commits inside sections by oldest/newest order
+sort_commits = "oldest"
diff --git a/sumi.toml b/sumi.toml
new file mode 100644
index 0000000..768abb9
--- /dev/null
+++ b/sumi.toml
@@ -0,0 +1,57 @@
+# git-sumi ~ configuration file
+# Config: https://sumi.rs/docs/configuration
+# Rules: https://sumi.rs/docs/rules
+
+# Suppresses progress messages.
+quiet = false
+
+# Displays parsed commit message.
+display = true
+
+# Sets display format: cli, json, table, toml.
+format = "cli"
+
+# Processes each non-empty line as an individual commit.
+split_lines = false
+
+# Rule: Include one valid Gitmoji.
+# See https://gitmoji.dev/.
+gitmoji = false
+
+# Rule: Description must start with the specified case.
+# Options: 'any', 'lower', 'upper'.
+description_case = "upper"
+
+# Rule: Use the imperative mood in the description.
+# Example: 'Fix bug' instead of 'Fixed bug'.
+imperative = true
+
+# Rule: Do not end commit header with a period.
+no_period = true
+
+# Rule: Header length limit.
+# A value of 0 disables the rule.
+max_header_length = 55
+
+# Rule: Body line length limit.
+# A value of 0 disables the rule.
+max_body_length = 80
+
+# Rule: No leading, trailing, or consecutive spaces.
+whitespace = true
+
+# Rule: Follow Conventional Commits format.
+# See https://www.conventionalcommits.org/.
+conventional = true
+
+# Rule: List of allowed commit scopes.
+# An empty list allows all scopes. Example: ["docs", "cli"].
+scopes_allowed = []
+
+# Rule: List of allowed commit types.
+# An empty list allows all types. Example: ["feat", "fix", "docs"].
+types_allowed = ["feat", "fix", "docs", "refactor", "change", "deprecate", "remove", "security", "perf", "test", "chore"]
+
+# Rule: Header must match regex pattern.
+# Example: '^JIRA-\d+:'.
+header_pattern = '^\w+(\([\w-]+\))?(!)?: \w'