Skip to content

Commit 5d20ee7

Browse files
committed
fix: quote normalization via black
1 parent 4207322 commit 5d20ee7

20 files changed

Lines changed: 732 additions & 732 deletions

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# CHANGELOG
22

3-
## Next Release
3+
## v2.2.0 (2025-10-17)
44

55
- Corrects broken brew path to Python (closes #64)
66
- Properly creates a local tap to link local changes to appease `brew update-python-resources`
77
- Disables brew updates, analytics, install cleanup, and hints for less noisy and faster builds
8+
- De-classes the entire app leaning into functional programming (since all methods were static anyway)
89

910
## v2.1.3 (2025-07-23)
1011

homebrew_releaser/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.1.3'
1+
__version__ = "2.2.0"

homebrew_releaser/app.py

Lines changed: 56 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,22 @@
4747
)
4848

4949

50-
GITHUB_BASE_URL = 'https://api.github.com'
50+
GITHUB_BASE_URL = "https://api.github.com"
5151

5252
# Required GitHub Action env variables from user
53-
INSTALL = os.getenv('INPUT_INSTALL')
54-
HOMEBREW_OWNER = os.getenv('INPUT_HOMEBREW_OWNER')
53+
INSTALL = os.getenv("INPUT_INSTALL")
54+
HOMEBREW_OWNER = os.getenv("INPUT_HOMEBREW_OWNER")
5555

5656
# Optional GitHub Action env variables from user
57-
COMMIT_OWNER = os.getenv('INPUT_COMMIT_OWNER', 'homebrew-releaser')
58-
COMMIT_EMAIL = os.getenv('INPUT_COMMIT_EMAIL', '[email protected]')
59-
DEPENDS_ON = os.getenv('INPUT_DEPENDS_ON')
60-
TEST = os.getenv('INPUT_TEST')
57+
COMMIT_OWNER = os.getenv("INPUT_COMMIT_OWNER", "homebrew-releaser")
58+
COMMIT_EMAIL = os.getenv("INPUT_COMMIT_EMAIL", "[email protected]")
59+
DEPENDS_ON = os.getenv("INPUT_DEPENDS_ON")
60+
TEST = os.getenv("INPUT_TEST")
6161
UPDATE_README_TABLE = (
62-
os.getenv('INPUT_UPDATE_README_TABLE', False) if os.getenv('INPUT_UPDATE_README_TABLE') != 'false' else False
62+
os.getenv("INPUT_UPDATE_README_TABLE", False) if os.getenv("INPUT_UPDATE_README_TABLE") != "false" else False
6363
) # Must check for string `false` since GitHub Actions passes the bool as a string
6464
DEBUG = (
65-
os.getenv('INPUT_DEBUG', False) if os.getenv('INPUT_DEBUG') != 'false' else False
65+
os.getenv("INPUT_DEBUG", False) if os.getenv("INPUT_DEBUG") != "false" else False
6666
) # Must check for string `false` since GitHub Actions passes the bool as a string
6767

6868

@@ -80,52 +80,52 @@ def run_github_action():
8080
_setup_logger()
8181
logger = woodchips.get(LOGGER_NAME)
8282

83-
logger.info(f'Starting Homebrew Releaser v{__version__}...')
83+
logger.info(f"Starting Homebrew Releaser v{__version__}...")
8484
_check_required_env_variables()
8585

86-
logger.info('Setting up git environment...')
86+
logger.info("Setting up git environment...")
8787
setup_git(COMMIT_OWNER, COMMIT_EMAIL, HOMEBREW_OWNER, HOMEBREW_TAP)
8888

89-
logger.info(f'Collecting data about {GITHUB_REPO}...')
90-
repository = make_github_get_request(url=f'{GITHUB_BASE_URL}/repos/{GITHUB_OWNER}/{GITHUB_REPO}').json()
89+
logger.info(f"Collecting data about {GITHUB_REPO}...")
90+
repository = make_github_get_request(url=f"{GITHUB_BASE_URL}/repos/{GITHUB_OWNER}/{GITHUB_REPO}").json()
9191
latest_release = make_github_get_request(
92-
url=f'https://api.github.com/repos/{GITHUB_OWNER}/{GITHUB_REPO}/releases/latest'
92+
url=f"https://api.github.com/repos/{GITHUB_OWNER}/{GITHUB_REPO}/releases/latest"
9393
).json()
94-
assets = latest_release['assets']
95-
version = VERSION or latest_release['tag_name']
96-
version_no_v = version.lstrip('v')
97-
logger.info(f'Latest release ({version}) successfully identified!')
94+
assets = latest_release["assets"]
95+
version = VERSION or latest_release["tag_name"]
96+
version_no_v = version.lstrip("v")
97+
logger.info(f"Latest release ({version}) successfully identified!")
9898

