blob: 9c47cbed921cf51e9642b0501a5c0be06dbcf107 [file] [log] [blame]
#!/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