#if UNITY_EDITOR
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEngine;
using UnityEngine.InputSystem;

namespace UnityEngine.InputSystem
{
    internal class iOSPostProcessBuild
    {
        [PostProcessBuild]
        public static void UpdateInfoPList(BuildTarget buildTarget, string pathToBuiltProject)
        {
            if (buildTarget != BuildTarget.iOS)
                return;

            var settings = InputSystem.settings.iOS;
            if (!settings.motionUsage.enabled)
                return;
            var plistPath = pathToBuiltProject + "/Info.plist";
            var contents = File.ReadAllText(plistPath);
            var description = InputSystem.settings.iOS.motionUsage.usageDescription;
#if UNITY_IOS || UNITY_TVOS
            var plist = new UnityEditor.iOS.Xcode.PlistDocument();
            plist.ReadFromString(contents);
            var root = plist.root;
            var buildKey = "NSMotionUsageDescription";
            if (root[buildKey] != null)
                Debug.LogWarning($"{buildKey} is already present in Info.plist, the value will be overwritten.");

            root.SetString(buildKey, description);
            File.WriteAllText(plistPath, plist.WriteToString());
#endif
        }
    }
}

#endif