99-
logger.info('Generating tar archive checksum(s)...')
99+
logger.info("Generating tar archive checksum(s)...")
100100
archive_urls = []
101-
archive_checksum_entries = ''
101+
archive_checksum_entries = ""
102102

103103
# Auto-generated tar URL must come first for later use (order is important)
104104
if repository["private"]:
105-
logger.debug('Repository is private. Using auto-generated release tarball and zipball REST API endpoints.')
106-
archive_base_url = f'{GITHUB_BASE_URL}/repos/{GITHUB_OWNER}/{GITHUB_REPO}'
107-
auto_generated_release_tar = f'{archive_base_url}/tarball/{version}'
108-
auto_generated_release_zip = f'{archive_base_url}/zipball/{version}'
105+
logger.debug("Repository is private. Using auto-generated release tarball and zipball REST API endpoints.")
106+
archive_base_url = f"{GITHUB_BASE_URL}/repos/{GITHUB_OWNER}/{GITHUB_REPO}"
107+
auto_generated_release_tar = f"{archive_base_url}/tarball/{version}"
108+
auto_generated_release_zip = f"{archive_base_url}/zipball/{version}"
109109
else:
110-
logger.debug('Repository is public. Using auto-generated release tarball and zipball public URLs.')
111-
archive_base_url = f'https://github.com/{GITHUB_OWNER}/{GITHUB_REPO}/archive/refs/tags/{version}'
112-
auto_generated_release_tar = f'{archive_base_url}.tar.gz'
113-
auto_generated_release_zip = f'{archive_base_url}.zip'
110+
logger.debug("Repository is public. Using auto-generated release tarball and zipball public URLs.")
111+
archive_base_url = f"https://github.com/{GITHUB_OWNER}/{GITHUB_REPO}/archive/refs/tags/{version}"
112+
auto_generated_release_tar = f"{archive_base_url}.tar.gz"
113+
auto_generated_release_zip = f"{archive_base_url}.zip"
114114

115115
archive_urls.append(auto_generated_release_tar)
116116
archive_urls.append(auto_generated_release_zip)
117117

118118
target_browser_download_base_url = (
119-
f'https://github.com/{GITHUB_OWNER}/{GITHUB_REPO}/releases/download/{version}/{GITHUB_REPO}-{version_no_v}'
119+
f"https://github.com/{GITHUB_OWNER}/{GITHUB_REPO}/releases/download/{version}/{GITHUB_REPO}-{version_no_v}"
120120
)
121121
if TARGET_DARWIN_AMD64:
122-
archive_urls.append(f'{target_browser_download_base_url}-darwin-amd64.tar.gz')
122+
archive_urls.append(f"{target_browser_download_base_url}-darwin-amd64.tar.gz")
123123
if TARGET_DARWIN_ARM64:
124-
archive_urls.append(f'{target_browser_download_base_url}-darwin-arm64.tar.gz')
124+
archive_urls.append(f"{target_browser_download_base_url}-darwin-arm64.tar.gz")
125125
if TARGET_LINUX_AMD64:
126-
archive_urls.append(f'{target_browser_download_base_url}-linux-amd64.tar.gz')
126+
archive_urls.append(f"{target_browser_download_base_url}-linux-amd64.tar.gz")
127127
if TARGET_LINUX_ARM64:
128-
archive_urls.append(f'{target_browser_download_base_url}-linux-arm64.tar.gz')
128+
archive_urls.append(f"{target_browser_download_base_url}-linux-arm64.tar.gz")
129129

130130
checksums = []
131131
for archive_url in archive_urls:
@@ -136,24 +136,24 @@ def run_github_action():
136136
if archive_url == auto_generated_release_tar or archive_url == auto_generated_release_zip:
137137
download_url = archive_url
138138
else:
139-
download_url = asset['url']
139+
download_url = asset["url"]
140140

