diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md deleted file mode 100644 index 7e77a3a..0000000 --- a/.github/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,46 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index e37f046..0000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Contributing - -You are welcome to edit, fork and create pull requests as you like. - -- If you make a change, make sure to refer to any issues that it fixes. -- Make sure you have used linters and tested what you have added/changed - works. -- Any pull request will be verified by the bots, so make sure you fix any - issues the bots find. -- I, and any other users I approve will be able to merge your changes so - be patient. - -## Docs - -Feel free to improve documentation as you like by making a pull request in - `/docs`. Once merged into the master branch, my ci server will update the - docs in the `gh-pages` branch. diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..45dd97a --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,8 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: daily + time: "06:00" diff --git a/.github/labels.yml b/.github/labels.yml new file mode 100644 index 0000000..2d0f68a --- /dev/null +++ b/.github/labels.yml @@ -0,0 +1,85 @@ +--- +- name: "breaking-change" + color: ee0701 + description: "A breaking change for existing users." +- name: "bugfix" + color: ee0701 + description: "Inconsistencies or issues which will cause a problem for users or implementors." +- name: "documentation" + color: 0052cc + description: "Solely about the documentation of the project." +- name: "enhancement" + color: 1d76db + description: "Enhancement of the code, not introducing new features." +- name: "refactor" + color: 1d76db + description: "Improvement of existing code, not introducing new features." +- name: "performance" + color: 1d76db + description: "Improving performance, not introducing new features." +- name: "new-feature" + color: 0e8a16 + description: "New features or options." +- name: "maintenance" + color: 2af79e + description: "Generic maintenance tasks." +- name: "ci" + color: 1d76db + description: "Work that improves the continue integration." +- name: "dependencies" + color: 1d76db + description: "Upgrade or downgrade of project dependencies." + +- name: "in-progress" + color: fbca04 + description: "Issue is currently being resolved by a developer." +- name: "stale" + color: fef2c0 + description: "There has not been activity on this issue or PR for quite some time." +- name: "no-stale" + color: fef2c0 + description: "This issue or PR is exempted from the stable bot." + +- name: "security" + color: ee0701 + description: "Marks a security issue that needs to be resolved asap." +- name: "incomplete" + color: fef2c0 + description: "Marks a PR or issue that is missing information." +- name: "invalid" + color: fef2c0 + description: "Marks a PR or issue that is missing information." + +- name: "beginner-friendly" + color: 0e8a16 + description: "Good first issue for people wanting to contribute to the project." +- name: "help-wanted" + color: 0e8a16 + description: "We need some extra helping hands or expertise in order to resolve this." + +- name: "hacktoberfest" + description: "Issues/PRs are participating in the Hacktoberfest." + color: fbca04 +- name: "hacktoberfest-accepted" + description: "Issues/PRs are participating in the Hacktoberfest." + color: fbca04 + +- name: "priority-critical" + color: ee0701 + description: "This should be dealt with ASAP. Not fixing this issue would be a serious error." +- name: "priority-high" + color: b60205 + description: "After critical issues are fixed, these should be dealt with before any further issues." +- name: "priority-medium" + color: 0e8a16 + description: "This issue may be useful, and needs some attention." +- name: "priority-low" + color: e4ea8a + description: "Nice addition, maybe... someday..." + +- name: "major" + color: b60205 + description: "This PR causes a major version bump in the version number." +- name: "minor" + color: 0e8a16 + description: "This PR causes a minor version bump in the version number." diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..cb404ea --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,57 @@ +--- +name-template: "v$RESOLVED_VERSION" +tag-template: "v$RESOLVED_VERSION" +change-template: "- $TITLE @$AUTHOR (#$NUMBER)" +sort-direction: ascending + +categories: + - title: "🚨 Breaking changes" + labels: + - "breaking-change" + - title: "✨ New features" + labels: + - "new-feature" + - title: "πŸ› Bug fixes" + labels: + - "bugfix" + - title: "πŸš€ Enhancements" + labels: + - "enhancement" + - "refactor" + - "performance" + - title: "🧰 Maintenance" + labels: + - "maintenance" + - "ci" + - title: "πŸ“š Documentation" + labels: + - "documentation" + - title: "⬆️ Dependency updates" + labels: + - "dependencies" + +version-resolver: + major: + labels: + - "major" + - "breaking-change" + minor: + labels: + - "minor" + - "new-feature" + patch: + labels: + - "bugfix" + - "chore" + - "ci" + - "dependencies" + - "documentation" + - "enhancement" + - "performance" + - "refactor" + default: patch + +template: | + ## What’s changed + + $CHANGES diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..e31f3a8 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,182 @@ +--- +name: CI + +# yamllint disable-line rule:truthy +on: + push: + pull_request: + types: + - opened + - reopened + - synchronize + workflow_dispatch: + +jobs: + information: + name: Gather add-on information + runs-on: ubuntu-latest + outputs: + architectures: ${{ steps.information.outputs.architectures }} + build: ${{ steps.information.outputs.build }} + description: ${{ steps.information.outputs.description }} + name: ${{ steps.information.outputs.name }} + slug: ${{ steps.information.outputs.slug }} + target: ${{ steps.information.outputs.target }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run add-on information action + id: information + uses: frenck/action-addon-information@v1.0.0 + + lint-addon: + name: Lint Add-on + needs: + - information + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Add-on Lint + uses: frenck/action-addon-linter@v1.3.1 + with: + community: true + path: "./${{ needs.information.outputs.target }}" + + lint-hadolint: + name: Hadolint + needs: + - information + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Hadolint + uses: brpaz/hadolint-action@v1.3.1 + with: + dockerfile: "./${{ needs.information.outputs.target }}/Dockerfile" + + lint-json: + name: JSON Lint + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run JQ + run: | + shopt -s globstar + cat **/*.json | jq '.' + + lint-markdown: + name: MarkdownLint + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run mdl + uses: actionshub/markdownlint@2.0.0 + + lint-shellcheck: + name: Shellcheck + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Shellcheck + uses: ludeeus/action-shellcheck@1.0.0 + env: + SHELLCHECK_OPTS: -s bash + + lint-yamllint: + name: YAMLLint + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run YAMLLint + uses: frenck/action-yamllint@v1.0.2 + + lint-prettier: + name: Prettier + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Prettier + uses: creyD/prettier_action@v3.3 + with: + prettier_options: --write **/*.{json,js,md,yaml} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + build: + name: Build ${{ matrix.architecture }} + needs: + - information + - lint-addon + - lint-hadolint + - lint-json + - lint-markdown + - lint-prettier + - lint-shellcheck + - lint-yamllint + runs-on: ubuntu-latest + strategy: + matrix: + architecture: ${{ fromJson(needs.information.outputs.architectures) }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸ— Set up build cache + id: cache + uses: actions/cache@v2.1.3 + with: + path: /tmp/.docker-cache + key: docker-${{ github.ref }}-${{ matrix.architecture }}-${{ github.sha }} + restore-keys: | + docker-${{ github.ref }}-${{ matrix.architecture }} + - name: πŸ— Set up QEMU + uses: docker/setup-qemu-action@v1.0.1 + - name: πŸ— Set up Docker Buildx + uses: docker/setup-buildx-action@v1.1.1 + - name: ℹ️ Compose build flags + id: flags + run: | + echo "::set-output name=date::$(date +"%Y-%m-%dT%H:%M:%SZ")" + from=$(jq --raw-output ".build_from.${{ matrix.architecture }}" "${{ needs.information.outputs.build }}") + echo "::set-output name=from::${from}" + + if [[ "${{ matrix.architecture}}" = "amd64" ]]; then + echo "::set-output name=platform::linux/amd64" + elif [[ "${{ matrix.architecture }}" = "i386" ]]; then + echo "::set-output name=platform::linux/386" + elif [[ "${{ matrix.architecture }}" = "armhf" ]]; then + echo "::set-output name=platform::linux/arm/v6" + elif [[ "${{ matrix.architecture }}" = "armv7" ]]; then + echo "::set-output name=platform::linux/arm/v7" + elif [[ "${{ matrix.architecture }}" = "aarch64" ]]; then + echo "::set-output name=platform::linux/arm64/v8" + else + echo "::error ::Could not determine platform for architecture ${{ matrix.architecture }}" + exit 1 + fi + - name: πŸš€ Build + uses: docker/build-push-action@v2.2.2 + with: + push: false + context: ${{ needs.information.outputs.target }} + file: ${{ needs.information.outputs.target }}/Dockerfile + cache-from: | + type=local,src=/tmp/.docker-cache + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:edge + cache-to: type=local,mode=max,dest=/tmp/.docker-cache + platforms: ${{ steps.flags.outputs.platform }} + build-args: | + BUILD_ARCH=${{ matrix.architecture }} + BUILD_DATE=${{ steps.flags.outputs.date }} + BUILD_DESCRIPTION=${{ needs.information.outputs.description }} + BUILD_FROM=${{ steps.flags.outputs.from }} + BUILD_NAME=${{ needs.information.outputs.name }} + BUILD_REF=${{ github.sha }} + BUILD_REPOSITORY=${{ github.repository }} + BUILD_VERSION=edge diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml new file mode 100644 index 0000000..1190d75 --- /dev/null +++ b/.github/workflows/deploy.yaml @@ -0,0 +1,206 @@ +--- +name: Deploy + +# yamllint disable-line rule:truthy +on: + release: + types: + - published + workflow_run: + workflows: ["CI"] + branches: [main] + types: + - completed + +jobs: + information: + if: | + github.event_name == 'release' + || ( + github.event_name == 'workflow_run' + && github.event.workflow_run.conclusion == 'success' + ) + name: ℹ️ Gather add-on information + runs-on: ubuntu-latest + outputs: + architectures: ${{ steps.information.outputs.architectures }} + build: ${{ steps.information.outputs.build }} + description: ${{ steps.information.outputs.description }} + environment: ${{ steps.release.outputs.environment }} + name: ${{ steps.information.outputs.name }} + slug: ${{ steps.information.outputs.slug }} + target: ${{ steps.information.outputs.target }} + version: ${{ steps.release.outputs.version }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run add-on information action + id: information + uses: frenck/action-addon-information@v1.0.0 + - name: ℹ️ Gather version and environment + id: release + run: | + sha="${{ github.sha }}" + environment="edge" + version="${sha:0:7}" + if [[ "${{ github.event_name }}" = "release" ]]; then + version="${{ github.event.release.tag_name }}" + version="${version,,}" + version="${version#v}" + environment="stable" + if [[ "${{ github.event.release.prerelease }}" = "true" ]]; then + environment="beta" + fi + fi + + echo "::set-output name=environment::${environment}" + echo "::set-output name=version::${version}" + + deploy: + name: πŸ‘· Build & Deploy ${{ matrix.architecture }} + needs: information + runs-on: ubuntu-latest + strategy: + matrix: + architecture: ${{ fromJson(needs.information.outputs.architectures) }} + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸ— Set up build cache + id: cache + uses: actions/cache@v2.1.3 + with: + path: /tmp/.docker-cache + key: docker-${{ github.ref }}-${{ matrix.architecture }}-${{ github.sha }} + restore-keys: | + docker-${{ github.ref }}-${{ matrix.architecture }} + - name: πŸ— Set up QEMU + uses: docker/setup-qemu-action@v1.0.1 + - name: πŸ— Set up Docker Buildx + uses: docker/setup-buildx-action@v1.1.1 + - name: ℹ️ Compose build flags + id: flags + run: | + echo "::set-output name=date::$(date +"%Y-%m-%dT%H:%M:%SZ")" + from=$(jq --raw-output ".build_from.${{ matrix.architecture }}" "${{ needs.information.outputs.build }}") + echo "::set-output name=from::${from}" + + if [[ "${{ matrix.architecture}}" = "amd64" ]]; then + echo "::set-output name=platform::linux/amd64" + elif [[ "${{ matrix.architecture }}" = "i386" ]]; then + echo "::set-output name=platform::linux/386" + elif [[ "${{ matrix.architecture }}" = "armhf" ]]; then + echo "::set-output name=platform::linux/arm/v6" + elif [[ "${{ matrix.architecture }}" = "armv7" ]]; then + echo "::set-output name=platform::linux/arm/v7" + elif [[ "${{ matrix.architecture }}" = "aarch64" ]]; then + echo "::set-output name=platform::linux/arm64/v8" + else + echo "::error ::Could not determine platform for architecture ${{ matrix.architecture }}" + exit 1 + fi + - name: πŸ— Login to GitHub Container Registry + uses: docker/login-action@v1.8.0 + with: + registry: ghcr.io + username: ${{ secrets.GHCR_USERNAME }} + password: ${{ secrets.GHCR_PASSWORD }} + - name: πŸš€ Build and push + uses: docker/build-push-action@v2.2.2 + with: + push: true + # yamllint disable rule:line-length + tags: | + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:${{ needs.information.outputs.environment }} + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:${{ needs.information.outputs.version }} + # yamllint enable rule:line-length + context: ${{ needs.information.outputs.target }} + file: ${{ needs.information.outputs.target }}/Dockerfile + cache-from: | + type=local,src=/tmp/.docker-cache + ghcr.io/hassio-addons/${{ needs.information.outputs.slug }}/${{ matrix.architecture }}:edge + cache-to: type=local,mode=max,dest=/tmp/.docker-cache + platforms: ${{ steps.flags.outputs.platform }} + build-args: | + BUILD_ARCH=${{ matrix.architecture }} + BUILD_DATE=${{ steps.flags.outputs.date }} + BUILD_DESCRIPTION=${{ needs.information.outputs.description }} + BUILD_FROM=${{ steps.flags.outputs.from }} + BUILD_NAME=${{ needs.information.outputs.name }} + BUILD_REF=${{ github.sha }} + BUILD_REPOSITORY=${{ github.repository }} + BUILD_VERSION=${{ needs.information.outputs.version }} + + publish-edge: + name: πŸ“’ Publish to edge repository + if: needs.information.outputs.environment == 'edge' + needs: + - information + - deploy + environment: + name: ${{ needs.information.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: πŸš€ Dispatch repository updater update signal + uses: peter-evans/repository-dispatch@v1.1.3 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + repository: hassio-addons/repository-edge + event-type: update + client-payload: > + { + "addon": "${{ needs.information.outputs.slug }}", + "name": "${{ needs.information.outputs.name }}", + "repository": "${{ github.repository }}", + "version": "${{ needs.information.outputs.version }}" + } + + publish-beta: + name: πŸ“’ Publish to beta repository + if: | + needs.information.outputs.environment == 'beta' || + needs.information.outputs.environment == 'stable' + needs: + - information + - deploy + environment: + name: ${{ needs.information.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: πŸš€ Dispatch repository updater update signal + uses: peter-evans/repository-dispatch@v1.1.3 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + repository: hassio-addons/repository-beta + event-type: update + client-payload: > + { + "addon": "${{ needs.information.outputs.slug }}", + "name": "${{ needs.information.outputs.name }}", + "repository": "${{ github.repository }}", + "version": "${{ github.event.release.tag_name }}" + } + + publish-stable: + name: πŸ“’ Publish to stable repository + if: needs.information.outputs.environment == 'stable' + needs: + - information + - deploy + environment: + name: ${{ needs.information.outputs.environment }} + runs-on: ubuntu-latest + steps: + - name: πŸš€ Dispatch repository updater update signal + uses: peter-evans/repository-dispatch@v1.1.3 + with: + token: ${{ secrets.DISPATCH_TOKEN }} + repository: hassio-addons/repository + event-type: update + client-payload: > + { + "addon": "${{ needs.information.outputs.slug }}", + "name": "${{ needs.information.outputs.name }}", + "repository": "${{ github.repository }}", + "version": "${{ github.event.release.tag_name }}" + } diff --git a/.github/workflows/labels.yaml b/.github/workflows/labels.yaml new file mode 100644 index 0000000..5a6ab37 --- /dev/null +++ b/.github/workflows/labels.yaml @@ -0,0 +1,22 @@ +--- +name: Sync labels + +# yamllint disable-line rule:truthy +on: + push: + branches: + - main + paths: + - .github/labels.yml + +jobs: + labels: + name: ♻️ Sync labels + runs-on: ubuntu-latest + steps: + - name: ‡️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: πŸš€ Run Label Syncer + uses: micnncim/action-label-syncer@v1.2.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lock.yaml b/.github/workflows/lock.yaml new file mode 100644 index 0000000..ff147a2 --- /dev/null +++ b/.github/workflows/lock.yaml @@ -0,0 +1,21 @@ +--- +name: Lock + +# yamllint disable-line rule:truthy +on: + schedule: + - cron: "0 9 * * *" + workflow_dispatch: + +jobs: + lock: + name: πŸ”’ Lock closed issues and PRs + runs-on: ubuntu-latest + steps: + - uses: dessant/lock-threads@v2.0.3 + with: + github-token: ${{ github.token }} + issue-lock-inactive-days: "30" + issue-lock-reason: "" + pr-lock-inactive-days: "1" + pr-lock-reason: "" diff --git a/.github/workflows/release-drafter.yaml b/.github/workflows/release-drafter.yaml new file mode 100644 index 0000000..25f9856 --- /dev/null +++ b/.github/workflows/release-drafter.yaml @@ -0,0 +1,18 @@ +--- +name: Release Drafter + +# yamllint disable-line rule:truthy +on: + push: + branches: + - main + +jobs: + update_release_draft: + name: ✏️ Draft release + runs-on: ubuntu-latest + steps: + - name: πŸš€ Run Release Drafter + uses: release-drafter/release-drafter@v5.13.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 0000000..08b39ae --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,40 @@ +--- +name: Stale + +# yamllint disable-line rule:truthy +on: + schedule: + - cron: "0 8 * * *" + workflow_dispatch: + +jobs: + stale: + name: 🧹 Clean up stale issues and PRs + runs-on: ubuntu-latest + steps: + - name: πŸš€ Run stale + uses: actions/stale@v3.0.14 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + days-before-stale: 30 + days-before-close: 7 + remove-stale-when-updated: true + stale-issue-label: "stale" + exempt-issue-labels: "no-stale,help-wanted" + stale-issue-message: > + There hasn't been any activity on this issue recently, so we + clean up some of the older and inactive issues. + + Please make sure to update to the latest version and + check if that solves the issue. Let us know if that works for you + by leaving a comment πŸ‘ + + This issue has now been marked as stale and will be closed if no + further activity occurs. Thanks! + stale-pr-label: "stale" + exempt-pr-labels: "no-stale" + stale-pr-message: > + There hasn't been any activity on this pull request recently. This + pull request has been automatically marked as stale because of that + and will be closed if no further activity occurs within 7 days. + Thank you for your contributions. diff --git a/README.md b/README.md index 130d12f..df214f6 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ![Supports amd64 Architecture][amd64-shield] ![Supports i386 Architecture][i386-shield] -[![GitLab CI][gitlabci-shield]][gitlabci] +[![Github Actions][github-actions-shield]][github-actions] ![Project Maintenance][maintenance-shield] [![GitHub Activity][commits-shield]][commits] @@ -101,16 +101,16 @@ SOFTWARE. [buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg [buymeacoffee]: https://www.buymeacoffee.com/timmo [commits-shield]: https://img.shields.io/github/commit-activity/y/hassio-addons/addon-thelounge.svg -[commits]: https://github.com/hassio-addons/addon-thelounge/commits/master +[commits]: https://github.com/hassio-addons/addon-thelounge/commits/main [contributors]: https://github.com/hassio-addons/addon-thelounge/graphs/contributors [discord-ha]: https://discord.gg/c5DvZ4e [discord-shield]: https://img.shields.io/discord/478094546522079232.svg [discord]: https://discord.me/hassioaddons -[docs]: https://github.com/hassio-addons/addon-thelounge/blob/master/thelounge/DOCS.md +[docs]: https://github.com/hassio-addons/addon-thelounge/blob/main/thelounge/DOCS.md [forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg [forum]: https://community.home-assistant.io/?u=timmo001 -[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-thelounge/badges/master/pipeline.svg -[gitlabci]: https://gitlab.com/hassio-addons/addon-thelounge/pipelines +[github-actions-shield]: https://github.com/hassio-addons/addon-thelounge/workflows/CI/badge.svg +[github-actions]: https://github.com/hassio-addons/addon-thelounge/actions [i386-shield]: https://img.shields.io/badge/i386-yes-green.svg [issue]: https://github.com/hassio-addons/addon-thelounge/issues [license-shield]: https://img.shields.io/github/license/hassio-addons/addon-thelounge.svg @@ -120,5 +120,5 @@ SOFTWARE. [releases-shield]: https://img.shields.io/github/release/hassio-addons/addon-thelounge.svg [releases]: https://github.com/hassio-addons/addon-thelounge/releases [repository]: https://github.com/hassio-addons/repository -[screenshot]: https://raw.githubusercontent.com/hassio-addons/addon-thelounge/master/images/screenshot.png +[screenshot]: https://raw.githubusercontent.com/hassio-addons/addon-thelounge/main/images/screenshot.png [timmo]: https://github.com/timmo001 diff --git a/thelounge/DOCS.md b/thelounge/DOCS.md index 9f096f7..867a412 100644 --- a/thelounge/DOCS.md +++ b/thelounge/DOCS.md @@ -44,7 +44,7 @@ dealing with an unknown issue. Possible values are: - `debug`: Shows detailed debug information. - `info`: Normal (usually) interesting events. - `warning`: Exceptional occurrences that are not errors. -- `error`: Runtime errors that do not require immediate action. +- `error`: Runtime errors that do not require immediate action. - `fatal`: Something went terribly wrong. Add-on becomes unusable. Please note that each level automatically includes log messages from a @@ -72,33 +72,32 @@ The private key file to use for SSL. ### Option: `default_theme` The default theme for each user. The pre-installed themes are `default` and - `morning`. You can add more using the next option. +`morning`. You can add more using the next option. **Note**: _The theme can still be changed in the settings of the app_ ### Option: `themes` A list of themes to install which can be found in the [npm registry][themes]. - Use the name of the package. (refer to the example above) +Use the name of the package. (refer to the example above) ### Option: `users` A list of users to setup. At first, these will use the default password - `hassio`. **Make sure you change your password as soon as you login!** +`hassio`. **Make sure you change your password as soon as you login!** ## Changelog & Releases This repository keeps a change log using [GitHub's releases][releases] -functionality. The format of the log is based on -[Keep a Changelog][keepchangelog]. +functionality. Releases are based on [Semantic Versioning][semver], and use the format -of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented based on the following: -- ``MAJOR``: Incompatible or major changes. -- ``MINOR``: Backwards-compatible new features and enhancements. -- ``PATCH``: Backwards-compatible bugfixes and package updates. +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. ## Support @@ -151,7 +150,6 @@ SOFTWARE. [discord]: https://discord.me/hassioaddons [forum]: https://community.home-assistant.io/?u=timmo001 [issue]: https://github.com/hassio-addons/addon-thelounge/issues -[keepchangelog]: http://keepachangelog.com/en/1.0.0/ [reddit]: https://reddit.com/r/homeassistant [releases]: https://github.com/hassio-addons/addon-thelounge/releases [semver]: http://semver.org/spec/v2.0.0.htm diff --git a/thelounge/Dockerfile b/thelounge/Dockerfile index 035e16f..c88456a 100644 --- a/thelounge/Dockerfile +++ b/thelounge/Dockerfile @@ -33,25 +33,28 @@ COPY rootfs / # Build arguments ARG BUILD_ARCH ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME ARG BUILD_REF +ARG BUILD_REPOSITORY ARG BUILD_VERSION # Labels LABEL \ - io.hass.name="The Lounge" \ - io.hass.description="A self-hosted web IRC client" \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ io.hass.arch="${BUILD_ARCH}" \ io.hass.type="addon" \ io.hass.version=${BUILD_VERSION} \ maintainer="Timmo " \ - org.opencontainers.image.title="The Lounge" \ - org.opencontainers.image.description="A self-hosted web IRC client" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ org.opencontainers.image.vendor="Home Assistant Community Add-ons" \ org.opencontainers.image.authors="Timmo " \ org.opencontainers.image.licenses="MIT" \ org.opencontainers.image.url="https://addons.community" \ - org.opencontainers.image.source="https://github.com/hassio-addons/addon-thelounge" \ - org.opencontainers.image.documentation="https://github.com/hassio-addons/addon-thelounge/blob/master/README.md" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ org.opencontainers.image.created=${BUILD_DATE} \ org.opencontainers.image.revision=${BUILD_REF} \ org.opencontainers.image.version=${BUILD_VERSION} diff --git a/thelounge/build.json b/thelounge/build.json index a5c0524..b157595 100644 --- a/thelounge/build.json +++ b/thelounge/build.json @@ -1,11 +1,9 @@ { - "args": {}, "build_from": { "aarch64": "hassioaddons/base-aarch64:8.0.1", "amd64": "hassioaddons/base-amd64:8.0.1", "armhf": "hassioaddons/base-armhf:8.0.1", "armv7": "hassioaddons/base-armv7:8.0.1", "i386": "hassioaddons/base-i386:8.0.1" - }, - "squash": false + } } diff --git a/thelounge/config.json b/thelounge/config.json index c1c147d..c7fdbdf 100644 --- a/thelounge/config.json +++ b/thelounge/config.json @@ -5,11 +5,8 @@ "description": "A self-hosted web IRC client", "url": "https://github.com/hassio-addons/addon-thelounge", "webui": "[PROTO:ssl]://[HOST]:[PORT:80]", - "startup": "application", "arch": ["aarch64", "amd64", "armhf", "armv7", "i386"], - "boot": "auto", "hassio_api": true, - "hassio_role": "default", "homeassistant": "0.91.4", "homeassistant_api": true, "ingress": true, diff --git a/thelounge/rootfs/etc/thelounge/users/hassio.json b/thelounge/rootfs/etc/thelounge/users/hassio.json index 35aae8e..f911356 100644 --- a/thelounge/rootfs/etc/thelounge/users/hassio.json +++ b/thelounge/rootfs/etc/thelounge/users/hassio.json @@ -1,8 +1,8 @@ { - "password": "$2a$11$yq4ZxpU9QYlVvqGPX86KauLBPJVcJUlhSBFyCAzQ8XAguTmsv/Nr2", - "log": true, - "awayMessage": "", - "networks": [], - "sessions": {}, - "clientSettings": {} -} \ No newline at end of file + "password": "$2a$11$yq4ZxpU9QYlVvqGPX86KauLBPJVcJUlhSBFyCAzQ8XAguTmsv/Nr2", + "log": true, + "awayMessage": "", + "networks": [], + "sessions": {}, + "clientSettings": {} +}