Skip to content

Commit 4260d12

Browse files
refactor: remove duplicated logic in build() endpoint and dynamically construct command (fixes #363)
1 parent 0467ce5 commit 4260d12

1 file changed

Lines changed: 25 additions & 69 deletions

File tree

fri/server/main.py

Lines changed: 25 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -190,76 +190,32 @@ def build(dir):
190190

191191

192192
if not os.path.exists(dir_path):
193-
if(platform.uname()[0]=='Windows'):
194-
if(out_dir == None or out_dir == ""):
195-
if(docker == 'true'):
196-
try:
197-
output_bytes = subprocess.check_output(["makedocker", makestudy_dir], cwd=concore_path, shell=True)
198-
output_str = output_bytes.decode("utf-8")
199-
proc = 0
200-
except subprocess.CalledProcessError as e:
201-
output_str = f"Docker study creation failed with return code {e.returncode} (check duplicate directory)"
202-
proc = 1
203-
else:
204-
try:
205-
output_bytes = subprocess.check_output(["makestudy", makestudy_dir], cwd=concore_path, shell=True)
206-
output_str = output_bytes.decode("utf-8")
207-
proc = 0
208-
except subprocess.CalledProcessError as e:
209-
output_str = f"Study creation failed with return code {e.returncode} (check duplicate directory)"
210-
proc = 1
211-
else:
212-
if(docker == 'true'):
213-
try:
214-
output_bytes = subprocess.check_output(["makedocker", makestudy_dir, out_dir], cwd=concore_path, shell=True)
215-
output_str = output_bytes.decode("utf-8")
216-
proc = 0
217-
except subprocess.CalledProcessError as e:
218-
output_str = f"Docker study creation failed with return code {e.returncode} (check duplicate directory)"
219-
proc = 1
220-
else:
221-
try:
222-
output_bytes = subprocess.check_output(["makestudy", makestudy_dir, out_dir], cwd=concore_path, shell=True)
223-
output_str = output_bytes.decode("utf-8")
224-
proc = 0
225-
except subprocess.CalledProcessError as e:
226-
output_str = f"Study creation failed with return code {e.returncode} (check duplicate directory)"
227-
proc = 1
193+
# Determine command name and error label based on docker flag
194+
if docker == 'true':
195+
cmd_name = "makedocker"
196+
error_label = "Docker study"
228197
else:
229-
if(out_dir == None or out_dir == ""):
230-
if(docker == 'true'):
231-
try:
232-
output_bytes = subprocess.check_output([r"./makedocker", makestudy_dir], cwd=concore_path)
233-
output_str = output_bytes.decode("utf-8")
234-
proc = 0
235-
except subprocess.CalledProcessError as e:
236-
output_str = f"Docker study creation failed with return code {e.returncode} (check duplicate directory)"
237-
proc = 1
238-
else:
239-
try:
240-
output_bytes = subprocess.check_output([r"./makestudy", makestudy_dir], cwd=concore_path)
241-
output_str = output_bytes.decode("utf-8")
242-
proc = 0
243-
except subprocess.CalledProcessError as e:
244-
output_str = f"Study creation failed with return code {e.returncode} (check duplicate directory)"
245-
proc = 1
246-
else:
247-
if(docker == 'true'):
248-
try:
249-
output_bytes = subprocess.check_output([r"./makedocker", makestudy_dir, out_dir], cwd=concore_path)
250-
output_str = output_bytes.decode("utf-8")
251-
proc = 0
252-
except subprocess.CalledProcessError as e:
253-
output_str = f"Docker study creation failed with return code {e.returncode} (check duplicate directory)"
254-
proc = 1
255-
else:
256-
try:
257-
output_bytes = subprocess.check_output([r"./makestudy", makestudy_dir, out_dir], cwd=concore_path)
258-
output_str = output_bytes.decode("utf-8")
259-
proc = 0
260-
except subprocess.CalledProcessError as e:
261-
output_str = f"Study creation failed with return code {e.returncode} (check duplicate directory)"
262-
proc = 1
198+
cmd_name = "makestudy"
199+
error_label = "Study"
200+
201+
# Build command list
202+
cmd = [cmd_name, makestudy_dir]
203+
if out_dir is not None and out_dir != "":
204+
cmd.append(out_dir)
205+
206+
# OS-specific adjustments
207+
is_windows = platform.uname()[0] == 'Windows'
208+
if not is_windows:
209+
cmd[0] = f"./{cmd[0]}"
210+
211+
try:
212+
output_bytes = subprocess.check_output(cmd, cwd=concore_path, shell=is_windows)
213+
output_str = output_bytes.decode("utf-8")
214+
proc = 0
215+
except subprocess.CalledProcessError as e:
216+
output_str = f"{error_label} creation failed with return code {e.returncode} (check duplicate directory)"
217+
proc = 1
218+
263219
if(proc == 0):
264220
resp = jsonify({'message': 'Directory successfully created'})
265221
resp.status_code = 201

0 commit comments

Comments
 (0)