Esempio n. 1
0
        /// <summary>
        /// Validate patch definitions, checks their fields
        /// </summary>
        /// <param name="change"></param>
        /// <returns></returns>
        private List <string> ValidatePatchDefinition(LegacyChanges change)
        {
            List <string> problems = new List <string>();

            if (string.IsNullOrEmpty(change.Action))
            {
                problems.Add($"Undefined action in patch");
            }
            if (string.IsNullOrEmpty(change.Target))
            {
                problems.Add($"Target is not defined in entry");
            }
            if (string.IsNullOrEmpty(change.FromFile))
            {
                problems.Add("No content defined! `FromFile` must be set in entry");
            }
            if (change.Action != null && change.Action.Equals("Replace") && !string.IsNullOrEmpty(change.Locale))
            {
                problems.Add("Locale can't be used for `Replace` action! Use action `Patch` instead for localization patches");
            }
            if (change.Action != null && !change.Action.Equals("Replace") && !change.Action.Equals("Patch"))
            {
                problems.Add($"Unknown action `{change.Action}`");
            }

            return(problems);
        }
Esempio n. 2
0
        /// <summary>
        /// Apply rewrites for fields in patches
        /// </summary>
        /// <param name="change"></param>
        /// <param name="formatVersion"></param>
        /// <returns></returns>
        private List <string> ApplyPatchRewrites(LegacyChanges change, ISemanticVersion formatVersion)
        {
            List <string> notices = new List <string>();

            if (formatVersion.IsOlderThan("1.2") && !string.IsNullOrEmpty(change.Locale))
            {
                // Locales exists in format version 1.2 and newer. For older formats is locale undefined
                change.Locale = null;
                notices.Add($"Ignore field `Locale` in format version `{formatVersion}`");
            }

            if (formatVersion.IsOlderThan("1.2") && !string.IsNullOrEmpty(change.LogName))
            {
                // Locales exists in format version 1.2 and newer. For older formats is locale undefined
                change.LogName = null;
                notices.Add($"Ignore field `LogName` in format version `{formatVersion}`");
            }

            if (!formatVersion.IsOlderThan("1.3") && string.IsNullOrEmpty(change.Action))
            {
                change.Action = "Patch"; // Action patch is a default action in format >=1.3
            }

            if (formatVersion.IsOlderThan("1.3") && (change.Action == "Load" || change.Action == "Edit"))
            {
                var replace = change.Action == "Load" ? "Replace" : "Patch";

                notices.Add($"Rewrite action `{change.Action}` -> `{replace}`");
                change.Action = replace;
            }

            if (change.Action == "Replace")
            {
                notices.Add($"Detected content replacer `{change.LogName}` for `{change.Target}`");
            }

            return(notices);
        }