141141
if (
142142
archive_url == auto_generated_release_tar
143143
or archive_url == auto_generated_release_zip
144-
or archive_url == asset['browser_download_url']
144+
or archive_url == asset["browser_download_url"]
145145
):
146146
# For REST API requests, we should not stream archive file, but it is fine for browser URLs
147147
stream = False if archive_url.find("api.github.com") != -1 else True
148148
downloaded_filename = _download_archive(download_url, stream)
149149
checksum = calculate_checksum(downloaded_filename)
150150
archive_filename = get_filename_from_path(archive_url)
151-
archive_checksum_entries += f'{checksum} {archive_filename}\n'
151+
archive_checksum_entries += f"{checksum} {archive_filename}\n"
152152
checksums.append(
153153
{
154154
archive_filename: {
155-
'checksum': checksum,
156-
'url': archive_url,
155+
"checksum": checksum,
156+
"url": archive_url,
157157
}
158158
},
159159
)
@@ -162,7 +162,7 @@ def run_github_action():
162162

163163
write_file(CHECKSUM_FILE, archive_checksum_entries)
164164

165-
logger.info(f'Generating Homebrew formula for {GITHUB_REPO}...')
165+
logger.info(f"Generating Homebrew formula for {GITHUB_REPO}...")
166166
template = generate_formula_data(
167167
GITHUB_OWNER,
168168
GITHUB_REPO,
@@ -182,49 +182,49 @@ def run_github_action():
182182
formula_filename = f'{repository["name"]}.rb'
183183
formula_dir = get_working_dir(os.path.join(HOMEBREW_TAP, FORMULA_FOLDER))
184184
formula_filepath = os.path.join(formula_dir, formula_filename)
185-
write_file(formula_filepath, template, 'w')
185+
write_file(formula_filepath, template, "w")
186186

187187
if UPDATE_PYTHON_RESOURCES:
188-
logger.info('Attempting to update Python resources in the formula...')
188+
logger.info("Attempting to update Python resources in the formula...")
189189
setup_homebrew_tap(HOMEBREW_OWNER, HOMEBREW_TAP, formula_dir)
190190
update_python_resources(formula_dir, formula_filename)
191191
if DEBUG:
192-
with open(formula_filepath, 'r') as formula_file:
192+
with open(formula_filepath, "r") as formula_file:
193193
formula_content = formula_file.read()
194194
logger.debug(formula_content)
195195
else:
196-
logger.debug('Skipping update to Python resources.')
196+
logger.debug("Skipping update to Python resources.")
197197

198198
if UPDATE_README_TABLE:
199-
logger.info('Attempting to update the README\'s project table...')
199+
logger.info("Attempting to update the README's project table...")
200200
update_readme(HOMEBREW_TAP)
201201
else:
202-
logger.debug('Skipping update to project README.')
202+
logger.debug("Skipping update to project README.")
203203

204204
# Although users can skip a commit, still commit (but don't push) to dry-run the commit for debugging purposes
205205
add_git(HOMEBREW_TAP)
206206
commit_git(HOMEBREW_TAP, GITHUB_REPO, version)
207207

208208
if SKIP_COMMIT:
209-
logger.info(f'Skipping upload of checksum.txt to {HOMEBREW_TAP}.')
210-
logger.info(f'Skipping push to {HOMEBREW_TAP}.')
209+
logger.info(f"Skipping upload of checksum.txt to {HOMEBREW_TAP}.")
210+
logger.info(f"Skipping push to {HOMEBREW_TAP}.")
211211
else:
212-
logger.info(f'Attempting to upload checksum.txt to the latest release of {GITHUB_REPO}...')
212+
logger.info(f"Attempting to upload checksum.txt to the latest release of {GITHUB_REPO}...")
213213
upload_checksum_file(latest_release)
214-
logger.info(f'Attempting to release {version} of {GITHUB_REPO} to {HOMEBREW_TAP}...')
214+
logger.info(f"Attempting to release {version} of {GITHUB_REPO} to {HOMEBREW_TAP}...")
215215
push_git(HOMEBREW_TAP, HOMEBREW_OWNER)
216-
logger.info(f'Successfully released {version} of {GITHUB_REPO} to {HOMEBREW_TAP}!')
216+
logger.info(f"Successfully released {version} of {GITHUB_REPO} to {HOMEBREW_TAP}!")
217217

218218

219219
def _setup_logger():
220220
"""Setup a `woodchips` logger instance."""
221-
logging_level = 'DEBUG' if DEBUG else 'INFO'
221+
logging_level = "DEBUG" if DEBUG else "INFO"
222222

223223
logger = woodchips.Logger(
224224
name=LOGGER_NAME,
225225
level=logging_level,
226226
)
227-
logger.log_to_console(formatter='%(asctime)s - %(levelname)s - %(message)s')
227+
logger.log_to_console(formatter="%(asctime)s - %(levelname)s - %(message)s")
228228

229229

230230
def _check_required_env_variables():
@@ -241,9 +241,9 @@ def _check_required_env_variables():
241241
for env_variable in required_env_variables:
242242
if not env_variable:
243243
raise SystemExit(
244-
'You must provide all necessary environment variables. Please reference the Homebrew Releaser documentation.' # noqa
244+
"You must provide all necessary environment variables. Please reference the Homebrew Releaser documentation." # noqa
245245
)
246-
logger.debug('All required environment variables are present.')
246+
logger.debug("All required environment variables are present.")
247247

248248

249249
def _download_archive(url: str, stream: Optional[bool] = False) -> str:
@@ -253,7 +253,7 @@ def _download_archive(url: str, stream: Optional[bool] = False) -> str:
253253
stream=stream,
254254
)
255255
filename = get_filename_from_path(url)
256-
write_file(filename, response.content, 'wb')
256+
write_file(filename, response.content, "wb")
257257

