#!/usr/bin/env python3 # # Copyright 2024 - The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the', help="License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an', help="AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import logging from typing import Mapping from tasks.compile_install_task import CompileInstallTask from tasks.compile_task import CompileTask from tasks.configure_task import ConfigureTask from tasks.install_emulator_task import InstallEmulatorTask from tasks.run_pytest_task import RunPyTestTask from tasks.task import Task from tasks.zip_artifact_task import ZipArtifactTask TASK_LIST = [ "Configure", "Compile", "CompileInstall", "ZipArtifact", "InstallEmulator", "RunPyTest", "LocalRunAll", ] def log_enabled_tasks(tasks): enabled_tasks = [ task_name for task_name, task in tasks.items() if task.enabled ] logging.info(f"Enabled Tasks are {enabled_tasks}") def get_tasks(args, env) -> Mapping[str, Task]: """A list of tasks that should be executed""" # Mapping of tasks tasks = { "Configure": ConfigureTask(args, env), "Compile": CompileTask(args, env), "CompileInstall": CompileInstallTask(args, env), "ZipArtifact": ZipArtifactTask(args), "InstallEmulator": InstallEmulatorTask(args), "RunPyTest": RunPyTestTask(args), } # Enable all tasks for buidlbots if args.buildbot: for task_name in [ "Configure", "CompileInstall", "ZipArtifact", "InstallEmulator", "RunPyTest", ]: tasks[task_name].enable(True) return tasks if args.task: # Enable user specified tasks for args_task_name in args.task: if args_task_name.lower() == "localrunall": # We don't need installation process when running locally for task_name in [ "Configure", "Compile", "InstallEmulator", "RunPyTest", ]: tasks[task_name].enable(True) break elif args_task_name.lower() == "configure": tasks["Configure"].enable(True) elif args_task_name.lower() == "compile": tasks["Compile"].enable(True) elif args_task_name.lower() == "compileinstall": tasks["CompileInstall"].enable(True) elif args_task_name.lower() == "zipartifact": tasks["ZipArtifact"].enable(True) elif args_task_name.lower() == "installemulator": tasks["InstallEmulator"].enable(True) elif args_task_name.lower() == "fullbuild": tasks["Configure"].enable(True) tasks["Compile"].enable(True) tasks["InstallEmulator"].enable(True) elif args_task_name.lower() == "runpytest": tasks["RunPyTest"].enable(True) else: logging.error(f"Unknown task: {args_task_name}") else: # If task argument isn't passed, only enable ConfigureTask tasks["Configure"].enable(True) return tasks