Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,35 +1,43 @@
|
|
1 |
-
import streamlit as st
|
2 |
import os
|
3 |
-
from git import Repo
|
4 |
import sys
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
-
#
|
7 |
-
|
8 |
-
|
9 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
-
#
|
12 |
-
if not os.path.exists(local_dir):
|
13 |
try:
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
st.success("Repository cloned successfully!")
|
18 |
-
|
19 |
-
# Add the repo directory to the system path
|
20 |
-
sys.path.insert(0, local_dir)
|
21 |
-
except Exception as e:
|
22 |
-
st.error(f"Error cloning repository: {e}")
|
23 |
-
st.stop() # Stop the app if the repo can't be cloned
|
24 |
|
25 |
-
#
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
|
|
|
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
st.stop() # Stop the app if the cloned app can't be executed
|
35 |
-
st.error(f"Failed to process video: {str(e)}")
|
|
|
|
|
1 |
import os
|
|
|
2 |
import sys
|
3 |
+
from git import Repo
|
4 |
+
import importlib.util
|
5 |
+
|
6 |
+
def main():
|
7 |
+
# GitHub Repository and Directory Setup
|
8 |
+
repo_url = os.getenv("REPO_URL") # The private repository URL from environment variables
|
9 |
+
github_token = os.getenv("GITHUB_PAT") # GitHub Personal Access Token from environment variables
|
10 |
+
local_dir = "repo"
|
11 |
|
12 |
+
# Clone the private repository if it doesn't exist locally
|
13 |
+
if not os.path.exists(local_dir):
|
14 |
+
try:
|
15 |
+
# Prepare the repo URL with the token for authentication
|
16 |
+
repo_url = repo_url.replace("https://", f"https://{github_token}@")
|
17 |
+
print("Cloning the repository...")
|
18 |
+
Repo.clone_from(repo_url, local_dir)
|
19 |
+
print("Repository cloned successfully!")
|
20 |
+
|
21 |
+
# Add the repo directory to the system path
|
22 |
+
sys.path.insert(0, local_dir)
|
23 |
+
except Exception as e:
|
24 |
+
print(f"Error cloning repository: {e}")
|
25 |
+
sys.exit(1) # Exit the script if the repo can't be cloned
|
26 |
|
27 |
+
# Dynamically import and execute the app.py from the cloned repository
|
|
|
28 |
try:
|
29 |
+
spec = importlib.util.spec_from_file_location("cloned_app", os.path.join(local_dir, "app.py"))
|
30 |
+
module = importlib.util.module_from_spec(spec)
|
31 |
+
spec.loader.exec_module(module)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
# If the module has a 'main' function, call it (for apps like FastAPI or Gradio)
|
34 |
+
if hasattr(module, "main"):
|
35 |
+
module.main()
|
36 |
+
else:
|
37 |
+
print("No main function found in the cloned app.")
|
38 |
+
except Exception as e:
|
39 |
+
print(f"Error running the app from the cloned repo: {e}")
|
40 |
+
sys.exit(1) # Exit the script if the cloned app can't be executed
|
41 |
|
42 |
+
if __name__ == "__main__":
|
43 |
+
main()
|
|
|
|