Skip to content

Commit

Permalink
Avoid modifying csproj globbing includes
Browse files Browse the repository at this point in the history
Check if the found globbing include already matches the new path on
moving scripts to avoid modifying users' csproj files.
  • Loading branch information
raulsntos committed Oct 26, 2021
1 parent fa3fc6f commit ced4f35
Showing 1 changed file with 14 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,19 @@ public static void RenameItemInProjectChecked(string projectPath, string itemTyp
if (item == null)
return;

// Check if the found item include already matches the new path
var glob = MSBuildGlob.Parse(item.Include);
if (glob.IsMatch(normalizedNewInclude))
return;

// Otherwise, if the item include uses globbing it's better to add a new item instead of modifying
if (!string.IsNullOrEmpty(glob.WildcardDirectoryPart) || glob.FilenamePart.Contains("*"))
{
root.AddItem(itemType, normalizedNewInclude.RelativeToPath(dir).Replace("/", "\\"));
root.Save();
return;
}

item.Include = normalizedNewInclude.RelativeToPath(dir).Replace("/", "\\");
root.Save();
}
Expand Down Expand Up @@ -315,7 +328,7 @@ void RemoveElements(IEnumerable<ProjectElement> elements)

// Godot API References

var apiAssemblies = new[] {ApiAssemblyNames.Core, ApiAssemblyNames.Editor};
var apiAssemblies = new[] { ApiAssemblyNames.Core, ApiAssemblyNames.Editor };

RemoveElements(root.ItemGroups.SelectMany(g => g.Items)
.Where(i => i.ItemType == "Reference" && apiAssemblies.Contains(i.Include)));
Expand Down

0 comments on commit ced4f35

Please sign in to comment.