in scripts/test-examples.py [0:0]
def main(argv):
script_name = os.path.basename(__file__)
help_message = f"""
{BColors.HEADER}Options{BColors.ENDC}:
-c | codegen= : Version we need to apply, if left empty it will calculate the version based on Gradle's Project task.
-p | path= : Path where the examples should be found. Defaults to [{examples_path}].
-k : By default the directory defined in the path will be removed on success. If this flag is set the directory will be kept.
-v : Verbose
{BColors.HEADER}Example{BColors.ENDC}: {script_name} -c <codegen version>
"""
projects_dir = examples_path
codegen_version = ""
keep_project_dir = False
try:
opts, args = getopt.getopt(argv, "hvkc:p:", ["codegen=", "path="])
except getopt.GetoptError:
Out.usage(script_name, help_message)
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
Out.usage(script_name, help_message)
sys.exit()
elif opt in ("-c", "--codegen"):
codegen_version = arg
elif opt in ("-p", "--path"):
projects_dir = os.path.abspath(arg)
elif opt in ("-k"):
keep_project_dir = True
elif opt in ("-v"):
State.verbose = True
if not codegen_version:
Out.info("Codgen version not supplied, inferring...")
codegen_version = infer_version()
if codegen_version:
Out.info(f"Codegen Version resolved to {BColors.OKGREEN}{codegen_version}{BColors.ENDC}")
else:
Out.error("Unable to resolved a Codegen Version!")
exit(2)
projects = next(os.walk(projects_dir))[1]
if not projects:
Out.error(f"No projects available at [{projects_dir}]!")
exit(2)
for project in projects:
project_root = f"{projects_dir}/{project}"
Out.info(f"Processing project [{project_root}]...")
infer_build_file(project_root)
gradle_settings_file_path = f"{project_root}/settings.gradle.kts"
generate_gradle_settings(settings_gradle_kts_template, codegen_version, gradle_settings_file_path)
run_example_build(gradle_settings_file_path, project_root)
if not keep_project_dir:
Out.info(f"Removing {projects_dir}...")
try:
shutil.rmtree(projects_dir)
except Exception as error:
Out.error(f"Failed deleting {projects_dir}.", error)
Out.ok(f"Build successful.")