|
2 | 2 | import os |
3 | 3 | import json |
4 | 4 | import random |
| 5 | +import subprocess |
5 | 6 |
|
6 | 7 | GRADIO_DEMO_DIR = os.getcwd() |
7 | 8 | DEMOS_TO_SKIP = {"all_demos", "reset_components", "custom_path", "kitchen_sink_random"} |
8 | 9 |
|
9 | 10 | demos = os.listdir(GRADIO_DEMO_DIR) |
10 | 11 | demos = [demo for demo in demos if demo not in DEMOS_TO_SKIP and os.path.isdir(os.path.join(GRADIO_DEMO_DIR, demo)) and os.path.exists(os.path.join(GRADIO_DEMO_DIR, demo, "run.py"))] |
11 | 12 |
|
| 13 | +def git_tracked(demo, file): |
| 14 | + osstdout = subprocess.Popen(f"cd {demo} && git ls-files --error-unmatch {file}", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) |
| 15 | + osstdout.wait() |
| 16 | + return not osstdout.returncode |
| 17 | + |
12 | 18 | for demo in demos: |
13 | 19 | nb = nbf.v4.new_notebook() |
14 | 20 | text = f"# Gradio Demo: {demo}" |
|
20 | 26 | """ |
21 | 27 |
|
22 | 28 | files = os.listdir(os.path.join(GRADIO_DEMO_DIR, demo)) |
23 | | - skip = ["run.py", "run.ipynb", "setup.sh", ".gitignore", "requirements.txt", "DESCRIPTION.md", "screenshot.png", "screenshot.gif", ".DS_Store", "flagged", "__pycache__"] |
24 | | - files = [file for file in files if file not in skip] |
| 29 | + skip = ["run.py", "run.ipynb", "setup.sh", ".gitignore", "requirements.txt", "DESCRIPTION.md", "screenshot.png", "screenshot.gif"] |
| 30 | + files = [file for file in files if file not in skip if git_tracked(demo, file)] |
25 | 31 | files.sort() |
26 | 32 | if files: |
27 | 33 | get_files = "# Downloading files from the demo repo\nimport os" |
28 | 34 | for file in files: |
29 | 35 | if os.path.isdir(os.path.join(GRADIO_DEMO_DIR, demo, file)): |
30 | | - get_files += f"\nos.mkdir('{file}')" |
31 | 36 | sub_files = os.listdir(os.path.join(GRADIO_DEMO_DIR, demo, file)) |
32 | | - sub_files = [sub for sub in sub_files if sub not in skip] |
| 37 | + sub_files = [sub for sub in sub_files if sub not in skip if git_tracked(demo, f"{file}/{sub}")] |
33 | 38 | sub_files.sort() |
| 39 | + if sub_files: |
| 40 | + get_files += f"\nos.mkdir('{file}')" |
34 | 41 | for sub_file in sub_files: |
35 | 42 | get_files += f"\n!wget -q -O {file}/{sub_file} https://github.com/gradio-app/gradio/raw/main/demo/{demo}/{file}/{sub_file}" |
36 | 43 | else: |
|
0 commit comments