- Changes the default
formula_folder
fromformula
toFormula
to follow the Homebrew convention and allow Linux installs to properly find the folder for installs out of the box without additional configuration- macOS is not case sensitive and didn't care about the casing of the directory whereas Linux does
- Upgrades Python from 3.12 to 3.13
- Fixes a bug that would not generate a proper class name for formula if it contained a digit (closes #47)
- Adds new
formula_includes
parameter to allow including items in the built formula- eg: including a Python virtual environment, see the Python Docs for more details
- Corrects regression introduced in
v0.18.2
on the URLs used for public repo asset downloads - Removes the quotes that previously wrapped commit messages unintentionally
- Uses a conventional commit message structure
- Bumps development dependencies
WARNING: Do not use this version, please use v0.18.3 or later!
- Fixes the URLs used to download the default zip/tars for private repos
- Corrects order of
version
definition in formula generation to satisfy the ever-changing Homebrew audit rules
- Adds a
version
parameter which can override the automatically detected version of a formula with an explicit value
- Upgrades from Python 3.11 to Python 3.12
- Corrects
/archive
URLs to the new/archive/refs/tags
URLs to satisfybrew audit
- Only strips the leading
v
from the version string instead of replacing allv
s with nothing so versions such asv0.1.0.dev0
can be picked up
- Enables typing in generated formula to appease
brew audit
- Fixes a bug that wouldn't build formula when no assets were present
- Writes checksum file once instead of appending for each
- Better assignment of autogenerated_tar_archive checksum by always taking the first index instead of doing a check
- Refactors git subprocess error handling
- Sends
stderr
tostdout
and captures the subprocess error output as text (previously got clobbered) - Returns stack trace
- Use new helper function to keep all git calls uniform
- More appropriate error logging and capture
- Better tests surrounding subprocesses
- Sends
- When updating a README table, we now only
git add
once instead of twice - Even if you specify
skip_commit
, we will now rungit commit
but will continue to skip thegit push
, this will ensure a more complete dry-run and will help debug committing issues since it now can commit safely without updating a remote repo
- Fixes a packaging issue with v0.16.1
- Use
x-access-token
as Username when authenticating for git clone and push operations which should allow password to explicitly be stored in the correct field - Adds a
30 second
timeout to all HTTP requests (previously could run forever)
- Adds
download_strategy
input to define a custom Homebrew download strategy for your formula - Adds
custom_require
input to define a customrelative_require
in the formula template - Fixes a bug where the browser URL was used to download assets instead of the asset URL which wasn't accessible by private repos
- Fixes a spacing issue in formula templates when only one architecture is specified for each OS
- Instead of retrieving a list of all tags and then grabbing the most recent one, we grab the latest release and grab the tag from it. Most workflows should continue to work as expected if you were cutting GitHub releases; however, if you were using this action without using GitHub releases and only using git tags, you will need to start using releases per the README. This change was necessary to get asset URLs working along with bringing the expectation more inline with what the docs suggested in the README. This should also slightly improve performance for repos with many tags since the response from GitHub will be much smaller
- Add support for private repos by using the already existing
GITHUB_TOKEN
env var available to GitHub Actions to make authenticated HTTP requests to the GitHub API instead of the previously unauthenticated requests
- Bumps image from Python 3.10 to 3.11
- Strips formula name from description on generated formula to be compliant with
brew audit
- No longer populates an empty
license
field when one is not provided, usesNA
fordesc
when one is not provided to be compliant withbrew audit
- Bumps test dependencies
- Adds a missing newline after replacing the README table if elected
- Fixes an ommission of start/end tags on the replacement README table
- Fixes a bug that wouldn't update a README table if there was no content between the start and end tags
- README filename determination is much more robust allowing for alternative filename casing
- Added error handling for formula directories that do not contain any Ruby files
- Comprehensive, 100% test coverage for the
update_readme
module - Added
bandit
for security scanning and added newisort
config
- Fixes a bug that would replace the README table start/end tags when replacing the content of a table. Now the tags will remain while the table content itself will get updated
- Fixes a bug that wouldn't generate the README table correctly even when the start and end tags were found
- Fixes a bug where the README table could be updated even if there was no end tag, effectively replacing the remaining content after a start tag in your README
- Fixes a bug that would attempt to generate an updated README table even if it could not find the old table location to replace it (closes #19)
- Fixes a bug where
false
booleans in the GitHub Actions configuration would still pass through truthy. This is because GitHub Actions passes all env vars to the action as a string. We simply check for false strings and coerce them to False bools now (closes #16) - Fixes a bug that would kill the action when no
license
ordescription
was set on a repo (closes #17) - Fixes an error where a few variables were referenced before assignment due to some nested if statements in README generation (closes #18)
- Adds support for OS/arch targets such as Linux and Darwin, AMD64 and ARM64 (closes #9 & #14)
- Generates a checksum for the auto-generate
.zip
release archive in addition the auto-generated.tar.gz
archive - Adds better error handling for HTTP errors
- Completely overhauls the formula templating engine allowing for easy future additions if necessary
- Added the
depends_on
key to formulas allowing users to specify dependencies for their formulas - Reworked formula generation logic and tests to be more accurate and explicit for better formula generation (we now audit the test formula on CI)
- Adds a
checksum.txt
file to the latest release of your repo containing the checksums of all "released" assets (binaries, scripts, etc) - Bumps minimum version of Python from 3.7 to 3.9
- Adds
mypy
type checking
- Restores previous logger formatting for console output
- Uses
woodchips
for logging - Bumps
pretty_tables
to v2 - Bump Python version used from 3.9 to 3.10
- Adds Python type hinting
- Fixes a bug that setup the git environment incorrectly after the shell refactor from the last release
- Refactors shell operations to no longer invoke a shell when using the subprocess module. No longer change directories but instead call git operations directly from the destination path
- Removes the
bottle :unneeded
from formula generation as it's been deprecated
- Rebuild with the corrected
pretty-tables
library which re-adds the horizontal break between headers and row data - Removes the
mock
library in favor of the builtinunittest.mock
library - Bumps the minimum Python version to 3.7
- Refactored app completely by splitting up all logic into separate modules
- We now use the latest tag instead of release as releases can often be named instead of sticking to strict version numbers (closes #4, closes #7)
- Adds
an
to the list of articles to strip out of formula descriptions - Changed
Installation
header in README updater toInstall
- Added better error handling surrounding the README updater
- Exposed
DEBUG
logging to the user via thedebug: true
flag to assist in troubleshooting the GitHub Action if necessary - Made all functions static methods
- Added better test coverage
- Split up git
add
,commit
, andpush
functionality for better flexibilty - Additional info and debugging statements for each step were added
- Various small improvements and bug fixes
- Pins dependencies
- I'm ashamed to need to release 7 versions in a single night...
- Bug fixes for opening/writing README file
- Setup a testing environment via Docker to assist with end-to-end testing this github action locally
- Added more logging and renamed other output
- Variious bug fixes
- Reworks git setup command order
- Properly navigate to git directory
- Corrects Dockerfile copy command now that this is a package and not a single script
- Fix bad import
- Adds a feature to update the project table in the homebrew tap's README which includes all the formula name, descriptions, and installation commands (set
update_readme_table
totrue
) - Drops the clone depth of a repo from
5
to2
- Changes the git config from a global scope to local scope (helps during testing by not accidentally blowing away real credentials)
- Various code refactor
- Added automated releasing (retagging) of Homebrew Releaser via GitHub Actions. When a new version is released, GitHub Actions will automatically update the stable
v1
tag to point to the latest release
- Small bug fix that sets the default formula folder
- Overhauled the configurable options and provided more defaults out of the box. Changes include:
- No longer support
owner
andrepo
as these variables are given to use by GitHub already - Changed
homebrew_formula_folder
toformula_folder
- added a default offormula
- Changed
owner_email
tocommit_email
and addedcommit_owner
- added defaults of[email protected]
andhomebrew-releaser
respectively - Added
homebrew_owner
as an option to go alongside the already existinghomebrew_tap
, this allows you to release to a tap that may not be owned by the same person
- No longer support
- Updated documentation with all changes
- Cut out extra overhead on the Dockerfile to improve performance
- Properly format
desc
field to passbrew audit
by stripping articles from the beginning if present and hard stops from the end (all periods and exclamations) - Added additional logging for
info
anddebug
modes and fixed a typo in the output - Added an optional env variable
skip_commit
which will skip committing the generated formula to a homebrew tap. Useful for local testing
- Fixes
brew audit
lint rules by adding an extra line between magic comments and adding missingtyped: false
comment - Added the
logging
module and replaced print statements - 100% code coverage
- Code cleanup
- Important bug fix required to get Homebrew Releaser running
- More unit tests
- Changed name from
shell-releaser
tohomebrew-releaser
as this tool can really be used for any kind of script, binary, or executable - Changed env variable of
bin_install
to simplyinstall
as you may not need/want to place your scripts in bin and usesystem
instead - Switch from
python-3.9
topython3.9-alpine
Docker image for much faster performance. Manually installgit
andperl-utils
in Docker image as we depend on them for correct operation - Added try/except blocks and properly throw exit codes/messages for each functionality
- Added
test
input variable so you can specify tests - Added checks and balances ensuring environment variables are set before running
- Added sane defaults for a few internal variables
- Added
license
to generated formula - Maxing out git clone depth to the
latest 5 commits
to greatly improve performance on large homebrew taps - Added unit tests
- Added GitHub Actions to lint and test the project
- Refactored code into smaller testable units, other various bug fixes
- Adding missing args to
action.yml
- Fixes Dockerfile to run in GitHub Actions environment
- Updated README with usage instructions
- Added a success message when the workflow completes
- Initial release
- Generates a Homebrew formula file based off the latest release of a project updating the name, description, checksum, and tar url