﻿using System;
using JLGames.RocketDriver.CSharp.Utils;
using UnityEditor;
using UnityEngine;

namespace JLGames.RocketDriver.Editor.Infra
{
    public static class BuildProjectUtil
    {
        public static string GetCommandLineArgs(string argsKey)
        {
            foreach (var arg in Environment.GetCommandLineArgs())
            {
                if (arg.StartsWith(argsKey))
                {
                    return arg.Split(":"[0])[1];
                }
            }

            return "";
        }
        
        public static void PreparePlaform(BuildTargetGroup group, BuildTarget target)
        {
            EditorUserBuildSettings.SwitchActiveBuildTarget(group, target);
        }

        public static void BuildPlayer(BuildPlayerOptions options)
        {
            var startBuildLog = $"Start Build ({options.target}) At {DateTime.UtcNow.ToLocalTime()}";
            var path = GetCommandLineArgs("-out");
            if (!string.IsNullOrEmpty(path))
            {
                options.locationPathName = path;
            }

            DirectoryUtil.ClearDir(options.locationPathName, true);
            BuildPipeline.BuildPlayer(options);
            var finishBuildLog = $"Finish Build ({options.target}) At {DateTime.UtcNow.ToLocalTime()}";
            Debug.Log(startBuildLog);
            Debug.Log(finishBuildLog);
        }
    }
}