From 7c34e718ce62c27f05e0d1c1ba0c99776aabd941 Mon Sep 17 00:00:00 2001 From: Tommaso Negri Date: Mon, 4 Dec 2023 15:56:35 +0100 Subject: [PATCH] Initial commit --- .github/workflows/publish.yml | 39 +++++++++++++++++++++++++ .github/workflows/tests.yml | 40 +++++++++++++++++++++++++ .gitignore | 2 ++ README.md | 11 +++++++ cmd/bx-tap-content-info.rb | 55 +++++++++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+) create mode 100644 .github/workflows/publish.yml create mode 100644 .github/workflows/tests.yml create mode 100644 .gitignore create mode 100644 README.md create mode 100755 cmd/bx-tap-content-info.rb diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..da14201 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,39 @@ +name: brew pr-pull +on: + pull_request_target: + types: + - labeled +jobs: + pr-pull: + if: contains(github.event.pull_request.labels.*.name, 'pr-pull') + runs-on: ubuntu-22.04 + permissions: + contents: write + packages: none + pull-requests: write + steps: + - name: Set up Homebrew + uses: Homebrew/actions/setup-homebrew@master + + - name: Set up git + uses: Homebrew/actions/git-user-config@master + + - name: Pull bottles + env: + HOMEBREW_GITHUB_API_TOKEN: ${{ github.token }} + HOMEBREW_GITHUB_PACKAGES_TOKEN: ${{ github.token }} + HOMEBREW_GITHUB_PACKAGES_USER: ${{ github.actor }} + PULL_REQUEST: ${{ github.event.pull_request.number }} + run: brew pr-pull --debug --tap=$GITHUB_REPOSITORY $PULL_REQUEST + + - name: Push commits + uses: Homebrew/actions/git-try-push@master + with: + token: ${{ github.token }} + branch: main + + - name: Delete branch + if: github.event.pull_request.head.repo.fork == false + env: + BRANCH: ${{ github.event.pull_request.head.ref }} + run: git push --delete origin $BRANCH diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..9c0a442 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,40 @@ +name: brew test-bot +on: + push: + branches: + - main + pull_request: +jobs: + test-bot: + strategy: + matrix: + os: [ubuntu-22.04, macos-13] + runs-on: ${{ matrix.os }} + steps: + - name: Set up Homebrew + id: set-up-homebrew + uses: Homebrew/actions/setup-homebrew@master + + - name: Cache Homebrew Bundler RubyGems + id: cache + uses: actions/cache@v3 + with: + path: ${{ steps.set-up-homebrew.outputs.gems-path }} + key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }} + restore-keys: ${{ runner.os }}-rubygems- + + - run: brew test-bot --only-cleanup-before + + - run: brew test-bot --only-setup + + - run: brew test-bot --only-tap-syntax + + - run: brew test-bot --only-formulae + if: github.event_name == 'pull_request' + + - name: Upload bottles as artifact + if: always() && github.event_name == 'pull_request' + uses: actions/upload-artifact@main + with: + name: bottles + path: '*.bottle.*' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..168dab3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +.nova \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e7ac0be --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Paninihouse Brewerx + +## How do I install these formulae? + +`brew install paninihouse/brewerx/` + +Or `brew tap paninihouse/brewerx` and then `brew install `. + +## Documentation + +`brew help`, `man brew` or check [Homebrew's documentation](https://docs.brew.sh). diff --git a/cmd/bx-tap-content-info.rb b/cmd/bx-tap-content-info.rb new file mode 100755 index 0000000..83768d4 --- /dev/null +++ b/cmd/bx-tap-content-info.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +require "formula" +require "json" + +module Homebrew + module_function + + def bx_tap_content_info_args + Homebrew::CLI::Parser.new do + description <<~EOS + Do something. Place a description here. + EOS + flag "--json", + description: "Print a JSON representation. Currently the default value for is `v1` for " \ + ". For and use `v2`. See the docs for examples of using the " \ + "JSON output: " + switch "--formula", "--formulae", + description: "Treat all named arguments as formulae." + switch "--cask", "--casks", + description: "Treat all named arguments as casks." + conflicts "--formula", "--cask" + + named_args [:tap] + end + end + + def bx_tap_content_info + args = bx_tap_content_info_args.parse + + formulae = [] + casks = [] + + Tap.each do |tap| + unless args.cask? + tap.formula_files.each do |formula_file| + formulae << Formulary.factory(formula_file) + end + end + + unless args.formula? + tap.cask_files.each do |cask_file| + casks << Cask::CaskLoader::FromTapPathLoader.new(cask_file).load(config: nil) + end + end + end + + json = { + "formulae": formulae.map(&:to_hash), + "casks": casks.map(&:to_h) + } + + puts JSON.pretty_generate(json) + end +end