Skip to content

Commit e71fd03

Browse files
authored
Update dependency notification (#8455)
* Rework dependency notifications * rework Dependency events
1 parent 3cefbba commit e71fd03

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

src/fsharp/DependencyManager.Integration.fs

+15-3
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ type internal IDependencyManagerProvider =
6464
abstract Key: string
6565
abstract ResolveDependencies: scriptExt: string * packageManagerTextLines: string seq * tfm: string -> bool * string list * string list
6666
abstract DependencyAdding: IEvent<string * string>
67-
abstract DependencyAdded: IEvent<string * string>
67+
abstract DependencyAdded: IEvent<string * string * string list * string list>
6868
abstract DependencyFailed: IEvent<string * string>
6969

7070
[<RequireQualifiedAccess>]
@@ -96,23 +96,35 @@ type ReflectionDependencyManagerProvider(theType: Type, nameProperty: PropertyIn
9696
Some (fun () -> new ReflectionDependencyManagerProvider(theType, nameProperty, keyProperty, resolveDependenciesMethod, outputDir) :> IDependencyManagerProvider)
9797

9898
interface IDependencyManagerProvider with
99+
99100
member __.Name = instance |> nameProperty
101+
100102
member __.Key = instance |> keyProperty
101103
member this.ResolveDependencies(scriptDir, packageManagerTextLines, tfm) =
104+
102105
let key = (this :> IDependencyManagerProvider).Key
103106
let triggerEvent (evt: Event<string * string>) =
104107
for prLine in packageManagerTextLines do
105108
evt.Trigger(key, prLine)
106109
triggerEvent dependencyAddingEvent
107110
let arguments = [| box scriptDir; box packageManagerTextLines; box tfm |]
108111
let succeeded, generatedScripts, additionalIncludeFolders = resolveDeps.Invoke(instance, arguments) :?> _
109-
if succeeded then triggerEvent dependencyAddedEvent
110-
else triggerEvent dependencyFailedEvent
112+
113+
for prLine in packageManagerTextLines do
114+
if succeeded then
115+
dependencyAddedEvent.Trigger(key, prLine, generatedScripts, additionalIncludeFolders)
116+
else
117+
dependencyFailedEvent.Trigger(key, prLine)
118+
111119
succeeded, generatedScripts, additionalIncludeFolders
120+
112121
member __.DependencyAdding = dependencyAddingEvent.Publish
122+
113123
member __.DependencyAdded = dependencyAddedEvent.Publish
124+
114125
member __.DependencyFailed = dependencyFailedEvent.Publish
115126

127+
116128
// Resolution Path = Location of FSharp.Compiler.Private.dll
117129
let assemblySearchPaths = lazy (
118130
[

src/fsharp/DependencyManager.Integration.fsi

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ type IDependencyManagerProvider =
1010
abstract Key: string
1111
abstract ResolveDependencies: scriptExt: string * packageManagerTextLines: string seq * tfm: string -> bool * string list * string list
1212
abstract DependencyAdding: IEvent<string * string>
13-
abstract DependencyAdded: IEvent<string * string>
13+
abstract DependencyAdded: IEvent<string * string * string list * string list>
1414
abstract DependencyFailed: IEvent<string * string>
1515

1616
[<RequireQualifiedAccess>]

src/fsharp/fsi/fsi.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -958,7 +958,7 @@ type internal FsiDynamicCompiler
958958

959959
let valueBoundEvent = Control.Event<_>()
960960
let dependencyAddingEvent = Control.Event<string * string>()
961-
let dependencyAddedEvent = Control.Event<string * string>()
961+
let dependencyAddedEvent = Control.Event<string * string * string list * string list>()
962962
let dependencyFailedEvent = Control.Event<string * string>()
963963

964964
let mutable fragmentId = 0

src/fsharp/fsi/fsi.fsi

+1-1
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ type FsiEvaluationSession =
240240

241241
[<CLIEvent>]
242242
/// Event fires at the successful completion of adding a dependency via the dependency manager.
243-
member DependencyAdded: IEvent<string * string>
243+
member DependencyAdded: IEvent<string * string * string list * string list>
244244

245245
[<CLIEvent>]
246246
/// Event fires at the failure to adding a dependency via the dependency manager.

tests/FSharp.Compiler.Private.Scripting.UnitTests/DependencyManagerInteractiveTests.fs

+10-2
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,27 @@ type DependencyManagerInteractiveTests() =
5757
let mutable dependencyAddedEventCount = 0
5858
let mutable foundDependencyAdding = false
5959
let mutable foundDependencyAdded = false
60+
let mutable packageRootsCount = 0
61+
let mutable generatedScriptsCount = 0
6062
Event.add (fun (dep: string * string) ->
6163
let key, dependency = dep
6264
dependencyAddingEventCount <- dependencyAddingEventCount + 1
6365
foundDependencyAdding <- foundDependencyAdding || (key = "nuget" && dependency = referenceText))
6466
script.DependencyAdding
65-
Event.add (fun (dep: string * string) ->
66-
let key, dependency = dep
67+
Event.add (fun (dep: string * string * string list * string list) ->
68+
let key, dependency, _generatedScripts, _packageRoots = dep
69+
generatedScriptsCount <- _generatedScripts.Length
70+
packageRootsCount <- _packageRoots.Length
6771
dependencyAddedEventCount <- dependencyAddedEventCount + 1
6872
foundDependencyAdded <- foundDependencyAdded || (key = "nuget" && dependency = referenceText))
6973
script.DependencyAdded
7074
script.Eval(text) |> ignoreValue
7175
Assert.AreEqual(1, dependencyAddingEventCount)
7276
Assert.AreEqual(1, dependencyAddedEventCount)
77+
Assert.AreEqual(1, dependencyAddingEventCount)
78+
Assert.AreEqual(1, dependencyAddedEventCount)
79+
Assert.AreEqual(1, generatedScriptsCount)
80+
Assert.AreEqual(1, dependencyAddedEventCount)
7381
Assert.AreEqual(true, foundDependencyAdding)
7482
Assert.AreEqual(true, foundDependencyAdded)
7583

0 commit comments

Comments
 (0)