258258
return filename
259259

@@ -262,5 +262,5 @@ def main():
262262
run_github_action()
263263

264264

265-
if __name__ == '__main__':
265+
if __name__ == "__main__":
266266
main()

homebrew_releaser/checksum.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def calculate_checksum(tar_filepath: str) -> str:
2222
try:
2323
with open(get_working_dir(tar_filepath), "rb") as content:
2424
checksum = hashlib.sha256(content.read()).hexdigest()
25-
logger.debug(f'Checksum for {tar_filepath} generated successfully: {checksum}')
25+
logger.debug(f"Checksum for {tar_filepath} generated successfully: {checksum}")
2626
except Exception as error:
2727
raise SystemExit(error)
2828

@@ -33,14 +33,14 @@ def upload_checksum_file(latest_release: dict[str, Any]):
3333
"""Uploads a `checksum.txt` file to the latest release of the repo."""
3434
logger = woodchips.get(LOGGER_NAME)
3535

36-
latest_release_id = latest_release['id']
36+
latest_release_id = latest_release["id"]
3737

38-
with open(get_working_dir(CHECKSUM_FILE), 'rb') as filename:
38+
with open(get_working_dir(CHECKSUM_FILE), "rb") as filename:
3939
checksum_file_content = filename.read()
4040

41-
upload_url = f'https://uploads.github.com/repos/{GITHUB_OWNER}/{GITHUB_REPO}/releases/{latest_release_id}/assets?name={CHECKSUM_FILE}' # noqa
41+
upload_url = f"https://uploads.github.com/repos/{GITHUB_OWNER}/{GITHUB_REPO}/releases/{latest_release_id}/assets?name={CHECKSUM_FILE}" # noqa
4242
headers = GITHUB_HEADERS.copy()
43-
headers['Content-Type'] = 'text/plain'
43+
headers["Content-Type"] = "text/plain"
4444

4545
try:
4646
response = requests.post(
@@ -50,6 +50,6 @@ def upload_checksum_file(latest_release: dict[str, Any]):
5050
timeout=TIMEOUT,
5151
)
5252
response.raise_for_status()
53-
logger.info(f'checksum.txt uploaded successfully to {GITHUB_REPO}.')
53+
logger.info(f"checksum.txt uploaded successfully to {GITHUB_REPO}.")
5454
except requests.exceptions.RequestException as error:
5555
raise SystemExit(error)

homebrew_releaser/constants.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,56 +2,56 @@
22

33

44
# User Input
5-
FORMULA_FOLDER = os.getenv('INPUT_FORMULA_FOLDER', 'Formula')
6-
GITHUB_TOKEN = os.getenv('INPUT_GITHUB_TOKEN')
7-
HOMEBREW_TAP = os.getenv('INPUT_HOMEBREW_TAP')
5+
FORMULA_FOLDER = os.getenv("INPUT_FORMULA_FOLDER", "Formula")
6+
GITHUB_TOKEN = os.getenv("INPUT_GITHUB_TOKEN")
7+
HOMEBREW_TAP = os.getenv("INPUT_HOMEBREW_TAP")
88
SKIP_COMMIT = (
9-
os.getenv('INPUT_SKIP_COMMIT', False) if os.getenv('INPUT_SKIP_COMMIT') != 'false' else False
9+
os.getenv("INPUT_SKIP_COMMIT", False) if os.getenv("INPUT_SKIP_COMMIT") != "false" else False
1010
) # Must check for string `false` since GitHub Actions passes the bool as a string
11-
DOWNLOAD_STRATEGY = os.getenv('INPUT_DOWNLOAD_STRATEGY')
12-
CUSTOM_REQUIRE = os.getenv('INPUT_CUSTOM_REQUIRE')
13-
FORMULA_INCLUDES = os.getenv('INPUT_FORMULA_INCLUDES')
11+
DOWNLOAD_STRATEGY = os.getenv("INPUT_DOWNLOAD_STRATEGY")
12+
CUSTOM_REQUIRE = os.getenv("INPUT_CUSTOM_REQUIRE")
13+
FORMULA_INCLUDES = os.getenv("INPUT_FORMULA_INCLUDES")
1414
UPDATE_PYTHON_RESOURCES = (
1515
os.getenv("INPUT_UPDATE_PYTHON_RESOURCES", False)
1616
if os.getenv("INPUT_UPDATE_PYTHON_RESOURCES") != "false"
1717
else False
1818
)
19-
VERSION = os.getenv('INPUT_VERSION')
19+
VERSION = os.getenv("INPUT_VERSION")
2020

