diff --git a/.github/workflows/bumpgen-core.yml b/.github/workflows/bumpgen-core.yml new file mode 100644 index 0000000..0dab179 --- /dev/null +++ b/.github/workflows/bumpgen-core.yml @@ -0,0 +1,26 @@ +name: "Bumpgen (core)" + +on: + pull_request: + types: + - opened + - labeled + +permissions: + pull-requests: read + +jobs: + main: + name: Run Bumpgen + runs-on: ubuntu-latest + if: ${{ github.actor == 'dependabot[bot]' || contains( github.event.pull_request.labels.*.name, 'run bumpgen') }} + steps: + - uses: actions/checkout@v4 + - name: Setup + uses: ./tooling/github/setup + - name: Bumpgen + uses: ./ + with: + path: "./packages/bumpgen-core/" + llm_key: ${{ secrets.LLM_API_KEY }} + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..226b469 --- /dev/null +++ b/action.yml @@ -0,0 +1,51 @@ +name: "bumpgen" +description: "handle breaking changes from dependency upgrades" +author: Xeol + +inputs: + path: + description: Repository path + required: false + default: "./" + llm_key: + description: "LLM API key" + required: true + github_token: + description: "GitHub token" + required: true + +runs: + using: "composite" + steps: + - shell: bash + env: + LLM_API_KEY: ${{ inputs.llm_key }} + run: | + npm install -g bumpgen + bumpgen --simple --dir ${{ inputs.path }} --no-upgrade --auto-detect + - shell: bash + name: Configure Git + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + - shell: bash + name: Check for changes and commit + id: commit_changes + env: + GITHUB_TOKEN: ${{ inputs.github_token }} + run: | + git add -u + if ! git diff-index --quiet HEAD; then + git commit -m "chore: run bumpgen" + echo "::set-output name=changes_detected::true" + else + echo "No changes to commit" + echo "::set-output name=changes_detected::false" + fi + + - name: Push changes + if: steps.commit_changes.outputs.changes_detected == 'true' + uses: ad-m/github-push-action@master + with: + github_token: ${{ inputs.github_token }} + branch: ${{ github.ref }} diff --git a/apps/cli/src/index.tsx b/apps/cli/src/index.tsx index f40a4c5..747eafb 100644 --- a/apps/cli/src/index.tsx +++ b/apps/cli/src/index.tsx @@ -78,7 +78,9 @@ const available = await bumpFinder.list(); if (!pkg) { if (autoDetect) { - const detected = await bumpFinder.detect(); + const detected = await bumpFinder.detect( + autoDetect === true ? undefined : autoDetect, + ); if (detected.length > 0) { if (detected.length > 1) { diff --git a/packages/bumpgen-core/src/services/git/index.ts b/packages/bumpgen-core/src/services/git/index.ts index 145918c..604d9c9 100644 --- a/packages/bumpgen-core/src/services/git/index.ts +++ b/packages/bumpgen-core/src/services/git/index.ts @@ -12,7 +12,7 @@ export const createGitService = ( raw: git, getMainBranch: async (cwd: string) => { await git.cwd(cwd); - return ( + const mainBranch = ( await subprocess.exec( "git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'", { @@ -20,6 +20,12 @@ export const createGitService = ( }, ) ).trim(); + + if (!mainBranch) { + return null; + } + + return mainBranch; }, }; };