diff --git a/.github/actions/check-typos/action.yaml b/.github/actions/check-typos/action.yaml new file mode 100644 index 0000000..9663c10 --- /dev/null +++ b/.github/actions/check-typos/action.yaml @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +name: check-typos +description: Helper for running Typos +inputs: + files: + description: Files to check + required: false + default: '' +runs: + using: composite + steps: + - name: Install and run Typos + uses: crate-ci/typos@v1.29.7 + with: + config: ./configs/typos.toml + files: ${{ inputs.files }} diff --git a/.github/actions/setup-committed/action.yaml b/.github/actions/setup-committed/action.yaml new file mode 100644 index 0000000..ecae960 --- /dev/null +++ b/.github/actions/setup-committed/action.yaml @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +name: setup-committed +description: Helper for installing Committed +runs: + using: composite + steps: + - name: Install Committed + uses: jaxxstorm/action-install-gh-release@v2.1.0 + with: + repo: crate-ci/committed + tag: v1.1.7 diff --git a/.github/actions/setup-helm/action.yaml b/.github/actions/setup-helm/action.yaml new file mode 100644 index 0000000..d959686 --- /dev/null +++ b/.github/actions/setup-helm/action.yaml @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +name: setup-helm +description: Helper for installing Helm +runs: + using: composite + steps: + - name: Install Helm + uses: azure/setup-helm@v4 + with: + version: v3.17.0 diff --git a/.github/actions/setup-just/action.yaml b/.github/actions/setup-just/action.yaml new file mode 100644 index 0000000..b185b5e --- /dev/null +++ b/.github/actions/setup-just/action.yaml @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +name: setup-just +description: Helper for installing Just +runs: + using: composite + steps: + - name: Install Just + uses: taiki-e/install-action@v2 + with: + tool: just@1.40.0 diff --git a/.github/workflows/checks.yaml b/.github/workflows/checks.yaml new file mode 100644 index 0000000..b308341 --- /dev/null +++ b/.github/workflows/checks.yaml @@ -0,0 +1,130 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +# Reusable workflow for running various checks on Helm charts + +name: checks +on: + workflow_call: + inputs: + enable-change-detection: + description: Enable change detection + default: false + type: boolean + chart: + description: Limit checks to a specific chart + default: '' + type: string + outputs: + charts: + description: List of validated charts + value: ${{ jobs.helm-linter.outputs.charts }} + +permissions: + contents: read + +env: + CLICOLOR: 1 + +jobs: + helm-linter: + runs-on: ubuntu-latest + outputs: + charts: ${{ steps.ct-log-parser.outputs.charts }} + env: + CHART_TESTING_LOG: chart-testing.log + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # Fetch whole history required for change detection (if enabled) + fetch-depth: ${{ (inputs.enable-change-detection) && '0' || '1' }} + - name: Install Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + check-latest: true + - &install-just-step + name: Install Just + uses: ./.github/actions/setup-just + - &install-helm-step + name: Install Helm + uses: ./.github/actions/setup-helm + - &install-ct-step + name: Install chart-testing + uses: helm/chart-testing-action@v2.7.0 + - &add-chart-repos-step + name: Add external chart repositories + run: just add-chart-repos + - name: Run chart linters and validators + run: | + set -o pipefail + if ${{ inputs.enable-change-detection }}; then + # Enable change detection if requested + set -- "--target-branch" "main" + elif test -n "${{ inputs.chart }}"; then + # Process only the specified chart + set -- "--charts" "./charts/${{ inputs.chart }}" + else + # Process all charts + set -- "--all" + fi + ct lint --config ./configs/chart-testing.yaml "$@" \ + | tee "${{ env.CHART_TESTING_LOG }}" + - id: ct-log-parser + name: Parse chart-testing logs + uses: eaasi/chart-list-action@v0.3 + with: + ct-log-file: ${{ env.CHART_TESTING_LOG }} + + helm-tester: + runs-on: ubuntu-latest + needs: + - helm-linter + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - *install-just-step + - name: Install Minikube + uses: medyagh/setup-minikube@v0.0.20 + with: + start: false + - name: Start Minikube cluster + run: just cluster-start + - *install-helm-step + - *install-ct-step + - *add-chart-repos-step + - name: Install and test charts + run: ct install --config ./configs/chart-testing.yaml --all + + spell-checker: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Run spell checker + uses: ./.github/actions/check-typos + + changelog-checker: + runs-on: ubuntu-latest + needs: + - helm-linter + - spell-checker + if: ${{ needs.helm-linter.outputs.charts != '[]' }} + strategy: + matrix: + chart: ${{ fromJSON(needs.helm-linter.outputs.charts) }} + env: + CHANGELOG_FILE: ${{ matrix.chart.path }}/CHANGELOG.md + steps: + - name: Checkout chart's changelog + uses: actions/checkout@v4 + with: + sparse-checkout: ${{ env.CHANGELOG_FILE }} + - name: Check chart's changelog + uses: eaasi/release-notes-action@v0.6 + with: + changelog-file: ${{ env.CHANGELOG_FILE }} + release-version: '${{ matrix.chart.version }}' + # Ignore missing changelogs for default chart version + continue-on-error: ${{ matrix.chart.version == '0.1.0' }} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..5eb189c --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +# Workflow for running various CI checks + +name: continuous-integration +on: + push: + branches: + - main + pull_request: + branches: + - '**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + +permissions: + contents: read + +jobs: + checks: + uses: ./.github/workflows/checks.yaml + with: + enable-change-detection: ${{ github.ref != 'refs/heads/main' }} diff --git a/.github/workflows/commit-style.yaml b/.github/workflows/commit-style.yaml new file mode 100644 index 0000000..4b19e96 --- /dev/null +++ b/.github/workflows/commit-style.yaml @@ -0,0 +1,44 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +# Workflow for enforcing commit style conventions + +name: commit-style +on: + push: + branches: + - main + pull_request: + branches: + - '**' + +permissions: + contents: read + +env: + CLICOLOR: 1 + +jobs: + commit-linter: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # Fetch full history for merge-base detection! + fetch-depth: 0 + - id: commit-range + name: Determine commit range + uses: eaasi/commit-range-action@v0.5 + - name: Install commit style linter + uses: ./.github/actions/setup-committed + - name: Run commit style linter + run: | + range="${{ steps.commit-range.outputs.commit-range }}" + echo "Linting commits:" + git log --color=always --graph --oneline "${range:?}" || true + echo "" + committed -vv --color=always \ + --config ./configs/committed.toml \ + "${range}" + echo "DONE: Commits follow the required style conventions." diff --git a/.github/workflows/pr-naming.yaml b/.github/workflows/pr-naming.yaml new file mode 100644 index 0000000..c26aa56 --- /dev/null +++ b/.github/workflows/pr-naming.yaml @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +# Workflow for enforcing PR naming conventions + +name: pr-naming +on: + pull_request: + types: + - opened + - edited + - reopened + +permissions: + contents: none + +env: + COMMIT_MESSAGE_FILE: ./commit-message.txt + CLICOLOR: 1 + +jobs: + commit-message: + runs-on: ubuntu-latest + outputs: + content: ${{ steps.message-constructor.outputs.content }} + steps: + - id: message-constructor + name: Construct commit message + env: + PR_TITLE: ${{ github.event.pull_request.title }} + PR_BODY: | + ${{ github.event.pull_request.body }} + run: | + print-commit-message() { + echo "${PR_TITLE:?}" + if test -n "${PR_BODY}"; then + echo "" + echo "${PR_BODY}" + fi + } + # Output commit message + { + echo "content<> "${GITHUB_OUTPUT}" + + commit-linter: + runs-on: ubuntu-latest + needs: + - commit-message + steps: + - &checkout-repository-step + name: Checkout repository + uses: actions/checkout@v4 + with: + sparse-checkout: | + .github/actions + configs + - &prepare-commit-message-step + name: Prepare commit message + run: | + echo -n '${{ needs.commit-message.outputs.content }}' > "${{ env.COMMIT_MESSAGE_FILE }}" + - name: Install commit style linter + uses: ./.github/actions/setup-committed + - name: Run commit style linter + run: | + echo "Linting commit message:" + cat "${{ env.COMMIT_MESSAGE_FILE }}" | sed 's/^/> /' + echo "" + committed -vv --color=always \ + --config ./configs/committed.toml \ + --commit-file "${{ env.COMMIT_MESSAGE_FILE }}" + echo "DONE: PR follows the required naming conventions." + + spell-checker: + runs-on: ubuntu-latest + needs: + - commit-message + steps: + - *checkout-repository-step + - *prepare-commit-message-step + - name: Run spell checker + uses: ./.github/actions/check-typos + with: + files: ${{ env.COMMIT_MESSAGE_FILE }} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..9e88269 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,136 @@ +# SPDX-FileCopyrightText: 2025 Yale University +# SPDX-License-Identifier: Apache-2.0 + +# Workflow for packaging and releasing Helm charts + +name: release +on: + push: + tags: + - '**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + +permissions: + contents: read + +env: + CLICOLOR: 1 + +jobs: + tag-parser: + runs-on: ubuntu-latest + outputs: + chart: ${{ steps.refname-parsing.outputs.chart }} + version: ${{ steps.refname-parsing.outputs.version }} + steps: + - id: refname-parsing + name: Parse pushed ref name + run: | + # Parse ref names of the form - + echo "Parsing ref name '${GITHUB_REF_NAME:?}'..." + refname="$(echo "${GITHUB_REF_NAME}" | sed -E 's/^(.+)-([0-9]+.*)$/\1:\2/')" + lookup() { cut -d ':' -f "${1:?}"; } + chart="$(echo "${refname:?}" | lookup 1)" + version="$(echo "${refname}" | lookup 2)" + echo "chart=${chart:?}" >> "${GITHUB_OUTPUT}" + echo "version=${version:?}" >> "${GITHUB_OUTPUT}" + echo "Parsed values:" + echo " chart = ${chart}" + echo " version = ${version}" + + chart-checks: + needs: + - tag-parser + uses: ./.github/workflows/checks.yaml + with: + chart: ${{ needs.tag-parser.outputs.chart }} + enable-change-detection: false + + chart-info: + runs-on: ubuntu-latest + needs: + - chart-checks + - tag-parser + outputs: + name: ${{ matrix.chart.name }} + version: ${{ matrix.chart.version}} + path: ${{ matrix.chart.path }} + refname: ${{ github.ref_name }} + strategy: + fail-fast: true + matrix: + chart: ${{ fromJSON(needs.chart-checks.outputs.charts) }} + steps: + - name: Find expected chart + run: | + test "${{ matrix.chart.name }}" = "${{ needs.tag-parser.outputs.chart }}" + + version-check: + runs-on: ubuntu-latest + needs: + - chart-info + - tag-parser + steps: + - name: Check chart version + run: | + curver="${{ needs.chart-info.outputs.version }}" + tagver="${{ needs.tag-parser.outputs.version }}" + if test "${curver:?}" != "${tagver:?}"; then + echo "ERROR: Chart version '${curver}' does not match tag version '${tagver}'!" + exit 1 + fi + + chart-releaser: + runs-on: ubuntu-latest + permissions: + contents: write + needs: + - chart-info + - chart-checks + - version-check + env: + CHART_RELEASER_CONFIG: ./configs/chart-releaser.yaml + RELEASE_NOTES_FILE_NAME: RELEASE.md + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + path: ${{ needs.chart-info.outputs.path }} + - name: Update Git configuration + run: | + git config user.name "${{ github.event.pusher.name }}" + git config user.email "${{ github.event.pusher.email }}" + - name: Install Just + uses: ./.github/actions/setup-just + - name: Install Helm + uses: ./.github/actions/setup-helm + - name: Install chart-releaser + uses: helm/chart-releaser-action@v1.7.0 + with: + install_only: true + - name: Add external chart repositories + run: just add-chart-repos + - name: Extract chart's release notes + uses: eaasi/release-notes-action@v0.6 + with: + changelog-file: ${{ needs.chart-info.outputs.path }}/CHANGELOG.md + release-notes-file: ${{ needs.chart-info.outputs.path }}/${{ env.RELEASE_NOTES_FILE_NAME }} + release-version: '${{ needs.chart-info.outputs.version }}' + - name: Package requested chart + run: | + cr package "${{ needs.chart-info.outputs.path }}" \ + --config "${{ env.CHART_RELEASER_CONFIG }}" + - name: Upload chart package + run: | + cr upload --config "${{ env.CHART_RELEASER_CONFIG }}" \ + --token "${{ secrets.GITHUB_TOKEN }}" \ + --commit "${{ github.sha }}" \ + --release-notes-file "${{ env.RELEASE_NOTES_FILE_NAME }}" \ + --skip-existing + - name: Update chart repository index + run: | + cr index --config "${{ env.CHART_RELEASER_CONFIG }}" \ + --token "${{ secrets.GITHUB_TOKEN }}" \ + --push diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03bd412 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.env diff --git a/Justfile b/Justfile new file mode 100644 index 0000000..3b441c3 --- /dev/null +++ b/Justfile @@ -0,0 +1,108 @@ +chart_dir := "./charts" +config_dir := "./configs" + +# Name of the Minikube cluster +cluster := "eaasi" + +# Name of the cluster namespace +namespace := "eaasi" + +### HELPERS ################################################################### + +# Run spell checker +spellcheck: + typos --config "{{ config_dir }}/typos.toml" + +# Run chart linter +lint chart="*": + helm lint {{ chart_dir / chart }} + +# Run chart validator +validate chart="*": + docker run -t --rm --network="host" \ + --workdir="/data" \ + --volume="$PWD:/data" \ + --volume="$(helm env HELM_CACHE_HOME):/root/.cache/helm:ro" \ + --volume="$(helm env HELM_CONFIG_HOME):/root/.config/helm:ro" \ + "quay.io/helmpack/chart-testing:v3.7.1" \ + ct lint --config "{{ config_dir }}/chart-testing.yaml" \ + --helm-dependency-extra-args "--skip-refresh" \ + {{ if chart == "*" { "--all" } else { '--charts "' + (chart_dir / chart) + '"' } }} + +# Update chart's changelog +update-changelog chart version="" dir=(chart_dir / chart): + #!/usr/bin/env -S sh -eu -o allexport + test -f cliff.env && . ./cliff.env + git cliff --unreleased \ + {{ if version == "" { "--bump" } else { "--tag " + chart + "-" + version } }} \ + --tag-pattern "{{ chart }}-.+" \ + --include-path "{{ dir }}/**" \ + --prepend "{{ dir }}/CHANGELOG.md" + +### HELM ###################################################################### + +# Add external chart repositories +add-chart-repos: + # TODO: add repos! + +# Build dependencies for all charts +build-chart-deps: + #!/usr/bin/env -S sh -eu + charts=$(ls "{{ chart_dir }}/") + for chart in $charts; do + just dep-build "$chart" + done + +# Build Helm chart's dependencies from its lock file +dep-build chart *args="--skip-refresh": + helm dependency build "{{ chart_dir / chart }}" {{ args }} + +# Update Helm chart's on-disk dependencies +dep-update chart *args="--skip-refresh": + helm dependency update "{{ chart_dir / chart }}" {{ args }} + +# Install a Helm chart +install chart name=chart ns=namespace *args="": + helm install "{{ name }}" "{{ chart_dir / chart }}" \ + --namespace "{{ ns }}" --create-namespace {{ args }} + +# Uninstall a Helm chart release +uninstall release ns=namespace *args="": + helm uninstall "{{ release }}" --namespace "{{ ns }}" {{ args }} + +# Upgrade a Helm chart release +upgrade chart release=chart ns=namespace *args="": + helm upgrade "{{ release }}" "{{ chart_dir / chart }}" \ + --install --namespace "{{ ns }}" --create-namespace {{ args }} + +# Render a Helm chart +render chart name=chart ns=namespace *args="": + helm template "{{ name }}" "{{ chart_dir / chart }}" \ + --namespace "{{ ns }}" {{ args }} | less + +### MINIKUBE ################################################################## + +# Start a Minikube cluster +cluster-start name=cluster ns=namespace *args="": + minikube start --profile "{{ name }}" \ + --namespace "{{ ns }}" \ + --cpus "no-limit" \ + --memory "no-limit" \ + --force-systemd=true \ + {{ args }} + +# Stop a Minikube cluster +cluster-stop name=cluster: + minikube stop --profile "{{ name }}" + +# Pause a Minikube cluster +cluster-pause name=cluster: + minikube pause --profile "{{ name }}" --all-namespaces + +# Unpause a Minikube cluster +cluster-unpause name=cluster: + minikube unpause --profile "{{ name }}" --all-namespaces + +# Delete a Minikube cluster +cluster-delete name=cluster: + minikube delete --profile "{{ name }}" diff --git a/README.md b/README.md index b248514..776ec01 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,14 @@ using the [Helm](https://helm.sh) package manager. ## Helm Repository Add this Helm repository using: + ```console $ helm repo add eaasi https://eaasi.github.io/helm-charts $ helm repo update ``` List the available charts by running: + ```console $ helm search repo eaasi ``` @@ -20,6 +22,97 @@ $ helm search repo eaasi For more details, see the documentation for each chart: +## Development + +Multiple [Just](https://github.com/casey/just) recipes are provided in order to simplify local chart development. +For an overview of all available recipes and their parameters, take a look at the provided [Justfile](./Justfile) or simply run: + +```console +$ just --list +``` + +### Chart Helpers + +All source files can be checked for typos with: + +```console +$ just spellcheck +``` + +A chart linter can be run against a specific chart or all charts with: + +```console +$ just lint # omit name to lint all charts! +``` + +An extended validation can be performed on a specific chart or all charts with: + +```console +$ just validate # omit name to validate all charts! +``` + +All chart's templates can be rendered (without installing) with: + +```console +$ just render # +``` + +A specific chart can be installed or upgraded with: + +```console +$ just install # +$ just upgrade # +``` + +A previously installed release can be removed with: + +```console +$ just uninstall # +``` + +The dependencies of a chart can be managed with: + +```console +$ just dep-build # rebuild deps from Chart.lock file +$ just dep-update # update deps to mirror Chart.yaml +``` + +### Minikube Management + +A local [Minikube](https://minikube.sigs.k8s.io) cluster can be created with: + +```console +$ just cluster-start +``` + +A running Minikube cluster can be paused and resumed later with: + +```console +$ just cluster-pause +$ just cluster-unpause +``` + +When a local Minikube cluster is not needed anymore, it can be stopped or deleted with: + +```console +$ just cluster-stop +$ just cluster-delete +``` + +### Deployment + +Before deploying anything, the chart repositories for all dependencies must be added with: + +```console +$ just add-chart-repos +``` + +Next, rebuild all required chart dependencies with: + +```console +$ just build-chart-deps +``` + ## License Helm charts for EAASI are distributed under the [Apache-2.0](./LICENSE) license. diff --git a/charts/.gitkeep b/charts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..5384e8e --- /dev/null +++ b/cliff.toml @@ -0,0 +1,80 @@ +# git-cliff configuration (https://github.com/orhun/git-cliff) + +[changelog] +trim = false + +header = """ +# Changelog +""" + +body = """ +{% if version %} +## {{ version | split(pat="-") | last }} - *{{ timestamp | date(format="%Y-%m-%d") }}* +{% else -%} +## Unreleased +{% endif -%} +{% set include_commit_body = false -%} +{% for group, commits in commits | group_by(attribute="group") %} +### {{ group | split(pat=":") | last | trim }} + +{% for commit in commits -%} +{% set message = commit.message | upper_first -%} +{% if commit.breaking -%} +{% set message = "(**!**) " ~ message -%} +{% endif -%} +{% set short_sha = commit.id | truncate(length=7, end="") -%} +{% set commit_url = "/commit/" ~ commit.id -%} +{% set ref = "[`" ~ short_sha ~ "`](" ~ commit_url ~ ")" -%} +{% if commit.remote.username -%} +{% set ref = ref ~ " by @" ~ commit.remote.username -%} +{% endif -%} +{% if commit.remote.pr_number -%} +{% set pr_num = commit.remote.pr_number -%} +{% set pr_url = "/pull/" ~ pr_num -%} +{% set ref = ref ~ " in [#" ~ pr_num ~ "](" ~ pr_url ~ ")" -%} +{% endif -%} +- {{ message }} - ({{ ref }}) +{% if include_commit_body and commit.body %} + {{ commit.body | indent(prefix=" ") }} + +{% endif -%} +{% endfor -%} +{% endfor -%} +{% if previous.version -%} +{% set tag = version | default(value="HEAD") -%} +{% set diff_url = "/compare/" ~ previous.version ~ ".." ~ tag %} +The more detailed changelog for `{{ tag }}` can be found [here]({{ diff_url }}). +{% endif -%} +""" + +postprocessors = [ + # Replace repository placeholder with the real URL + { pattern = "", replace = "https://github.com/eaasi/helm-charts" }, +] + +[git] +conventional_commits = true +filter_unconventional = true +filter_commits = false +split_commits = false +sort_commits = "oldest" +topo_order = false + +commit_preprocessors = [ + # Replace issue references with their remote link template + { pattern = '([\(\s]+)#([0-9]+)', replace = "${1}[#${2}](/issues/${2})"}, +] + +commit_parsers = [ + { message = "^feat", group = "1: Features" }, + { message = "^fix", group = "2: Bug Fixes" }, + { message = "^refactor", group = "3: Refactoring" }, + { message = "^test", group = "4: Testing" }, + { message = "^ci", group = "5: Continuous Integration" }, + { message = "^docs", group = "6: Documentation" }, + { message = ".*", group = "7: Miscellaneous" }, +] + +[remote.github] +owner = "eaasi" +repo = "helm-charts" diff --git a/configs/chart-releaser.yaml b/configs/chart-releaser.yaml new file mode 100644 index 0000000..a16b9b4 --- /dev/null +++ b/configs/chart-releaser.yaml @@ -0,0 +1,5 @@ +# chart-releaser configuration (https://github.com/helm/chart-releaser) + +pages-branch: pages +skip-existing: true +make-release-latest: false diff --git a/configs/chart-testing.yaml b/configs/chart-testing.yaml new file mode 100644 index 0000000..d3f98d0 --- /dev/null +++ b/configs/chart-testing.yaml @@ -0,0 +1,7 @@ +# chart-testing configuration (https://github.com/helm/chart-testing) + +check-version-increment: false +validate-maintainers: false +remote: origin +chart-dirs: + - charts diff --git a/configs/committed.toml b/configs/committed.toml new file mode 100644 index 0000000..39dcc37 --- /dev/null +++ b/configs/committed.toml @@ -0,0 +1,26 @@ +# committed configuration (https://github.com/crate-ci/committed) + +line_length = 0 +subject_length = 0 +subject_capitalized = false +subject_not_punctuated = true +imperative_subject = true +merge_commit = true +no_fixup = true +no_wip = true + +style = "conventional" + +# allowed commit types +allowed_types = [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "refactor", + "revert", + "style", + "test", +] diff --git a/configs/typos.toml b/configs/typos.toml new file mode 100644 index 0000000..8d38a84 --- /dev/null +++ b/configs/typos.toml @@ -0,0 +1,12 @@ +# typos configuration (https://github.com/crate-ci/typos) + +[default] +extend-ignore-re = [ + # ignore lines with trailing "spellchecker:disable-line" + "(?Rm)^.*(#|//)\\s*spellchecker:disable-line$", + # ignore blocks with "spellchecker:" + "(?s)(#|//)\\s*spellchecker:off.*?\\n\\s*(#|//)\\s*spellchecker:on", +] + +[default.extend-words] +eaasi = "eaasi"