"""
Action to build a Go project using standard Go tooling
"""

from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose

from .builder import BuilderError


class GoModulesBuildAction(BaseAction):
    NAME = "Build"
    DESCRIPTION = "Building Go package with Go Modules"
    PURPOSE = Purpose.COMPILE_SOURCE

    def __init__(self, source_dir, output_path, builder):
        self.source_dir = source_dir
        self.output_path = output_path
        self.builder = builder

    def execute(self):
        try:
            self.builder.build(self.source_dir, self.output_path)
        except BuilderError as ex:
            raise ActionFailedError(str(ex))
