Skip to content

Commit 2477a7b

Browse files
committed
improve path handlings, temp dir use, and replace global variables with args
1 parent 1ce3e4e commit 2477a7b

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

ccos/data/push_data_via_git.py

+16-16
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import json
77
import logging
88
import os
9+
import tempfile
910

1011
# Third-party
1112
import git
@@ -26,28 +27,25 @@
2627
f"@github.com/{GITHUB_ORGANIZATION}/{GITHUB_REPO_NAME}.git"
2728
)
2829

29-
WORKING_DIRECTORY = "/tmp"
30-
GIT_WORKING_DIRECTORY = f"{WORKING_DIRECTORY}/{GITHUB_REPO_NAME}"
31-
JSON_FILE_DIRECTORY = f"{GIT_WORKING_DIRECTORY}/databags"
30+
JSON_FILE_DIR = "databags"
3231

3332
log_name = os.path.basename(os.path.splitext(inspect.stack()[-1].filename)[0])
3433
logger = logging.getLogger(log_name)
3534
log.reset_handler()
3635

3736

38-
def set_up_repo():
39-
if not os.path.isdir(GIT_WORKING_DIRECTORY):
37+
def set_up_repo(git_working_dir):
38+
if not os.path.isdir(git_working_dir):
4039
logger.log(logging.INFO, "Cloning repo...")
4140
repo = git.Repo.clone_from(
42-
url=GITHUB_REPO_URL_WITH_CREDENTIALS, to_path=GIT_WORKING_DIRECTORY
41+
url=GITHUB_REPO_URL_WITH_CREDENTIALS, to_path=git_working_dir
4342
)
4443
else:
4544
logger.log(logging.INFO, "Setting up repo...")
46-
repo = git.Repo(GIT_WORKING_DIRECTORY)
45+
repo = git.Repo(git_working_dir)
4746
origin = repo.remotes.origin
4847
logger.log(logging.INFO, "Pulling latest code...")
4948
origin.pull()
50-
return f"{WORKING_DIRECTORY}/{GITHUB_REPO_NAME}"
5149

5250

5351
def set_up_git_user():
@@ -58,16 +56,16 @@ def set_up_git_user():
5856
os.environ["GIT_COMMITTER_EMAIL"] = GIT_USER_EMAIL
5957

6058

61-
def generate_json_file(data, filename):
59+
def generate_json_file(git_working_dir, data, filename):
6260
logger.log(logging.INFO, "Generating JSON file...")
63-
json_filename = f"{JSON_FILE_DIRECTORY}/{filename}"
61+
json_filename = os.path.join(git_working_dir, JSON_FILE_DIR, filename)
6462
with open(json_filename, "w") as json_file:
6563
json.dump(data, json_file, sort_keys=True, indent=4)
6664
return json_filename
6765

6866

69-
def commit_and_push_changes(json_filename):
70-
repo = git.Repo(GIT_WORKING_DIRECTORY)
67+
def commit_and_push_changes(git_working_dir, json_filename):
68+
repo = git.Repo(git_working_dir)
7169
git_diff = repo.index.diff(None)
7270
if git_diff:
7371
repo.index.add(items=f"{json_filename}")
@@ -80,7 +78,9 @@ def commit_and_push_changes(json_filename):
8078

8179

8280
def push_data(data, filename):
83-
set_up_repo()
84-
set_up_git_user()
85-
json_filename = generate_json_file(data, filename)
86-
commit_and_push_changes(json_filename)
81+
with tempfile.TemporaryDirectory() as temp_dir:
82+
git_working_dir = os.path.join(temp_dir, GITHUB_REPO_NAME)
83+
set_up_repo(git_working_dir)
84+
set_up_git_user()
85+
json_filename = generate_json_file(git_working_dir, data, filename)
86+
commit_and_push_changes(git_working_dir, json_filename)

0 commit comments

Comments
 (0)