2121
# App Constants
22-
LOGGER_NAME = 'homebrew-releaser'
22+
LOGGER_NAME = "homebrew-releaser"
2323
TIMEOUT = 300
2424
GITHUB_HEADERS = {
25-
'Accept': 'application/vnd.github.v3+json',
26-
'Agent': 'Homebrew Releaser',
27-
'Authorization': f'Bearer {GITHUB_TOKEN}',
25+
"Accept": "application/vnd.github.v3+json",
26+
"Agent": "Homebrew Releaser",
27+
"Authorization": f"Bearer {GITHUB_TOKEN}",
2828
}
29-
CHECKSUM_FILE = 'checksum.txt'
30-
WORKING_DIR = '/tmp/homebrew-releaser' # nosec
29+
CHECKSUM_FILE = "checksum.txt"
30+
WORKING_DIR = "/tmp/homebrew-releaser" # nosec
3131

3232
# Formula Constants
3333
ARTICLES = {
34-
'a',
35-
'an',
36-
'the',
34+
"a",
35+
"an",
36+
"the",
3737
}
3838
MAX_DESC_FIELD_LENGTH = 80 # `brew audit` wants no more than 80 characters in the desc field
3939

4040
# GitHub Action env variables set by GitHub
41-
GITHUB_REPOSITORY = os.getenv('GITHUB_REPOSITORY', 'user/repo').split('/')
41+
GITHUB_REPOSITORY = os.getenv("GITHUB_REPOSITORY", "user/repo").split("/")
4242
GITHUB_OWNER = GITHUB_REPOSITORY[0]
4343
GITHUB_REPO = GITHUB_REPOSITORY[1]
4444

4545
# Matrix targets to add URL/checksum targets for
4646
TARGET_DARWIN_AMD64 = (
47-
os.getenv('INPUT_TARGET_DARWIN_AMD64', False) if os.getenv('INPUT_TARGET_DARWIN_AMD64') != 'false' else False
47+
os.getenv("INPUT_TARGET_DARWIN_AMD64", False) if os.getenv("INPUT_TARGET_DARWIN_AMD64") != "false" else False
4848
) # Must check for string `false` since GitHub Actions passes the bool as a string
4949
TARGET_DARWIN_ARM64 = (
50-
os.getenv('INPUT_TARGET_DARWIN_ARM64', False) if os.getenv('INPUT_TARGET_DARWIN_ARM64') != 'false' else False
50+
os.getenv("INPUT_TARGET_DARWIN_ARM64", False) if os.getenv("INPUT_TARGET_DARWIN_ARM64") != "false" else False
5151
) # Must check for string `false` since GitHub Actions passes the bool as a string
5252
TARGET_LINUX_AMD64 = (
53-
os.getenv('INPUT_TARGET_LINUX_AMD64', False) if os.getenv('INPUT_TARGET_LINUX_AMD64') != 'false' else False
53+
os.getenv("INPUT_TARGET_LINUX_AMD64", False) if os.getenv("INPUT_TARGET_LINUX_AMD64") != "false" else False
5454
) # Must check for string `false` since GitHub Actions passes the bool as a string
5555
TARGET_LINUX_ARM64 = (
56-
os.getenv('INPUT_TARGET_LINUX_ARM64', False) if os.getenv('INPUT_TARGET_LINUX_ARM64') != 'false' else False
56+
os.getenv("INPUT_TARGET_LINUX_ARM64", False) if os.getenv("INPUT_TARGET_LINUX_ARM64") != "false" else False
5757
) # Must check for string `false` since GitHub Actions passes the bool as a string

0 commit comments

Comments
 (0)