mirror of
https://github.com/ArtemSBulgakov/buildozer-action.git
synced 2024-08-16 10:09:52 +02:00
Format files with pre-commit hook
This commit is contained in:
parent
5770a69f88
commit
d1bccff610
4 changed files with 91 additions and 14 deletions
|
@ -1,9 +1,9 @@
|
||||||
#!/bin/python3
|
#!/bin/python3
|
||||||
import os
|
import os
|
||||||
from os import environ as env
|
|
||||||
import sys
|
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from os import environ as env
|
||||||
|
|
||||||
binary_filename = os.path.abspath(sys.argv[1])
|
binary_filename = os.path.abspath(sys.argv[1])
|
||||||
master_repository_directory = os.path.abspath(sys.argv[2])
|
master_repository_directory = os.path.abspath(sys.argv[2])
|
||||||
|
@ -14,10 +14,20 @@ directory = sys.argv[4]
|
||||||
os.chdir(master_repository_directory)
|
os.chdir(master_repository_directory)
|
||||||
|
|
||||||
filename = os.path.basename(binary_filename)
|
filename = os.path.basename(binary_filename)
|
||||||
commit_hash = subprocess.check_output(["git", "rev-parse", "--verify", "--short", "HEAD"]).decode("utf-8").strip()
|
commit_hash = (
|
||||||
commit_subject = subprocess.check_output(["git", "log", "-1", "--pretty=format:%s"]).decode("utf-8").strip()
|
subprocess.check_output(["git", "rev-parse", "--verify", "--short", "HEAD"])
|
||||||
|
.decode("utf-8")
|
||||||
|
.strip()
|
||||||
|
)
|
||||||
|
commit_subject = (
|
||||||
|
subprocess.check_output(["git", "log", "-1", "--pretty=format:%s"])
|
||||||
|
.decode("utf-8")
|
||||||
|
.strip()
|
||||||
|
)
|
||||||
|
|
||||||
is_tag = env["GITHUB_EVENT_NAME"] == "push" and env["GITHUB_REF"].startswith("refs/tags")
|
is_tag = env["GITHUB_EVENT_NAME"] == "push" and env["GITHUB_REF"].startswith(
|
||||||
|
"refs/tags"
|
||||||
|
)
|
||||||
if not is_tag:
|
if not is_tag:
|
||||||
is_pr = env["GITHUB_REF"].startswith("refs/pull")
|
is_pr = env["GITHUB_REF"].startswith("refs/pull")
|
||||||
if is_pr:
|
if is_pr:
|
||||||
|
@ -30,8 +40,12 @@ if not is_tag:
|
||||||
filename = "-".join([*filename_split[:2], middle, *filename_split[2:]])
|
filename = "-".join([*filename_split[:2], middle, *filename_split[2:]])
|
||||||
|
|
||||||
# Set author info to the latest commit author
|
# Set author info to the latest commit author
|
||||||
author_name = subprocess.check_output(["git", "log", "-1", "--pretty=format:%an"]).decode("utf-8")
|
author_name = subprocess.check_output(
|
||||||
author_email = subprocess.check_output(["git", "log", "-1", "--pretty=format:%ae"]).decode("utf-8")
|
["git", "log", "-1", "--pretty=format:%an"]
|
||||||
|
).decode("utf-8")
|
||||||
|
author_email = subprocess.check_output(
|
||||||
|
["git", "log", "-1", "--pretty=format:%ae"]
|
||||||
|
).decode("utf-8")
|
||||||
|
|
||||||
# Move file
|
# Move file
|
||||||
os.chdir(data_repository_directory)
|
os.chdir(data_repository_directory)
|
||||||
|
@ -41,9 +55,15 @@ shutil.copy(binary_filename, os.path.join(directory, filename))
|
||||||
# Push changes
|
# Push changes
|
||||||
subprocess.check_call(["git", "config", "user.name", author_name])
|
subprocess.check_call(["git", "config", "user.name", author_name])
|
||||||
subprocess.check_call(["git", "config", "user.email", author_email])
|
subprocess.check_call(["git", "config", "user.email", author_email])
|
||||||
subprocess.check_call(["git", "pull", "--ff-only"]) # Ensure that there is no changes
|
subprocess.check_call(
|
||||||
|
["git", "pull", "--ff-only"]
|
||||||
|
) # Ensure that there is no changes
|
||||||
subprocess.check_call(["git", "add", os.path.join(directory, filename)])
|
subprocess.check_call(["git", "add", os.path.join(directory, filename)])
|
||||||
subprocess.check_call(["git", "commit", "-m", f"Add binary for {commit_hash}: \"{commit_subject}\""])
|
subprocess.check_call(
|
||||||
|
["git", "commit", "-m", f'Add binary for {commit_hash}: "{commit_subject}"']
|
||||||
|
)
|
||||||
subprocess.check_call(["git", "push"])
|
subprocess.check_call(["git", "push"])
|
||||||
|
|
||||||
print(f"Binary file: {env['GITHUB_SERVER_URL']}/{env['GITHUB_REPOSITORY']}/blob/{data_repository}/{directory}/{filename}")
|
print(
|
||||||
|
f"Binary file: {env['GITHUB_SERVER_URL']}/{env['GITHUB_REPOSITORY']}/blob/{data_repository}/{directory}/{filename}"
|
||||||
|
)
|
||||||
|
|
18
.pre-commit-config.yaml
Normal file
18
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# Pre-commit hooks.
|
||||||
|
# python3 -m pip install pre-commit
|
||||||
|
# pre-commit install
|
||||||
|
|
||||||
|
repos:
|
||||||
|
|
||||||
|
# Format Python
|
||||||
|
- repo: https://github.com/psf/black
|
||||||
|
rev: stable
|
||||||
|
hooks:
|
||||||
|
- id: black
|
||||||
|
|
||||||
|
# Sort imports
|
||||||
|
- repo: https://github.com/timothycrosley/isort
|
||||||
|
rev: 4.3.21
|
||||||
|
hooks:
|
||||||
|
- id: isort
|
||||||
|
additional_dependencies: ["toml"]
|
|
@ -11,8 +11,8 @@ order.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os import environ as env
|
|
||||||
import subprocess
|
import subprocess
|
||||||
|
from os import environ as env
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -134,12 +134,18 @@ def run_command(command):
|
||||||
|
|
||||||
def set_output(repository_root, workdir):
|
def set_output(repository_root, workdir):
|
||||||
if not os.path.exists("bin"):
|
if not os.path.exists("bin"):
|
||||||
print("::error::Output directory does not exist. See Buildozer log for error")
|
print(
|
||||||
|
"::error::Output directory does not exist. See Buildozer log for error"
|
||||||
|
)
|
||||||
exit(1)
|
exit(1)
|
||||||
filename = [
|
filename = [
|
||||||
file for file in os.listdir("bin") if os.path.isfile(os.path.join("bin", file))
|
file
|
||||||
|
for file in os.listdir("bin")
|
||||||
|
if os.path.isfile(os.path.join("bin", file))
|
||||||
][0]
|
][0]
|
||||||
path = os.path.normpath(os.path.join(repository_root, workdir, "bin", filename))
|
path = os.path.normpath(
|
||||||
|
os.path.join(repository_root, workdir, "bin", filename)
|
||||||
|
)
|
||||||
print(f"::set-output name=filename::{path}")
|
print(f"::set-output name=filename::{path}")
|
||||||
|
|
||||||
|
|
||||||
|
|
33
pyproject.toml
Normal file
33
pyproject.toml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# Format Python
|
||||||
|
[tool.black]
|
||||||
|
line-length = 80
|
||||||
|
target-version = ['py35', 'py36', 'py37', 'py38']
|
||||||
|
include = '(\.pyi?$|\.spec$)'
|
||||||
|
exclude = '''
|
||||||
|
(
|
||||||
|
/(
|
||||||
|
\.eggs
|
||||||
|
| \.git
|
||||||
|
| \.hg
|
||||||
|
| \.mypy_cache
|
||||||
|
| \.tox
|
||||||
|
| \.venv
|
||||||
|
| _build
|
||||||
|
| buck-out
|
||||||
|
| build
|
||||||
|
| dist
|
||||||
|
)/
|
||||||
|
| buildozer\.spec
|
||||||
|
)
|
||||||
|
'''
|
||||||
|
|
||||||
|
# Sort imports
|
||||||
|
# Settings to fit Black formatting
|
||||||
|
# Taken from https://github.com/timothycrosley/isort/issues/694
|
||||||
|
[tool.isort]
|
||||||
|
line_length = 80
|
||||||
|
include_trailing_comma = true
|
||||||
|
multi_line_output = 3
|
||||||
|
use_parantheses = true
|
||||||
|
force_grid_wrap = 0
|
||||||
|
ensure_newline_before_comments = true
|
Loading…
Reference in a new issue