|
import re |
|
import os |
|
|
|
import os |
|
import json |
|
import argparse |
|
|
|
import IPython |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def extract_dict(res, task_name, prefix="new_task"): |
|
""" parse task dictionary from the code itself """ |
|
task_dict = {"task-name": task_name, |
|
"assets-used": []} |
|
pattern = r'\'(.*?).urdf' |
|
asset_string = re.findall(pattern, res) |
|
|
|
pattern = r'"""(.*?)"""' |
|
description_string = re.findall(pattern, res, re.DOTALL) |
|
task_dict["assets-used"] = [file + ".urdf" for file in asset_string] |
|
task_dict["task-description"] = description_string[0] |
|
print(description_string[0]) |
|
print(asset_string) |
|
return task_dict |
|
|
|
|
|
|
|
parser = argparse.ArgumentParser() |
|
|
|
parser.add_argument( |
|
"--files", "-f", type=str, default="exps" |
|
) |
|
args = parser.parse_args() |
|
|
|
|
|
data_path = "prompts/data" |
|
generated_task_path = os.path.join(data_path, "generated_tasks.json") |
|
generated_task_code_path = os.path.join(data_path, "generated_task_codes.json") |
|
|
|
generated_tasks = json.load(open(generated_task_path)) |
|
generated_task_codes = json.load(open(generated_task_code_path)) |
|
|
|
|
|
task_names = args.files.split(",") |
|
print("Task names:", task_names) |
|
|
|
for task_name in task_names: |
|
|
|
task_name = task_name.replace("_", "-") |
|
task_name_py = task_name.replace("-", "_") + ".py" |
|
file_path = "cliport/generated_tasks/" + task_name_py |
|
if os.path.exists(file_path) and task_name not in generated_tasks: |
|
print("add task:", task_name) |
|
|
|
code = open(file_path).read() |
|
generated_tasks[task_name] = extract_dict(code, task_name) |
|
|
|
if task_name_py not in generated_task_codes: |
|
generated_task_codes.append(task_name_py) |
|
|
|
with open(generated_task_code_path, "w") as outfile: |
|
json.dump(generated_task_codes, outfile, indent=4) |
|
|
|
with open(generated_task_path, "w") as outfile: |
|
json.dump(generated_tasks, outfile, indent=4) |
|
|
|
|