-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlauch_nueroglancer.py
47 lines (39 loc) · 1.79 KB
/
lauch_nueroglancer.py
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
import click
from git import Repo
import subprocess
from sys import exit
import tempfile
from pathlib import Path
import os
import json
GITHUB_URL= "https://github.com/BrainSharer/BrainsharerMonoRepo.git"
GOOD_FIREBASE_FILE_PATH= Path("/var/www/firebase.ts")
FIREBASE_FILE_PATH= Path("neuroglancer/src/neuroglancer/services/firebase.ts")
ALL_BUILD_FILES_PATH="neuroglancer/dist/min"
@click.command()
@click.argument('publish_to')
@click.option('--commit', type=str, default="origin/main")
def launch_neuoglacner(publish_to, commit):
with tempfile.TemporaryDirectory() as tmpdirname:
if not os.path.isabs(publish_to):
print('not absolute path')
exit(1)
print(tmpdirname)
repo = Repo.clone_from(GITHUB_URL, tmpdirname)
for remote in repo.remotes:
remote.fetch()
repo.git.checkout(commit)
subprocess.run(["cp", str(GOOD_FIREBASE_FILE_PATH), str(Path(tmpdirname)/ FIREBASE_FILE_PATH)], cwd=tmpdirname)
subprocess.run(["npm", "install"], cwd=str(Path(tmpdirname) / "neuroglancer"))
subprocess.run(["npm", "run", "build-prod"], cwd=str(Path(tmpdirname) / "neuroglancer"))
subprocess.run(["mkdir", "-p", publish_to])
build_file_names = os.listdir(path=Path(tmpdirname)/ ALL_BUILD_FILES_PATH)
build_file_paths = [Path(tmpdirname)/ ALL_BUILD_FILES_PATH / build_file_name for build_file_name in build_file_names]
for build_file_path in build_file_paths:
subprocess.run(["cp", str(build_file_path), publish_to])
version_info = {}
version_info["commit"] = repo.head.object.hexsha
with open(str(Path(publish_to) / "version_info.json"), "w") as outfile:
json.dump(version_info, outfile, indent=4)
if __name__ == "__main__":
launch_neuoglacner()