Skip to content

Commit

Permalink
fix: implicit cli defaults and handlign orphaned python procs using s…
Browse files Browse the repository at this point in the history
…h traps
  • Loading branch information
simojo committed Mar 18, 2024
1 parent 764a672 commit c88fc8e
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 14 deletions.
14 changes: 10 additions & 4 deletions src/pcg/scripts/generate
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
#!/usr/bin/env python3

import subprocess
import rospkg
import os
import rospkg
import signal
import subprocess
import sys

rospack = rospkg.RosPack()
pcg_path = rospack.get_path("pcg")
# move to pcg package directory
os.chdir(pcg_path)
args = ["sh", "./scripts/generate.py.sh", *sys.argv[1:]]
if subprocess.run(args).returncode != 0:
raise Exception("An error occured with running the script.")
process = subprocess.Popen(args)
try:
process.wait()
if process.returncode != 0:
raise Exception("An error occured with running the script.")
except KeyboardInterrupt:
pass
15 changes: 12 additions & 3 deletions src/pcg/scripts/generate.py.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
#!/usr/bin/env sh

set -e

# source the venv
. venv/bin/activate

python3 src/pcg/main.py $@
# handle sigint and sigterm; kill python proc
control_c() {
kill -9 $PID
exit
}

trap "control_c" INT TERM

python3 src/pcg/main.py "$@" &
# capture PID of command to kill when this program is killed
PID=$!
wait "$PID"
12 changes: 5 additions & 7 deletions src/pcg/src/pcg/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@
Options:
-h, --help Show this screen.
--num-worlds=<int> Number of worlds to generate [default: 10]
--worlds-dir=<path> Directory where generated worlds will be saved
[default: pcg/models/].
--models-dir=<path> Directory where generated models will be saved
[default: pcg/resources/worlds].
--num-worlds=<int> Number of worlds to generate [default is 10]
--worlds-dir=<path> Directory where generated worlds will be saved [default is pcg/models/].
--models-dir=<path> Directory where generated models will be saved [default is pcg/resources/worlds].
'''

Expand All @@ -26,14 +24,14 @@

worlds_dir = opts['--worlds-dir'] or None
models_dir = opts['--models-dir'] or None
num_worlds = int(opts['--num-worlds'])
num_worlds = opts['--num-worlds'] or 10

# using +2 because minimum number of rectangles is 2
# when using plural method
for i in [number + 2 for number in range(num_worlds)]:
generate_room(
n_rectangles=i,
filename=f"{i}-rectangles-walls",
n_rectangles=i,
worlds_dir_path=worlds_dir,
models_dir_path=models_dir
)

0 comments on commit c88fc8e

Please sign in to comment.