diff --git a/.github/actions/run_tests/action.yaml b/.github/actions/run_tests/action.yaml index 490a00c4..d72d70c1 100644 --- a/.github/actions/run_tests/action.yaml +++ b/.github/actions/run_tests/action.yaml @@ -34,7 +34,7 @@ runs: echo '::endgroup::' echo '::group::Other dependencies' - poetry sync + poetry install --remove-untracked echo '::endgroup::' echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 3f5fe714..30adcd79 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -65,7 +65,7 @@ jobs: run: | pip install poetry poetry config --local virtualenvs.in-project true - poetry sync --no-root + poetry install --no-root --remove-untracked npm install echo "node_modules/.bin" >> "$GITHUB_PATH" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f8e203b2..5f694d25 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -19,6 +19,11 @@ on: type: boolean required: true default: true + include_brew: + description: 'Publish to Homebrew?' + type: boolean + required: true + default: true jobs: validate: @@ -63,7 +68,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: '3.13' + python-version: '3.12' - name: Checkout repo uses: actions/checkout@v4 @@ -107,3 +112,111 @@ jobs: run: | pypi_version="$(find dist/jrnl-*.tar.gz | sed -r 's!dist/jrnl-(.*)\.tar\.gz!\1!')" echo "pypi_version=$pypi_version" >> "$GITHUB_OUTPUT" + + release_homebrew: + if: ${{ github.event.inputs.include_brew == 'true' }} + needs: release_pypi + name: "Release to Homebrew" + runs-on: macos-latest + env: + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALL_CLEANUP: 1 + HOME_REPO: ${{ secrets.HOME_REPO }} + steps: + - name: Get version + run: | + JRNL_VERSION="${{ github.event.inputs.version }}" + PYPI_VERSION="${{ needs.release_pypi.outputs.pypi_version }}" + + echo "::debug::jrnl version: $JRNL_VERSION" + echo "::debug::pypi version: $PYPI_VERSION" + + echo "JRNL_VERSION=$JRNL_VERSION" >> "$GITHUB_ENV" + echo "PYPI_VERSION=$PYPI_VERSION" >> "$GITHUB_ENV" + + - name: Set env variables + env: + REPO_OWNER: ${{ github.repository_owner }} + run: | + if [[ $JRNL_VERSION =~ (alpha|beta) ]]; then + echo '::debug::Prerelease (not a full release)' + { + echo "RELEASE_TYPE=pre" + echo "FORMULA_REPO=${REPO_OWNER}/homebrew-prerelease" + echo "BOT_REPO=jrnl-bot/homebrew-prerelease" + echo "FORMULA_NAME=jrnl-beta" + } >> "$GITHUB_ENV" + else + echo '::debug::Full release (not a prerelease)' + if [[ "${{ github.repository }}" == "${HOME_REPO}" ]]; then + REPO_OWNER="homebrew" + fi + { + echo "RELEASE_TYPE=full" + echo "FORMULA_REPO=${REPO_OWNER}/homebrew-core" + echo "BOT_REPO=jrnl-bot/homebrew-core" + echo "FORMULA_NAME=jrnl" + } >> "$GITHUB_ENV" + fi + + - name: Tap formula + run: | + brew tap "${FORMULA_REPO}" + echo '::debug::Set tap directory' + echo "BREW_TAP_DIRECTORY=$(brew --repo "${FORMULA_REPO}")" >> "$GITHUB_ENV" + - name: Install dependencies + run: brew install pipgrip + + - name: Query PyPI API + uses: nick-invision/retry@v3 + with: + timeout_seconds: 10 + max_attempts: 30 + retry_wait_seconds: 10 + command: | + curl -Ls https://pypi.org/pypi/jrnl/json > api_response.json + # if query doesn't have our version yet, give it some time before trying again + if [[ "null" == "$(jq ".releases[\"${PYPI_VERSION}\"][1].url" -r api_response.json)" ]]; then + echo "::debug::PYPI_VERSION: $PYPI_VERSION" + echo "::debug::JQ VALUE: $(jq ".releases[\"${PYPI_VERSION}\"][1].url" -r api_response.json)" + echo "::group::cat api_response.json" + cat api_response.json + echo "::endgroup::" + exit 1 + fi + + - name: Update Homebrew Formula + uses: nick-invision/retry@v3 + with: + timeout_minutes: 8 + max_attempts: 6 + retry_wait_seconds: 30 + command: > + brew bump-formula-pr "${FORMULA_NAME}" + --url $(jq ".releases[\"${PYPI_VERSION}\"][1].url" -r api_response.json) + --sha256 $(jq ".releases[\"${PYPI_VERSION}\"][1].digests.sha256" -r api_response.json) + --no-audit + --write-only + --force + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v7 + with: + path: ${{ env.BREW_TAP_DIRECTORY }} + token: ${{ secrets.JRNL_BOT_TOKEN }} + push-to-fork: ${{ env.BOT_REPO }} + + committer: ${{ secrets.JRNL_BOT_NAME }} <${{ secrets.JRNL_BOT_EMAIL }}> + author: ${{ secrets.JRNL_BOT_NAME }} <${{ secrets.JRNL_BOT_EMAIL }}> + + title: jrnl ${{ env.JRNL_VERSION }} + body: Created with `brew bump-formula-pr` + + branch: jrnl-${{ env.JRNL_VERSION }}-- + branch-suffix: random + commit-message: | + jrnl ${{ env.JRNL_VERSION }} + + Update jrnl to ${{ env.JRNL_VERSION }} + + ${{ secrets.RELEASE_COAUTHORS }} diff --git a/CHANGELOG.md b/CHANGELOG.md index ba714328..9de01281 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,55 +2,7 @@ ## [Unreleased](https://github.com/jrnl-org/jrnl/) -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.2.1...HEAD) - -**Fixed bugs:** - -- poetry warning - "poetry.dev-dependencies" section is deprecated [\#1975](https://github.com/jrnl-org/jrnl/issues/1975) -- Homebrew autobump error on jrnl release [\#1961](https://github.com/jrnl-org/jrnl/issues/1961) - -**Build:** - -- Remove release step to publish to Homebrew [\#1994](https://github.com/jrnl-org/jrnl/pull/1994) ([micahellison](https://github.com/micahellison)) - -**Packaging:** - -- Update dependency rich to v14 [\#1989](https://github.com/jrnl-org/jrnl/pull/1989) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency python to 3.13 [\#1988](https://github.com/jrnl-org/jrnl/pull/1988) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.25.0 [\#1986](https://github.com/jrnl-org/jrnl/pull/1986) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tzlocal to v5.3.1 [\#1984](https://github.com/jrnl-org/jrnl/pull/1984) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency jinja2 to v3.1.6 [\#1983](https://github.com/jrnl-org/jrnl/pull/1983) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.33.1 [\#1982](https://github.com/jrnl-org/jrnl/pull/1982) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest to v8.3.5 [\#1981](https://github.com/jrnl-org/jrnl/pull/1981) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency cryptography to v44.0.2 [\#1980](https://github.com/jrnl-org/jrnl/pull/1980) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruff to v0.11.3 [\#1978](https://github.com/jrnl-org/jrnl/pull/1978) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v4.2.1](https://pypi.org/project/jrnl/v4.2.1/) (2025-02-25) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.2...v4.2.1) - -**Documentation:** - -- Typing animation in landing page is broken [\#1969](https://github.com/jrnl-org/jrnl/issues/1969) - -**Packaging:** - -- Update dependency pytest to \>=8.1.1 [\#1974](https://github.com/jrnl-org/jrnl/pull/1974) ([wren](https://github.com/wren)) -- Update dependency black to v25 [\#1973](https://github.com/jrnl-org/jrnl/pull/1973) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tzlocal to v5.3 [\#1972](https://github.com/jrnl-org/jrnl/pull/1972) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruamel.yaml to v0.18.10 [\#1967](https://github.com/jrnl-org/jrnl/pull/1967) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency jinja2 to v3.1.5 [\#1966](https://github.com/jrnl-org/jrnl/pull/1966) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency cryptography to v44 [\#1962](https://github.com/jrnl-org/jrnl/pull/1962) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency pytest-bdd to v8.1.0 [\#1952](https://github.com/jrnl-org/jrnl/pull/1952) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency poethepoet to v0.32.2 [\#1951](https://github.com/jrnl-org/jrnl/pull/1951) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency keyring to v25.6.0 [\#1948](https://github.com/jrnl-org/jrnl/pull/1948) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency ruff to v0.9.7 [\#1947](https://github.com/jrnl-org/jrnl/pull/1947) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency rich to v13.9.4 [\#1946](https://github.com/jrnl-org/jrnl/pull/1946) ([renovate[bot]](https://github.com/apps/renovate)) -- Update dependency tox to v4.24.1 [\#1945](https://github.com/jrnl-org/jrnl/pull/1945) ([renovate[bot]](https://github.com/apps/renovate)) - -## [v4.2](https://pypi.org/project/jrnl/v4.2/) (2024-11-17) - -[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.2-beta...v4.2) +[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v4.1...HEAD) **Implemented enhancements:** diff --git a/docs_theme/index.html b/docs_theme/index.html index 94ae2006..8e7f3d1f 100644 --- a/docs_theme/index.html +++ b/docs_theme/index.html @@ -103,7 +103,7 @@ License: https://www.gnu.org/licenses/gpl-3.0.html - +