File size: 2,403 Bytes
5e51056
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import streamlit as st
import os
import shutil
from git import Repo

# Set up a directory for saving files
SAVE_DIR = "saved_projects"

if not os.path.exists(SAVE_DIR):
    os.makedirs(SAVE_DIR)

def save_uploaded_files(uploaded_files):
    """Save uploaded files to the SAVE_DIR."""
    project_dir = os.path.join(SAVE_DIR, "uploaded_project")
    if os.path.exists(project_dir):
        shutil.rmtree(project_dir)  # Clean up existing files
    os.makedirs(project_dir)
    
    for uploaded_file in uploaded_files:
        with open(os.path.join(project_dir, uploaded_file.name), "wb") as f:
            f.write(uploaded_file.getbuffer())
    return project_dir

def clone_repository(repo_url):
    """Clone a GitHub repository into SAVE_DIR."""
    repo_name = repo_url.split("/")[-1].replace(".git", "")
    repo_dir = os.path.join(SAVE_DIR, repo_name)
    if os.path.exists(repo_dir):
        shutil.rmtree(repo_dir)  # Clean up existing files
    Repo.clone_from(repo_url, repo_dir)
    return repo_dir

def main():
    st.title("Project Manager App")
    st.write("Upload your project files or clone a GitHub repository.")

    # Sidebar for navigation
    option = st.sidebar.selectbox(
        "Choose an option:",
        ("Upload Files", "Clone GitHub Repository")
    )

    if option == "Upload Files":
        st.header("Upload Files")
        uploaded_files = st.file_uploader(
            "Upload your coding project files (multiple files allowed):",
            accept_multiple_files=True
        )
        if uploaded_files:
            saved_path = save_uploaded_files(uploaded_files)
            st.success(f"Files saved to {saved_path}")

    elif option == "Clone GitHub Repository":
        st.header("Clone GitHub Repository")
        repo_url = st.text_input("Enter the GitHub repository URL:")
        if repo_url:
            if st.button("Clone Repository"):
                try:
                    repo_path = clone_repository(repo_url)
                    st.success(f"Repository cloned to {repo_path}")
                except Exception as e:
                    st.error(f"Error cloning repository: {e}")

    # Display saved projects
    st.header("Saved Projects")
    if os.listdir(SAVE_DIR):
        for project in os.listdir(SAVE_DIR):
            st.write(f"- {project}")
    else:
        st.write("No projects saved yet.")

if __name__ == "__main__":
    main()