Skip to content

Commit 8c5a5db

Browse files
authored
Merge pull request #143 from zakaluka/master
INI: Allow semicolon in values
2 parents 9b84f3e + 85ad64a commit 8c5a5db

File tree

6 files changed

+53
-23
lines changed

6 files changed

+53
-23
lines changed

.paket/Paket.Restore.targets

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,13 @@
4343
<!-- Step 1 Check if lockfile is properly restored -->
4444
<PropertyGroup>
4545
<PaketRestoreRequired>true</PaketRestoreRequired>
46-
<NoWarn>$(NoWarn);NU1603</NoWarn>
46+
<NoWarn>$(NoWarn);NU1603;NU1604;NU1605;NU1608</NoWarn>
4747
</PropertyGroup>
4848

4949
<!-- Because ReadAllText is slow on osx/linux, try to find shasum and awk -->
5050
<PropertyGroup>
51-
<PaketRestoreCachedHasher Condition="'$(OS)' != 'Windows_NT' And '$(PaketRestoreCachedHasher)' == '' And Exists('/usr/bin/shasum') And Exists('/usr/bin/awk')">/usr/bin/shasum $(PaketRestoreCacheFile) | /usr/bin/awk '{ print $1 }'</PaketRestoreCachedHasher>
52-
<PaketRestoreLockFileHasher Condition="'$(OS)' != 'Windows_NT' And '$(PaketRestoreLockFileHash)' == '' And Exists('/usr/bin/shasum') And Exists('/usr/bin/awk')">/usr/bin/shasum $(PaketLockFilePath) | /usr/bin/awk '{ print $1 }'</PaketRestoreLockFileHasher>
51+
<PaketRestoreCachedHasher Condition="'$(OS)' != 'Windows_NT' And '$(PaketRestoreCachedHasher)' == '' And Exists('/usr/bin/shasum') And Exists('/usr/bin/awk')">/usr/bin/shasum "$(PaketRestoreCacheFile)" | /usr/bin/awk '{ print $1 }'</PaketRestoreCachedHasher>
52+
<PaketRestoreLockFileHasher Condition="'$(OS)' != 'Windows_NT' And '$(PaketRestoreLockFileHash)' == '' And Exists('/usr/bin/shasum') And Exists('/usr/bin/awk')">/usr/bin/shasum "$(PaketLockFilePath)" | /usr/bin/awk '{ print $1 }'</PaketRestoreLockFileHasher>
5353
</PropertyGroup>
5454

5555
<!-- If shasum and awk exist get the hashes -->
@@ -60,6 +60,9 @@
6060
<Output TaskParameter="ConsoleOutput" PropertyName="PaketRestoreLockFileHash" />
6161
</Exec>
6262

