From eeeab2529a4b26f1f9823254ba6b881d1f0c8be1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 12:12:44 +0000 Subject: [PATCH] chore: sync files with beam-community/common-config --- .formatter.exs | 9 ++- .github/CODEOWNERS | 4 - .github/dependabot.yml | 20 +++++ .github/release-please-config.json | 39 ++++++++++ .github/workflows/ci.yaml | 106 +++++++++++++++++++++++++++ .github/workflows/common-config.yaml | 4 +- .github/workflows/pr.yaml | 46 ++++++++++++ .github/workflows/production.yaml | 15 ++++ .github/workflows/release.yaml | 22 ++++++ .github/workflows/stale.yaml | 47 ++++++++++++ .tool-versions | 5 +- LICENSE | 35 ++++----- 12 files changed, 324 insertions(+), 28 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/release-please-config.json create mode 100644 .github/workflows/ci.yaml create mode 100644 .github/workflows/pr.yaml create mode 100644 .github/workflows/production.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 .github/workflows/stale.yaml diff --git a/.formatter.exs b/.formatter.exs index 074bd8f7..94f62272 100644 --- a/.formatter.exs +++ b/.formatter.exs @@ -1,5 +1,8 @@ +# This file is synced with beam-community/common-config. Any changes will be overwritten. + [ - import_deps: [:phoenix], - inputs: ["*.{ex,exs}", "{config,lib,priv,test}/**/*.{ex,exs}"], - line_length: 120 + import_deps: [:phoenix, :plug], + inputs: ["*.{heex,ex,exs}", "{config,lib,priv,test}/**/*.{heex,ex,exs}"], + line_length: 120, + plugins: [Phoenix.LiveView.HTMLFormatter] ] diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b06a7878..43b776a8 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,5 +1 @@ -# Order alphabetically. -# Order is important. The last matching pattern takes the most precedence. - -# Default owners for everything in the repo. * @beam-community/team diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..ed3cbfb4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,20 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + commit-message: + prefix: "chore(deps)" + + - package-ecosystem: mix + directory: "/" + schedule: + interval: weekly + commit-message: + prefix: "chore(deps)" + groups: + prod: + dependency-type: production + dev: + dependency-type: development diff --git a/.github/release-please-config.json b/.github/release-please-config.json new file mode 100644 index 00000000..f4e60143 --- /dev/null +++ b/.github/release-please-config.json @@ -0,0 +1,39 @@ +{ + "$comment": "This file is synced with beam-community/common-config. Any changes will be overwritten.", + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "changelog-sections": [ + { + "type": "feat", + "section": "Features", + "hidden": false + }, + { + "type": "fix", + "section": "Bug Fixes", + "hidden": false + }, + { + "type": "refactor", + "section": "Miscellaneous", + "hidden": false + } + ], + "draft": false, + "draft-pull-request": false, + "packages": { + ".": { + "extra-files": [ + "README.md" + ], + "release-type": "elixir" + } + }, + "plugins": [ + { + "type": "sentence-case" + } + ], + "prerelease": false, + "pull-request-header": "An automated release has been created for you.", + "separate-pull-requests": true +} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 00000000..6cd19f46 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,106 @@ +# This file is synced with beam-community/common-config. Any changes will be overwritten. + +name: CI + +on: + merge_group: + pull_request: + types: + - opened + - reopened + - synchronize + push: + branches: + - main + workflow_call: + secrets: + GH_PERSONAL_ACCESS_TOKEN: + required: true + workflow_dispatch: + +concurrency: + group: CI ${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + Credo: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Elixir + uses: stordco/actions-elixir/setup@v1 + with: + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + + - name: Credo + run: mix credo --strict + + Dependencies: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Elixir + uses: stordco/actions-elixir/setup@v1 + with: + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + + - name: Unused + run: mix deps.unlock --check-unused + + Dialyzer: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Elixir + uses: stordco/actions-elixir/setup@v1 + with: + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + + - name: Dialyzer + run: mix dialyzer --format github + + Format: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Elixir + uses: stordco/actions-elixir/setup@v1 + with: + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + + - name: Format + run: mix format --check-formatted + + Test: + runs-on: ubuntu-latest + + env: + MIX_ENV: test + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Elixir + uses: stordco/actions-elixir/setup@v1 + with: + github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + + - name: Compile + run: mix compile --warnings-as-errors + + - name: Test + run: mix test + diff --git a/.github/workflows/common-config.yaml b/.github/workflows/common-config.yaml index 99474d05..d98d0246 100644 --- a/.github/workflows/common-config.yaml +++ b/.github/workflows/common-config.yaml @@ -32,12 +32,14 @@ jobs: - name: Setup Node uses: actions/setup-node@v4 with: - node-version-file: .tool-versions + node-version: 20 - name: Setup Elixir uses: stordco/actions-elixir/setup@v1 with: github-token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} + elixir-version: "1.16" + otp-version: "26.0" - name: Sync uses: stordco/actions-sync@v1 diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml new file mode 100644 index 00000000..1b07ab71 --- /dev/null +++ b/.github/workflows/pr.yaml @@ -0,0 +1,46 @@ +# This file is synced with beam-community/common-config. Any changes will be overwritten. + +name: PR + +on: + merge_group: + pull_request: + types: + - edited + - opened + - reopened + - synchronize + +jobs: + Title: + permissions: + pull-requests: read + + if: ${{ github.event_name == 'pull_request' }} + name: Check Title + runs-on: ubuntu-latest + + steps: + - name: Check + uses: stordco/actions-pr-title@v1.0.0 + with: + regex: '^(refactor!|feat!|fix!|refactor|fix|feat|chore)(\(\w+\))?:\s(\[#\d{1,5}\])?.*$' + hint: | + Your PR title does not match the Conventional Commits convention. Please rename your PR to match one of the following formats: + + fix: [#123] some title of the PR + fix(scope): [#123] some title of the PR + feat: [#1234] some title of the PR + chore: update some action + + Note: Adding ! (i.e. `feat!:`) represents a breaking change and will result in a SemVer major release. + + Please use one of the following types: + + - **feat:** A new feature, resulting in a MINOR version bump. + - **fix:** A bug fix, resulting in a PATCH version bump. + - **refactor:** A code change that neither fixes a bug nor adds a feature. + - **chore:** Changes unrelated to the release code, resulting in no version bump. + - **revert:** Reverts a previous commit. + + See https://www.conventionalcommits.org/en/v1.0.0/ for more information. diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml new file mode 100644 index 00000000..2a6b98ff --- /dev/null +++ b/.github/workflows/production.yaml @@ -0,0 +1,15 @@ +# This file is synced with beam-community/common-config. Any changes will be overwritten. + +name: Production + +on: + release: + types: + - released + - prereleased + workflow_dispatch: + +concurrency: + group: Production + +jobs: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..335c8a96 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,22 @@ +# This file is synced with beam-community/common-config. Any changes will be overwritten. + +name: Release + +on: + push: + branches: + - main + +jobs: + Please: + runs-on: ubuntu-latest + + steps: + - id: release + name: Release + uses: googleapis/release-please-action@v4 + with: + config-file: .github/release-please-config.json + manifest-file: .github/release-please-manifest.json + release-type: elixir + token: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }} diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 00000000..0e509607 --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,47 @@ +name: "Close stale issues and PRs" + +on: + workflow_dispatch: + schedule: + - cron: "30 1 * * *" + +permissions: + contents: write + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + days-before-issue-stale: 30 + days-before-issue-close: 15 + days-before-pr-stale: 60 + days-before-pr-close: 60 + + stale-issue-label: "stale:discard" + exempt-issue-labels: "stale:keep" + stale-issue-message: > + This issue has been automatically marked as "stale:discard". We are sorry that we haven't been able to + prioritize it yet. + + If this issue still relevant, please leave any comment if you have any new additional information that + helps to solve this issue. We encourage you to create a pull request, if you can. We are happy to help you + with that. + + close-issue-message: > + Closing this issue after a prolonged period of inactivity. If this issue is still relevant, feel free to + re-open the issue. Thank you! + + stale-pr-label: "stale:discard" + exempt-pr-labels: "stale:keep" + stale-pr-message: > + This pull request has been automatically marked as "stale:discard". **If this pull request is still + relevant, please leave any comment** (for example, "bump"), and we'll keep it open. We are sorry that we + haven't been able to prioritize reviewing it yet. + Your contribution is very much appreciated!. + close-pr-message: > + Closing this pull request after a prolonged period of inactivity. If this issue is still relevant, please + ask for this pull request to be reopened. Thank you! diff --git a/.tool-versions b/.tool-versions index f3b30d5b..fe29d910 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,3 +1,2 @@ -elixir 1.17.3 -erlang 27.1.2 -nodejs 22.8.0 +elixir 1.16 +erlang 26.0 diff --git a/LICENSE b/LICENSE index e2b3365e..063f6cb9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,22 @@ -MIT License +# MIT License -Copyright (c) 2019 Sean Callan +Copyright (c) 2024 BEAM Community -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.