@@ -57,9 +57,6 @@ public class ManagedDependency {
57
57
}
58
58
}
59
59
60
- /// The checked out path of the dependency on disk, relative to the workspace checkouts path.
61
- public let subpath : RelativePath
62
-
63
60
/// A dependency which in editable state is based on a dependency from
64
61
/// which it edited from.
65
62
///
@@ -74,46 +71,28 @@ public class ManagedDependency {
74
71
return ManagedDependency (
75
72
package : package ,
76
73
state: . local,
77
- // FIXME: This is just a fake entry, we should fix it.
78
- subpath: RelativePath ( package . identity. description) ,
79
74
basedOn: nil
80
75
)
81
76
}
82
77
83
78
/// Create an editable managed dependency based on a dependency which
84
79
/// was *not* in edit state.
85
80
public static func checkout( package : PackageReference , state: CheckoutState ) -> ManagedDependency {
86
- // FIXME: Temporary until subpath property is removed
87
- let subpath : RelativePath
88
- if let path = try ? AbsolutePath ( validating: package . location) ,
89
- let lastPathComponent = path. components. last {
90
- subpath = RelativePath ( lastPathComponent)
91
- } else {
92
- subpath = RelativePath ( package . identity. description)
93
- }
94
-
95
- return ManagedDependency ( package : package , state: . checkout( state) , subpath: subpath, basedOn: nil )
81
+ return ManagedDependency ( package : package , state: . checkout( state) , basedOn: nil )
96
82
}
97
83
98
84
/// Create an editable managed dependency based on a dependency which
99
85
/// was *not* in edit state.
100
86
public static func edited( basedOn dependency: ManagedDependency , state: EditedState ) -> ManagedDependency {
101
- switch state {
102
- case . managed( let path) :
103
- return ManagedDependency ( package : dependency. package , state: . edited( state) , subpath: path, basedOn: dependency)
104
- case . unmanaged:
105
- return ManagedDependency ( package : dependency. package , state: . edited( state) , subpath: dependency. subpath, basedOn: dependency)
106
- }
87
+ return ManagedDependency ( package : dependency. package , state: . edited( state) , basedOn: dependency)
107
88
}
108
89
109
90
internal init (
110
91
package : PackageReference ,
111
92
state: State ,
112
- subpath: RelativePath ,
113
93
basedOn: ManagedDependency ?
114
94
) {
115
95
self . package = package
116
- self . subpath = subpath
117
96
self . basedOn = basedOn
118
97
self . state = state
119
98
}
@@ -131,59 +110,60 @@ extension ManagedDependency: CustomStringConvertible {
131
110
/// A collection of managed dependencies.
132
111
public final class ManagedDependencies {
133
112
/// The dependencies keyed by the package URL.
134
- private var dependencyMap : [ String : ManagedDependency ]
113
+ private var map : [ PackageIdentity : ManagedDependency ]
135
114
136
- init ( dependencyMap : [ String : ManagedDependency ] = [ : ] ) {
137
- self . dependencyMap = dependencyMap
115
+ init ( _ dependencies : [ ManagedDependency ] = [ ] ) {
116
+ self . map = Dictionary ( zip ( dependencies . map { $0 . package . identity } , dependencies ) , uniquingKeysWith : { lhs , _ in lhs } )
138
117
}
139
118
140
- public subscript( forURL url: String ) -> ManagedDependency ? {
141
- dependencyMap [ url]
119
+ public subscript( _ identity: PackageIdentity ) -> ManagedDependency ? {
120
+ return map [ identity]
121
+ }
122
+
123
+ public subscript( named name: String ) -> ManagedDependency ? {
124
+ return map [ . plain( name) ]
142
125
}
143
126
144
- public subscript( forIdentity identity : PackageIdentity ) -> ManagedDependency ? {
145
- dependencyMap . values . first ( where : { $0 . package . identity == identity } )
127
+ public subscript( forURL url : String ) -> ManagedDependency ? {
128
+ return self [ . init ( url : url ) ]
146
129
}
147
130
148
- public subscript( forNameOrIdentity nameOrIdentity: String ) -> ManagedDependency ? {
149
- let lowercasedNameOrIdentity = nameOrIdentity. lowercased ( )
150
- return dependencyMap. values. first ( where: {
151
- $0. package . name == nameOrIdentity || $0. package . identity. description == lowercasedNameOrIdentity
152
- } )
131
+ public subscript( atPath path: AbsolutePath ) -> ManagedDependency ? {
132
+ return self [ . init( path: path) ]
153
133
}
154
134
155
135
public func add( _ dependency: ManagedDependency ) {
156
- self . dependencyMap [ dependency. package . location ] = dependency
136
+ map [ dependency. package . identity ] = dependency
157
137
}
158
138
159
- public func remove( forURL url : String ) {
160
- self . dependencyMap [ url ] = nil
139
+ public func remove( _ dependency : ManagedDependency ) {
140
+ map [ dependency . package . identity ] = nil
161
141
}
162
142
}
163
143
164
144
extension ManagedDependencies : Collection {
165
- public typealias Index = Dictionary < String , ManagedDependency > . Index
145
+ public typealias Index = Dictionary < PackageIdentity , ManagedDependency > . Index
166
146
public typealias Element = ManagedDependency
167
147
168
148
public var startIndex : Index {
169
- self . dependencyMap . startIndex
149
+ map . startIndex
170
150
}
171
151
172
152
public var endIndex : Index {
173
- self . dependencyMap . endIndex
153
+ map . endIndex
174
154
}
175
155
176
156
public subscript( index: Index ) -> Element {
177
- self . dependencyMap [ index] . value
157
+ map [ index] . value
178
158
}
179
159
180
160
public func index( after index: Index ) -> Index {
181
- self . dependencyMap . index ( after: index)
161
+ map . index ( after: index)
182
162
}
183
163
}
184
164
185
165
extension ManagedDependencies : CustomStringConvertible {
186
166
public var description : String {
187
- " <ManagedDependencies: \( Array ( dependencyMap . values) ) > "
167
+ " <ManagedDependencies: \( Array ( map . values) ) > "
188
168
}
189
169
}
0 commit comments