def main(): global g_modules global g_action_data global g_export_dir if (len(sys.argv) != 2): env.display(env.HEADER_ERROR, "usage: export.py [behaviour]", env.OPTION_NONE) env.display(env.HEADER_NONE, "", env.OPTION_NONE) env.display(env.HEADER_ERROR, "behaviours:", env.OPTION_NONE) for i in env.list(env._EXPORT_DIR_ + "/behaviours", env.OPTION_FILE): env.display(env.HEADER_ERROR, " " + i[:-4], env.OPTION_NONE) return 1 modules_load() work_dir = env.temporary(env.OPTION_DIRECTORY) g_export_dir = work_dir + "/kaneton" env.display(env.HEADER_OK, 'exporting to ' + g_export_dir, env.OPTION_NONE) env.display(env.HEADER_OK, 'running export actions', env.OPTION_NONE) parse_data_file("behaviours/" + sys.argv[1]) env.display(env.HEADER_OK, 'cleaning temporary directory', env.OPTION_NONE) env.remove(work_dir, env.OPTION_NONE) env.display(env.HEADER_OK, 'export finished', env.OPTION_NONE)
def module_action(export_dir, arg): strip = 0 env.display(env.HEADER_OK, 'action breplace ' + arg['id'], env.OPTION_NONE) id = arg['id'].split('::', 1) filepath = id[0] label = id[1] tmpfilepath = env.temporary(env.OPTION_FILE) srcf = open(export_dir + '/' + filepath, 'r') dstf = open(tmpfilepath, 'w') line = srcf.readline() startpattern = re.compile(".*[[]block\:\:" + label + "[]].*") endpattern = re.compile(".*[[]/block\:\:" + label + "[]].*") while line != "": if strip == 0: if startpattern.match(line) != None: strip = 1 dstf.write(arg['data']) if strip != 1: dstf.write(line) if strip == 1: if endpattern.match(line) != None: strip = 2 line = srcf.readline() dstf.close() srcf.close() env.copy(tmpfilepath, export_dir + '/' + filepath, env.OPTION_NONE) env.remove(tmpfilepath, env.OPTION_NONE) if strip == 0: env.display(env.HEADER_ERROR, 'no block ' + label + ' in file ' + filepath, env.OPTION_NONE) return -1 return 0
def module_action(export_dir, arg): env.display(env.HEADER_OK, 'action fremovepattern ' + arg['pattern'], env.OPTION_NONE) for d in env.search( export_dir, arg['pattern'], env.OPTION_RECURSIVE | env.OPTION_DIRECTORY | env.OPTION_FILE): env.remove(d, env.OPTION_NONE) return 0
def module_action(export_dir, arg): env.display(env.HEADER_OK, 'action tarball ' + arg['filename'], env.OPTION_NONE) directory = env.cwd(env.OPTION_NONE) env.cd(env.path(export_dir, env.OPTION_DIRECTORY), env.OPTION_NONE) env.remove(env._EXPORT_DIR_ + "/output/" + arg['filename'] + ".tar.bz2", env.OPTION_NONE) env.pack("kaneton", env._EXPORT_DIR_ + "/output/" + arg['filename'] + ".tar.bz2", env.OPTION_NONE) env.cd(directory, env.OPTION_NONE) return 0
def filter(student): entities = None entity = None # remove the env._CHEAT_FILTER_ stuff entities = re.findall("([^\t ]+)", env._CHEAT_FILTER_) for entity in entities: env.remove(student["sources"] + "/kaneton/" + entity, env.OPTION_NONE)
def robot(): path = None link = None name = None # display. env.display(env.HEADER_OK, "generating the robot's capability", env.OPTION_NONE) # retrieve the server's code. code = ktp.code.Load(env._TEST_STORE_CODE_DIR_ + "/server" + \ ktp.code.Extension) # compute the name. name = "robot" # compute the file name. path = env._TEST_STORE_CAPABILITY_DIR_ + "/" + \ name + ktp.capability.Extension # compute the link. link = env._PROFILE_DIR_ + "/user/robot/robot" + ktp.capability.Extension # create the capability. capability = ktp.capability.Create(code, name, ktp.capability.TypeStudent, {}, [ { "name": "Robot", "email": "*****@*****.**", "login": "******" } ]) # store it. ktp.capability.Store(path, capability) # remove the previous link. env.remove(link, env.OPTION_NONE) # create a link from the profile. XXX[this could probably be improved] env.link(link, "../../../../test/store/capability/" + name + ktp.capability.Extension, env.OPTION_NONE) # display. env.display(env.HEADER_OK, "the robot's capability has been generated succesfully", env.OPTION_NONE)
def contributor(): path = None link = None name = None # display. env.display(env.HEADER_OK, "generating a contributor's capability", env.OPTION_NONE) # retrieve the server's code. code = ktp.code.Load(env._TEST_STORE_CODE_DIR_ + "/server" + \ ktp.code.Extension) # compute the name. name = env._USER_ # compute the file name. path = env._TEST_STORE_CAPABILITY_DIR_ + "/" + \ name + ktp.capability.Extension # compute the link. link = env._TEST_CAPABILITY_ # create the capability. capability = ktp.capability.Create(code, name, ktp.capability.TypeContributor, {}, [ { "name": env._TEST_NAME_, "email": env._TEST_EMAIL_, "login": env._TEST_NAME_.lower(). replace(" ", ".") } ]) # store it. ktp.capability.Store(path, capability) # remove the previous link. env.remove(link, env.OPTION_NONE) # create a link from the profile. XXX[this could probably be improved] env.link(link, "../../../../test/store/capability/" + name + ktp.capability.Extension, env.OPTION_NONE) # display. env.display(env.HEADER_OK, "the contributor capability has been generated " + \ "succesfully for '" + name + "'", env.OPTION_NONE)
def dependencies(): dependencies = None dep = None env.display(env.HEADER_OK, "removing the kaneton header dependencies", env.OPTION_NONE) dependencies = env.search(env._SOURCE_DIR_, env._DEPENDENCY_MK_, env.OPTION_FILE | env.OPTION_RECURSIVE) for dep in dependencies: env.remove(dep, env.OPTION_NONE)
def contributor(): path = None link = None name = None # display. env.display(env.HEADER_OK, "generating a contributor's capability", env.OPTION_NONE) # retrieve the server's code. code = ktp.code.Load(env._TEST_STORE_CODE_DIR_ + "/server" + \ ktp.code.Extension) # compute the name. name = env._USER_ # compute the file name. path = env._TEST_STORE_CAPABILITY_DIR_ + "/" + \ name + ktp.capability.Extension # compute the link. link = env._TEST_CAPABILITY_ # create the capability. capability = ktp.capability.Create( code, name, ktp.capability.TypeContributor, {}, [{ "name": env._TEST_NAME_, "email": env._TEST_EMAIL_, "login": env._TEST_NAME_.lower().replace(" ", ".") }]) # store it. ktp.capability.Store(path, capability) # remove the previous link. env.remove(link, env.OPTION_NONE) # create a link from the profile. XXX[this could probably be improved] env.link( link, "../../../../test/store/capability/" + name + ktp.capability.Extension, env.OPTION_NONE) # display. env.display(env.HEADER_OK, "the contributor capability has been generated " + \ "succesfully for '" + name + "'", env.OPTION_NONE)
def robot(): path = None link = None name = None # display. env.display(env.HEADER_OK, "generating the robot's capability", env.OPTION_NONE) # retrieve the server's code. code = ktp.code.Load(env._TEST_STORE_CODE_DIR_ + "/server" + \ ktp.code.Extension) # compute the name. name = "robot" # compute the file name. path = env._TEST_STORE_CAPABILITY_DIR_ + "/" + \ name + ktp.capability.Extension # compute the link. link = env._PROFILE_DIR_ + "/user/robot/robot" + ktp.capability.Extension # create the capability. capability = ktp.capability.Create( code, name, ktp.capability.TypeStudent, {}, [{ "name": "Robot", "email": "*****@*****.**", "login": "******" }]) # store it. ktp.capability.Store(path, capability) # remove the previous link. env.remove(link, env.OPTION_NONE) # create a link from the profile. XXX[this could probably be improved] env.link( link, "../../../../test/store/capability/" + name + ktp.capability.Extension, env.OPTION_NONE) # display. env.display(env.HEADER_OK, "the robot's capability has been generated succesfully", env.OPTION_NONE)
def machine(): env.display(env.HEADER_OK, "removing links to machine-dependent directories", env.OPTION_NONE) env.remove(env._GLUE_CURRENT_, env.OPTION_NONE) env.remove(env._ARCHITECTURE_CURRENT_, env.OPTION_NONE) env.remove(env._PLATFORM_CURRENT_, env.OPTION_NONE)
def machine(): env.display(env.HEADER_OK, "installing links to machine-dependent directories", env.OPTION_NONE) env.remove(env._GLUE_CURRENT_, env.OPTION_NONE) env.link(env._GLUE_CURRENT_, env._GLUE_DIR_, env.OPTION_NONE) env.remove(env._PLATFORM_CURRENT_, env.OPTION_NONE) env.link(env._PLATFORM_CURRENT_, env._PLATFORM_DIR_, env.OPTION_NONE) env.remove(env._ARCHITECTURE_CURRENT_, env.OPTION_NONE) env.link(env._ARCHITECTURE_CURRENT_, env._ARCHITECTURE_DIR_, env.OPTION_NONE)
def clear(): # remove the temporary directory which contains all the extracted # snapshots etc. env.remove(g_directory, env.OPTION_NONE)
def boot(): if env.path(env._IMAGE_, env.OPTION_EXIST): env.remove(env._IMAGE_, env.OPTION_NONE)
def module_action(export_dir, arg): env.display(env.HEADER_OK, 'action fremove ' + arg['path'], env.OPTION_NONE) env.remove(export_dir + '/' + arg['path'], env.OPTION_NONE) return 0
def clean(): env.remove(env._ENV_MK_, env.OPTION_NONE) env.remove(env._ENV_PY_, env.OPTION_NONE)
def module_action(export_dir, arg): env.display(env.HEADER_OK, "action fremovepattern " + arg["pattern"], env.OPTION_NONE) for d in env.search(export_dir, arg["pattern"], env.OPTION_RECURSIVE | env.OPTION_DIRECTORY | env.OPTION_FILE): env.remove(d, env.OPTION_NONE) return 0