#!/usr/bin/env bash

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
APP_DIR="${ROOT_DIR}/apps/platform"
LANE="${1:-}"
STAGING_DIRECTORY="${2:-}"
ARTIFACT_DIRECTORY=""
WORKFLOW_ID="${TENANTATLAS_CI_WORKFLOW_ID:-}"
TRIGGER_CLASS="${TENANTATLAS_CI_TRIGGER_CLASS:-}"

if [[ -z "${LANE}" || -z "${STAGING_DIRECTORY}" ]]; then
	echo "Usage: ./scripts/platform-test-artifacts <lane-id> <staging-directory> [--artifact-directory=storage/logs/test-lanes] [--workflow-id=<id>] [--trigger-class=<trigger>]" >&2
	exit 1
fi

shift 2 || true

for arg in "$@"; do
	if [[ "${arg}" == --artifact-directory=* ]]; then
		ARTIFACT_DIRECTORY="${arg#--artifact-directory=}"
		continue
	fi

	if [[ "${arg}" == --workflow-id=* ]]; then
		WORKFLOW_ID="${arg#--workflow-id=}"
		continue
	fi

	if [[ "${arg}" == --trigger-class=* ]]; then
		TRIGGER_CLASS="${arg#--trigger-class=}"
		continue
	fi

	echo "Unknown option: ${arg}" >&2
	exit 1
done

if [[ -n "${WORKFLOW_ID}" ]]; then
	export TENANTATLAS_CI_WORKFLOW_ID="${WORKFLOW_ID}"
fi

if [[ -n "${TRIGGER_CLASS}" ]]; then
	export TENANTATLAS_CI_TRIGGER_CLASS="${TRIGGER_CLASS}"
fi

cd "${APP_DIR}"

LANE_ID="${LANE}" \
STAGING_DIRECTORY="${STAGING_DIRECTORY}" \
ARTIFACT_DIRECTORY="${ARTIFACT_DIRECTORY}" \
./vendor/bin/sail php <<'PHP'
<?php

declare(strict_types=1);

require 'vendor/autoload.php';

$laneId = (string) getenv('LANE_ID');
$stagingDirectory = (string) getenv('STAGING_DIRECTORY');
$artifactDirectory = getenv('ARTIFACT_DIRECTORY');
$artifactDirectory = is_string($artifactDirectory) && trim($artifactDirectory) !== ''
    ? $artifactDirectory
    : null;

$result = \Tests\Support\TestLaneReport::stageArtifacts($laneId, $stagingDirectory, $artifactDirectory);

echo json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR).PHP_EOL;

exit(($result['complete'] ?? false) === true ? 0 : 1);
PHP