Skip to content

Commit 87f031e

Browse files
committed
Restored uninstall functionality
1 parent 046432f commit 87f031e

3 files changed

Lines changed: 50 additions & 1 deletion

File tree

‎src/Paket.Core/ProjectFile.fs‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,19 @@ type ProjectFile =
177177
| None ->
178178
let firstNode = fileItemsInSameDir |> Seq.head
179179
firstNode.ParentNode.InsertBefore(libReferenceNode, firstNode) |> ignore
180+
181+
let paketNodes =
182+
this.FindPaketNodes("Compile")
183+
@ this.FindPaketNodes("Content")
184+
185+
//remove uneeded files
186+
for paketNode in paketNodes do
187+
match getAttribute "Include" paketNode with
188+
| Some path ->
189+
if not(fileItems |> List.exists (fun fi -> fi.Include = path))
190+
then paketNode.ParentNode.RemoveChild(paketNode) |> ignore
191+
else ()
192+
| _ -> ()
180193

181194
this.DeleteIfEmpty("PropertyGroup")
182195
this.DeleteIfEmpty("ItemGroup")

‎src/Paket/Paket.fsproj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
<StartArguments>update</StartArguments>
3131
<StartAction>Project</StartAction>
3232
<StartProgram>paket.exe</StartProgram>
33-
<StartWorkingDirectory>c:\code\Paket09x</StartWorkingDirectory>
33+
<StartWorkingDirectory>D:\Appdev\officeprovider\</StartWorkingDirectory>
3434
</PropertyGroup>
3535
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
3636
<DebugType>pdbonly</DebugType>

‎tests/Paket.Tests/ProjectFile/OutputSpecs.fs‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,40 @@ let ``should maintain order when updating project file items`` () =
9999
"WordProvider.fs"
100100
"ProviderEntryPoint.fs"
101101
]
102+
CollectionAssert.AreEqual(expected, actual)
103+
104+
[<Test>]
105+
let ``should remove missing files that exist in the project`` () =
106+
107+
let projFile = ProjectFile.Load("./ProjectFile/TestData/MaintainsOrdering.fsprojtest").Value
108+
let fileItems = [
109+
{ BuildAction = "Compile"; Include = "DebugProvidedTypes.fs"; Link = None }
110+
{ BuildAction = "Compile"; Include = "ProvidedTypes.fs"; Link = None }
111+
{ BuildAction = "Content"; Include = "ProvidedTypes.fsi"; Link = None }
112+
]
113+
projFile.UpdateFileItems(fileItems, false)
114+
115+
let rec nodes node =
116+
seq {
117+
for node in node |> Seq.cast<XmlNode> do
118+
if node.Name = "Compile" || node.Name = "Content"
119+
then yield Paket.Xml.getAttribute "Include" node
120+
yield! nodes node
121+
}
122+
123+
let actual =
124+
nodes projFile.Document
125+
|> Seq.choose id
126+
|> Seq.toList
127+
let expected =
128+
[
129+
"ProvidedTypes.fsi"
130+
"ProvidedTypes.fs"
131+
"DebugProvidedTypes.fs"
132+
"QuotationHelpers.fs"
133+
"CommonTypes.fs"
134+
"ExcelProvider.fs"
135+
"WordProvider.fs"
136+
"ProviderEntryPoint.fs"
137+
]
102138
CollectionAssert.AreEqual(expected, actual)

0 commit comments

Comments
 (0)