63+
<!-- Debug whats going on -->
64+
<Message Importance="low" Text="calling paket restore with targetframework=$(TargetFramework) targetframeworks=$(TargetFrameworks)" />
65+
6366
<PropertyGroup Condition="Exists('$(PaketRestoreCacheFile)') ">
6467
<!-- if no hash has been done yet fall back to just reading in the files and comparing them -->
6568
<PaketRestoreCachedHash Condition=" '$(PaketRestoreCachedHash)' == '' ">$([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)'))</PaketRestoreCachedHash>
@@ -69,11 +72,19 @@
6972
<PaketRestoreRequired Condition=" '$(PaketRestoreLockFileHash)' == '' ">true</PaketRestoreRequired>
7073
</PropertyGroup>
7174

75+
7276
<!-- Do a global restore if required -->
7377
<Exec Command='$(PaketBootStrapperCommand)' Condition="Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))" ContinueOnError="false" />
7478
<Exec Command='$(PaketCommand) restore' Condition=" '$(PaketRestoreRequired)' == 'true' " ContinueOnError="false" />
7579

7680
<!-- Step 2 Detect project specific changes -->
81+
<ItemGroup>
82+
<MyTargetFrameworks Condition="'$(TargetFramework)' != '' " Include="$(TargetFramework)"></MyTargetFrameworks>
83+
<!-- Don't include all frameworks when msbuild explicitly asks for a single one -->
84+
<MyTargetFrameworks Condition="'$(TargetFrameworks)' != '' AND '$(TargetFramework)' == '' " Include="$(TargetFrameworks)"></MyTargetFrameworks>
85+
<PaketResolvedFilePaths Include="@(MyTargetFrameworks -> '$(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).%(Identity).paket.resolved')"></PaketResolvedFilePaths>
86+
</ItemGroup>
87+
<Message Importance="low" Text="MyTargetFrameworks=@(MyTargetFrameworks) PaketResolvedFilePaths=@(PaketResolvedFilePaths)" />
7788
<PropertyGroup>
7889
<PaketReferencesCachedFilePath>$(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).paket.references.cached</PaketReferencesCachedFilePath>
7990
<!-- MyProject.fsproj.paket.references has the highest precedence -->
@@ -82,7 +93,9 @@
8293
<PaketOriginalReferencesFilePath Condition=" !Exists('$(PaketOriginalReferencesFilePath)')">$(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references</PaketOriginalReferencesFilePath>
8394
<!-- paket.references -->
8495
<PaketOriginalReferencesFilePath Condition=" !Exists('$(PaketOriginalReferencesFilePath)')">$(MSBuildProjectDirectory)\paket.references</PaketOriginalReferencesFilePath>
85-
<PaketResolvedFilePath>$(MSBuildProjectDirectory)\obj\$(MSBuildProjectFile).$(TargetFramework).paket.resolved</PaketResolvedFilePath>
96+
97+
<DoAllResolvedFilesExist>false</DoAllResolvedFilesExist>
98+
<DoAllResolvedFilesExist Condition="Exists(%(PaketResolvedFilePaths.Identity))">true</DoAllResolvedFilesExist>
8699
<PaketRestoreRequired>true</PaketRestoreRequired>
87100
<PaketRestoreRequiredReason>references-file-or-cache-not-found</PaketRestoreRequiredReason>
88101
</PropertyGroup>
@@ -101,33 +114,39 @@
101114
</PropertyGroup>
102115

103116
<!-- Step 2 b detect relevant changes in project file (new targetframework) -->
104-
<PropertyGroup Condition=" !Exists('$(PaketResolvedFilePath)') AND '$(TargetFramework)' != '' ">
117+
<PropertyGroup Condition=" '$(DoAllResolvedFilesExist)' != 'true' ">
105118
<PaketRestoreRequired>true</PaketRestoreRequired>
106-
<PaketRestoreRequiredReason>target-framework '$(TargetFramework)'</PaketRestoreRequiredReason>
119+
<PaketRestoreRequiredReason>target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths)</PaketRestoreRequiredReason>
107120
</PropertyGroup>
108121

109122
<!-- Step 3 Restore project specific stuff if required -->
110123
<Message Condition=" '$(PaketRestoreRequired)' == 'true' " Importance="low" Text="Detected a change ('$(PaketRestoreRequiredReason)') in the project file '$(MSBuildProjectFullPath)', calling paket restore" />
111-
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)"' Condition=" '$(PaketRestoreRequired)' == 'true' " ContinueOnError="false" />
124+
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)" --target-framework "$(TargetFrameworks)"' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' == '' " ContinueOnError="false" />
125+
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)" --target-framework "$(TargetFramework)"' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' != '' " ContinueOnError="false" />
112126

113127
<!-- This shouldn't actually happen, but just to be sure. -->
114-
<Error Condition=" !Exists('$(PaketResolvedFilePath)') AND '$(TargetFramework)' != '' AND '$(ResolveNuGetPackages)' != 'False' " Text="Paket file '$(PaketResolvedFilePath)' is missing while restoring $(MSBuildProjectFile). Please delete 'paket-files/paket.restore.cached' and call 'paket restore'." />
128+
<PropertyGroup>
129+
<DoAllResolvedFilesExist>false</DoAllResolvedFilesExist>
130+
<DoAllResolvedFilesExist Condition="Exists(%(PaketResolvedFilePaths.Identity))">true</DoAllResolvedFilesExist>
131+
</PropertyGroup>
132+
<Error Condition=" '$(DoAllResolvedFilesExist)' != 'true' AND '$(ResolveNuGetPackages)' != 'False' " Text="One Paket file '@(PaketResolvedFilePaths)' is missing while restoring $(MSBuildProjectFile). Please delete 'paket-files/paket.restore.cached' and call 'paket restore'." />
115133

116134
<!-- Step 4 forward all msbuild properties (PackageReference, DotNetCliToolReference) to msbuild -->
117-
<ReadLinesFromFile Condition="Exists('$(PaketResolvedFilePath)')" File="$(PaketResolvedFilePath)" >
135+
<ReadLinesFromFile Condition="'@(PaketResolvedFilePaths)' != ''" File="%(PaketResolvedFilePaths.Identity)" ><!--Condition="Exists('%(PaketResolvedFilePaths.Identity)')"-->
118136
<Output TaskParameter="Lines" ItemName="PaketReferencesFileLines"/>
119137
</ReadLinesFromFile>
120138

121-
<ItemGroup Condition=" Exists('$(PaketResolvedFilePath)') AND '@(PaketReferencesFileLines)' != '' " >
139+
<ItemGroup Condition=" '@(PaketReferencesFileLines)' != '' " >
122140
<PaketReferencesFileLinesInfo Include="@(PaketReferencesFileLines)" >
123141
<PackageName>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0])</PackageName>
124142
<PackageVersion>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1])</PackageVersion>
125143
<AllPrivateAssets>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4])</AllPrivateAssets>
126144
</PaketReferencesFileLinesInfo>
127145
<PackageReference Include="%(PaketReferencesFileLinesInfo.PackageName)">
128146
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
129-
<PrivateAssets Condition="%(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'true'">All</PrivateAssets>
147+
<PrivateAssets Condition=" ('%(PaketReferencesFileLinesInfo.AllPrivateAssets)' == 'true') Or ('$(PackAsTool)' == 'true') ">All</PrivateAssets>
130148
<ExcludeAssets Condition="%(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'exclude'">runtime</ExcludeAssets>
149+
<Publish Condition=" '$(PackAsTool)' == 'true' ">true</Publish>
131150
</PackageReference>
132151
</ItemGroup>
133152

