Refactored code in terms of subprocess for git functionality.

This commit is contained in:
2024-03-28 19:38:12 +01:00
parent 942485ffc1
commit 9c70fd643f

View File

@ -105,7 +105,7 @@ def first_initialize_metadata_review(hdf5_file_path, reviewer_attrs):
def second_submit_metadata_review(filename_path, reviewer_attrs):
def second_submit_metadata_review(review_yaml_file_path, reviewer_attrs):
"""
Once you're done reviewing the yaml representation of hdf5 file in review folder.
Change the review status to complete and save (add and commit) modified .yalm and .txt files in the project by
@ -118,29 +118,63 @@ def second_submit_metadata_review(filename_path, reviewer_attrs):
initials = reviewer_attrs['initials']
branch_name = '-'.join([reviewer_attrs['type'],'review','by',initials])
if any([status in get_review_status(filename_path) for status in ['under review','submitted']]):
filename_path_tail, filename_path_head = os.path.split(filename_path)
filename, ext = os.path.splitext(filename_path_head)
# TODO:
with open(os.path.join("review/",filename+"-review_status"+TXT_EXT),'a') as f:
f.write('\nsubmitted')
# TODO: replace with subprocess + git
checkout_review_branch(repo_obj, branch_name)
status_dict = repo_obj.status()
for filepath, file_status in status_dict.items():
# Identify keys associated to review files and stage them
if ('review/'+filename in filepath) and (file_status == pygit.GIT_STATUS_WT_MODIFIED):
# Stage changes
repo_obj.index.add(filepath)
author = config_file.author #default_signature
committer = config_file.committer
message = "Submitted metadata review."
tree = repo_obj.index.write_tree()
oid = repo_obj.create_commit('HEAD', author, committer, message, tree, [repo_obj.head.peel().oid])
#if any([status in get_review_status(filename_path) for status in ['under review','submitted']]):
# filename_path_tail, filename_path_head = os.path.split(filename_path)
# filename, ext = os.path.splitext(filename_path_head)
# # TODO:
##
status_command = ['git','status']
add_command = lambda add_list: ['git','add'] + add_list
commit_command = lambda message: ['git','commit','-m', message]
#push_command = lambda repository,refspec: ['git','push',repository,refspec]
status = subprocess.run(status_command,capture_output=True,check=True)
files_to_add_list = []
for line in status.stdout.splitlines():
# conver line from bytes to str
tmp = line.decode("utf-8")
if 'modified' in tmp and review_yaml_file_path in tmp:
files_to_add_list.append(tmp.split()[1])
##
review_yaml_file_path_tail, review_yaml_file_path_head = os.path.split(review_yaml_file_path)
filename, ext = os.path.splitext(review_yaml_file_path_head)
if files_to_add_list:
review_status_file_path = os.path.join("review/",filename+"-review_status"+TXT_EXT)
with open(review_status_file_path,'a') as f:
f.write('\nsubmitted')
files_to_add_list.append(review_status_file_path)
result = subprocess.run(add_command(files_to_add_list),capture_output=True,check=True)
message = 'Submitted metadata review.'
commit_output = subprocess.run(commit_command(message),capture_output=True,check=True)
for line in commit_output.stdout.splitlines():
print(line.decode('utf-8'))
else:
print('Nothing to commit.')
#status_dict = repo_obj.status()
#for filepath, file_status in status_dict.items():
# Identify keys associated to review files and stage them
# if ('review/'+filename in filepath) and (file_status == pygit.GIT_STATUS_WT_MODIFIED):
# Stage changes
# repo_obj.index.add(filepath)
#author = config_file.author #default_signature
#committer = config_file.committer
#message = "Submitted metadata review."
#tree = repo_obj.index.write_tree()
#oid = repo_obj.create_commit('HEAD', author, committer, message, tree, [repo_obj.head.peel().oid])