79 lines
4.0 KiB
Python
79 lines
4.0 KiB
Python
import json, time
|
|
import streamlit as st
|
|
from streamlit_js_eval import streamlit_js_eval
|
|
from settings import *
|
|
|
|
def set_extended_description(edited_df):
|
|
json_edited_df = json.loads(edited_df.to_json(orient='records'))
|
|
extended_description_value = []
|
|
for idx, changed_idx in enumerate(st.session_state['data_editor']['edited_rows']):
|
|
if idx == 0:
|
|
extended_description_value.append(json_edited_df[changed_idx]['name'])
|
|
else:
|
|
extended_description_value.append('\n' + json_edited_df[changed_idx]['name'])
|
|
|
|
if 'candidate_version' in st.session_state['data_editor']['edited_rows'][changed_idx]:
|
|
extended_description_value.append(f"candidate: {st.session_state['data_editor']['edited_rows'][changed_idx]['candidate_version']}")
|
|
if 'release_version' in st.session_state['data_editor']['edited_rows'][changed_idx]:
|
|
extended_description_value.append(f"release: {st.session_state['data_editor']['edited_rows'][changed_idx]['release_version']}")
|
|
if 'product_version' in st.session_state['data_editor']['edited_rows'][changed_idx]:
|
|
extended_description_value.append(f"product: {st.session_state['data_editor']['edited_rows'][changed_idx]['product_version']}")
|
|
return '\n'.join(extended_description_value)
|
|
|
|
def set_version_json(edited_df):
|
|
data = {'datasaker': get_datasaker(),'service': json.loads(edited_df.to_json(orient='records'))}
|
|
with open('version.json', 'w') as file:
|
|
json.dump(data, file, indent=4)
|
|
|
|
def show_sidebar(df, edited_df):
|
|
with st.sidebar:
|
|
st.subheader('Git Push')
|
|
with st.expander('Git Push'):
|
|
commit_message = st.text_input('Commit Message', value='Update version.json')
|
|
extended_description = st.text_area('Extended description', value=set_extended_description(edited_df), height=200)
|
|
|
|
if st.button(key='push', label='Commit changes'):
|
|
if commit_message:
|
|
if diff_remote_head():
|
|
if df.equals(edited_df):
|
|
st.warning('No changes have been made', icon='⚠️')
|
|
else:
|
|
set_version_json(edited_df)
|
|
git_push(commit_message, extended_description)
|
|
st.success('Success', icon='✅')
|
|
time.sleep(1)
|
|
streamlit_js_eval(js_expressions='parent.window.location.reload()')
|
|
else:
|
|
st.error('Updates were rejected because the tip of your current branch is behind', icon='🚨')
|
|
|
|
st.divider()
|
|
|
|
st.subheader('Draft a new release')
|
|
with st.expander('Draft a new release'):
|
|
tags = [tag.name for tag in get_tags()]
|
|
tags.insert(0, "")
|
|
new_tag = st.text_input('Create a new tag')
|
|
|
|
if new_tag:
|
|
if new_tag in tags:
|
|
st.warning('Existing tag', icon='⚠️')
|
|
else:
|
|
tags.insert(0, new_tag)
|
|
|
|
selected_tag = st.selectbox('Choose a tag', tags)
|
|
release_title = st.text_input('Release title', value=selected_tag)
|
|
release_describe = st.text_area('Describe this release', value='## Production에 변경된 Version')
|
|
|
|
if st.button(key='release', label='Publish release'):
|
|
response = publish_release(selected_tag, release_title, release_describe)
|
|
|
|
if response.status_code == 201:
|
|
st.success('Release created successfully', icon='✅')
|
|
git_pull()
|
|
streamlit_js_eval(js_expressions='parent.window.location.reload()')
|
|
else:
|
|
st.error(f'Failed to create release. Status code: {response.status_code}', icon='🚨')
|
|
st.error(f'Response: {response.text}', icon='🚨')
|
|
|
|
st.divider()
|