docs/content/release-notes.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
#### 1.4.0 - 23.02.2018
2+
* Migration to latest TPSDK
3+
14
#### 1.3.1 - 24.09.2017
25
* `SharpYaml.dll` added to NuGet package
36

src/FSharp.Configuration/FSharp.Configuration.fsproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
</Target>
9494
-->
9595
<Choose>
96-
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7' Or $(TargetFrameworkVersion) == 'v4.7.1')">
96+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7' Or $(TargetFrameworkVersion) == 'v4.7.1' Or $(TargetFrameworkVersion) == 'v4.7.2')">
9797
<ItemGroup>
9898
<Reference Include="FSharp.Core">
9999
<HintPath>..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll</HintPath>
@@ -104,7 +104,7 @@
104104
</When>
105105
</Choose>
106106
<Choose>
107-
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7' Or $(TargetFrameworkVersion) == 'v4.7.1')">
107+
<When Condition="$(TargetFrameworkIdentifier) == '.NETFramework' And ($(TargetFrameworkVersion) == 'v4.5' Or $(TargetFrameworkVersion) == 'v4.5.1' Or $(TargetFrameworkVersion) == 'v4.5.2' Or $(TargetFrameworkVersion) == 'v4.5.3' Or $(TargetFrameworkVersion) == 'v4.6' Or $(TargetFrameworkVersion) == 'v4.6.1' Or $(TargetFrameworkVersion) == 'v4.6.2' Or $(TargetFrameworkVersion) == 'v4.6.3' Or $(TargetFrameworkVersion) == 'v4.7' Or $(TargetFrameworkVersion) == 'v4.7.1' Or $(TargetFrameworkVersion) == 'v4.7.2')">
108108
<ItemGroup>
109109
<Reference Include="SharpYaml">
110110
<HintPath>..\..\packages\SharpYaml\lib\net45\SharpYaml.dll</HintPath>

src/FSharp.Configuration/IniFileProvider.fs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ module Parser =
3232
| _ -> None
3333

3434
let (|Setting|_|) = function
35-
| Regex @"\s*(\S+)\s*=\s*([^;]*)" ([_; key; value], s) ->
36-
Some ({ Key = key; Value = value }, s)
35+
| Regex @"\s*(\S+)\s*=\s*(.*)" ([_; key; value], s) ->
36+
Some ({ Key = key; Value = value.Trim() }, s)
3737
| _ -> None
3838

3939
let (|Settings|_|) s =

tests/FSharp.Configuration.Tests/IniFileProvider.Tests.fs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,22 @@ type IniFileType = IniFile<"Sample.ini">
77

88
let [<Tests>] tests =
99
testList "Ini File Provider tests" [
10-
testCase "Can return a string from the config file" (fun _ ->
10+
testCase "Can return a string from the config file" (fun _ ->
1111
Expect.equal IniFileType.Section1.key2 "stringValue" "value")
12-
12+
1313
testCase "Can return an integer from the config file" (fun _ ->
1414
Expect.equal IniFileType.Section1.key1 2 "value")
15-
15+
1616
testCase "Can return a double from the config file" (fun _ ->
1717
Expect.equal IniFileType.Section2.key3 1.23 "value")
18-
18+
1919
testCase "Can return a boolean from the config file" (fun _ ->
2020
Expect.isTrue IniFileType.Section2.key5 "key5"
2121
Expect.isFalse IniFileType.Section2.key6 "key6")
22-
]
22+
23+
testCase "Can return a semicolon in the value" (fun _ ->
24+
Expect.equal IniFileType.Section2.key8 @"Data Source=localhost\sqlexpress;Initial Catalog=DB with Spaces" "value")
25+
26+
testCase "Trailing spaces are not significant" (fun _ ->
27+
Expect.equal IniFileType.Section2.key9 @"Trailing spaces are not significant" "value")
28+
]
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
[Section1]
22
key1=2
33
key2 = stringValue
4-
;comment
4+
;comment
55
[ Section2 ]
6-
key3 = 1.23 ; comment
6+
key3 = 1.23
77
key5 = true
88
key6 = False
99
; comment
10-
key7 =
10+
key7 =
11+
key8 = Data Source=localhost\sqlexpress;Initial Catalog=DB with Spaces
12+
key9 = Trailing spaces are not significant

0 commit comments

Comments
 (0)