From 57625be77f62afd8a65ce157b53f46640709aace Mon Sep 17 00:00:00 2001 From: pseusys Date: Sat, 11 Mar 2023 20:40:40 +0100 Subject: [PATCH] single commit option added --- .env.example | 1 + action.yml | 5 +++++ sources/manager_environment.py | 1 + sources/manager_github.py | 15 ++++++++++++--- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index fbe85ad..c5a72fe 100644 --- a/.env.example +++ b/.env.example @@ -20,5 +20,6 @@ INPUT_SHOW_UPDATED_DATE=True INPUT_UPDATED_DATE_FORMAT=%d/%m/%Y %H:%M:%S INPUT_COMMIT_BY_ME=True INPUT_COMMIT_MESSAGE=Updated with Dev Metrics +INPUT_COMMIT_SINGLE=True INPUT_DEBUG_LOGGING=True DEBUG_RUN=True diff --git a/action.yml b/action.yml index 91646ed..92dbebc 100644 --- a/action.yml +++ b/action.yml @@ -112,6 +112,11 @@ inputs: description: "Git commit custom email" default: "" + COMMIT_SINGLE: + required: false + description: "Erase commit history on each commit" + default: "False" + LOCALE: required: false description: "Show stats in your own language" diff --git a/sources/manager_environment.py b/sources/manager_environment.py index a38a782..ead2068 100644 --- a/sources/manager_environment.py +++ b/sources/manager_environment.py @@ -38,6 +38,7 @@ class EnvironmentManager: COMMIT_MESSAGE = getenv("INPUT_COMMIT_MESSAGE", "Updated with Dev Metrics") COMMIT_USERNAME = getenv("INPUT_COMMIT_USERNAME", "") COMMIT_EMAIL = getenv("INPUT_COMMIT_EMAIL", "") + COMMIT_SINGLE = getenv("INPUT_COMMIT_SINGLE", "").lower() in _TRUTHY LOCALE = getenv("INPUT_LOCALE", "en") UPDATED_DATE_FORMAT = getenv("INPUT_UPDATED_DATE_FORMAT", "%d/%m/%Y %H:%M:%S") diff --git a/sources/manager_github.py b/sources/manager_github.py index 93eb806..70c6c4f 100644 --- a/sources/manager_github.py +++ b/sources/manager_github.py @@ -30,6 +30,7 @@ class GitHubManager: _REMOTE_NAME: str _REMOTE_PATH: str + _SINGLE_COMMIT_BRANCH = "latest_branch" _START_COMMENT = f"" _END_COMMENT = f"" @@ -55,7 +56,8 @@ class GitHubManager: GitHubManager.REPO = Repo.clone_from(GitHubManager._REPO_PATH, to_path=clone_path) GitHubManager.REPO.git.checkout(GitHubManager.branch()) - # TODO: delete and recreate branch if single commit + if EM.COMMIT_SINGLE: + GitHubManager.REPO.git.checkout("--orphan", GitHubManager._SINGLE_COMMIT_BRANCH) @staticmethod def _get_author() -> Actor: @@ -147,8 +149,15 @@ class GitHubManager: actor = GitHubManager._get_author() DBM.i("Committing files to repo...") GitHubManager.REPO.index.commit(EM.COMMIT_MESSAGE, author=actor, committer=actor) - DBM.i("Pushing files to repo...") - headers = GitHubManager.REPO.remote(name="origin").push() + + if EM.COMMIT_SINGLE: + DBM.i("Pushing files to repo as a single commit...") + refspec = f"{GitHubManager._SINGLE_COMMIT_BRANCH}:{GitHubManager.branch()}" + headers = GitHubManager.REPO.remotes.origin.push(force=True, refspec=refspec) + else: + DBM.i("Pushing files to repo...") + headers = GitHubManager.REPO.remotes.origin.push() + if len(headers) == 0: DBM.i(f"Repository push error: {headers}!") else: