Skip to content

Commit b297fd0

Browse files
committed
Adding replaceMetadataAttribute function
replaceAttribute doesn't handle AssemblyMetadata very well, it needs a more sophisticated function.
1 parent e3462af commit b297fd0

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

src/app/FakeLib/AssemblyInfoHelper.fs

+16-5
Original file line numberDiff line numberDiff line change
@@ -224,18 +224,29 @@ let ReplaceAssemblyInfoVersions param =
224224
let replaceAttribute attributeName value line =
225225
if isNullOrEmpty value then line
226226
else regex_replace (sprintf "%s\\s*[(][^)]*[)]" attributeName) (sprintf "%s(\"%s\")" attributeName value) line
227-
228-
let metadaData =
229-
if parameters.AssemblyMetadata = [] then "" else
230-
(String.Join("\", \"", parameters.AssemblyMetadata))
227+
228+
let rec replaceMetadataAttribute metadata line =
229+
let replaceMetadataAttribute' key value line =
230+
if isNullOrEmpty key then line
231+
else
232+
regex_replace
233+
(sprintf "AssemblyMetadata\\s*\\(\\s*\"%s\"\\s*,[^)]*\)" key)
234+
(sprintf "AssemblyMetadata(\"%s\", \"%s\")" key value)
235+
line
236+
match metadata with
237+
| (key, value) :: rest ->
238+
line
239+
|> replaceMetadataAttribute' key value
240+
|> replaceMetadataAttribute rest
241+
| _ -> line
231242

232243
let replaceLine line =
233244
line
234245
|> replaceAttribute "AssemblyVersion" parameters.AssemblyVersion
235246
|> replaceAttribute "AssemblyConfiguration" parameters.AssemblyConfiguration
236247
|> replaceAttribute "AssemblyFileVersion" parameters.AssemblyFileVersion
237248
|> replaceAttribute "AssemblyInformationalVersion" parameters.AssemblyInformationalVersion
238-
|> replaceAttribute "AssemblyMetadata" metadaData
249+
|> replaceMetadataAttribute parameters.AssemblyMetadata
239250

240251
ReadFile parameters.OutputFileName
241252
|> Seq.map replaceLine

0 commit comments

Comments
 (0)