Skip to content

Commit

Permalink
Fix empty item metadata overwriting encoded value
Browse files Browse the repository at this point in the history
  • Loading branch information
mhutch committed Oct 2, 2023
1 parent 5d13d8b commit 72b685d
Showing 1 changed file with 23 additions and 8 deletions.
31 changes: 23 additions & 8 deletions Mono.TextTemplating.Build/TextTransform.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ public override bool Execute ()
buildState.TransformTemplates = new List<TemplateBuildState.TransformTemplate> ();
foreach (var tt in TransformTemplates) {
//TODO: OutputFilePath, OutputFileName
//var outputFilePathMetadata = tt.GetMetadata("OutputFilePath");
//var outputFileNameMetadata = tt.GetMetadata("OutputFileName");
//var outputFilePathMetadata = tt.TryGetMetadata("OutputFilePath");
//var outputFileNameMetadata = tt.TryGetMetadata("OutputFileName");
string inputFile = tt.ItemSpec;
string outputFile = Path.ChangeExtension (inputFile, ".txt");
buildState.TransformTemplates.Add (new TemplateBuildState.TransformTemplate {
Expand Down Expand Up @@ -175,15 +175,15 @@ bool AddParameters (TemplateBuildState buildState)
}

// metadata overrides encoded values. todo: warn when this happens?
if (par.GetMetadata ("Value") is string valueMetadata) {
if (par.TryGetMetadata ("Value", out string valueMetadata)) {
paramVal = valueMetadata;
}

if (par.GetMetadata ("Processor") is string processorMetadata) {
if (par.TryGetMetadata ("Processor", out string processorMetadata)) {
processorName = processorMetadata;
}

if (par.GetMetadata ("Directive") is string directiveMetadata) {
if (par.TryGetMetadata ("Directive", out string directiveMetadata)) {
directiveName = directiveMetadata;
}

Expand Down Expand Up @@ -231,15 +231,15 @@ bool AddDirectiveProcessors (TemplateBuildState buildState)
assembly = split[2];
}

if (dirItem.GetMetadata ("Class") is string classMetadata) {
if (dirItem.TryGetMetadata ("Class", out string classMetadata)) {
className = classMetadata;
}

if (dirItem.GetMetadata ("Codebase") is string codebaseMetadata) {
if (dirItem.TryGetMetadata ("Codebase", out string codebaseMetadata)) {
assembly = codebaseMetadata;
}

if (dirItem.GetMetadata ("Assembly") is string assemblyMetadata) {
if (dirItem.TryGetMetadata ("Assembly", out string assemblyMetadata)) {
assembly = assemblyMetadata;
}

Expand Down Expand Up @@ -311,4 +311,19 @@ void SaveBuildState (TemplateBuildState buildState, string filePath, MessagePack
}
}
}

static class TaskItemExtensions
{
public static bool TryGetMetadata (this ITaskItem item, string name, out string value)
{
var potentialValue = item.GetMetadata (name);
if (potentialValue?.Length > 0) {
value = potentialValue;
return true;
}

value = null;
return false;
}
}
}

0 comments on commit 72b685d

Please sign in to comment.