@@ -49,6 +49,9 @@ data UploadFeature = UploadFeature {
4949 -- For new pacakges lifecycle, this should be removed
5050 uploadPackage :: ServerPartE UploadResult ,
5151
52+ -- | Notification that a new package was uploaded.
53+ packageUploaded :: Hook PackageId () ,
54+
5255 -- TODO: consider moving the trustee and/or per-package maintainer groups
5356 -- lower down in the feature hierarchy; many other features want to
5457 -- use the trustee group purely for auth decisions
@@ -110,6 +113,8 @@ initUploadFeature env@ServerEnv{serverStateDir} = do
110113 uploadersState <- uploadersStateComponent serverStateDir
111114 maintainersState <- maintainersStateComponent serverStateDir
112115
116+ packageUploaded <- newHook
117+
113118 return $ \ user@ UserFeature {.. } core@ CoreFeature {.. } -> do
114119
115120 -- Recusively tie the knot: the feature contains new user group resources
@@ -122,6 +127,7 @@ initUploadFeature env@ServerEnv{serverStateDir} = do
122127 trusteesState trusteesGroup trusteesGroupResource
123128 uploadersState uploadersGroup uploadersGroupResource
124129 maintainersState maintainersGroup maintainersGroupResource
130+ packageUploaded
125131
126132 (trusteesGroup, trusteesGroupResource) <-
127133 groupResourceAt " /packages/trustees" trusteesGroupDescription
@@ -184,6 +190,7 @@ uploadFeature :: ServerEnv
184190 -> StateComponent AcidState HackageTrustees -> UserGroup -> GroupResource
185191 -> StateComponent AcidState HackageUploaders -> UserGroup -> GroupResource
186192 -> StateComponent AcidState PackageMaintainers -> (PackageName -> UserGroup ) -> GroupResource
193+ -> Hook PackageId ()
187194 -> (UploadFeature ,
188195 UserGroup ,
189196 UserGroup ,
@@ -198,6 +205,7 @@ uploadFeature ServerEnv{serverBlobStore = store}
198205 trusteesState trusteesGroup trusteesGroupResource
199206 uploadersState uploadersGroup uploadersGroupResource
200207 maintainersState maintainersGroup maintainersGroupResource
208+ packageUploaded
201209 = ( UploadFeature {.. }
202210 , trusteesGroupDescription, uploadersGroupDescription, maintainersGroupDescription)
203211 where
@@ -314,6 +322,7 @@ uploadFeature ServerEnv{serverBlobStore = store}
314322 liftIO $ addUserToGroup group uid
315323 runHook_ groupChangedHook (groupDesc group, True ,uid,uid," initial upload" )
316324
325+ runHook_ packageUploaded pkgid
317326 return uresult
318327 -- this is already checked in processUpload, and race conditions are highly unlikely but imaginable
319328 else errForbidden " Upload failed" [MText " Package already exists." ]
0 commit comments