git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Handle 'bower link' properly in psc-publish
92cda39Harry Garrood
psc-publish/ErrorsWarnings.hs+8−8
@@ -33,7 +33,7 @@ data PackageError
33 deriving (Show)
33 deriving (Show)
34
34
35data PackageWarning
35data PackageWarning
36− = ResolutionNotVersion PackageName
36+ = NoResolvedVersion PackageName
37 | UndeclaredDependency PackageName
37 | UndeclaredDependency PackageName
38 | UnacceptableVersion (PackageName, String)
38 | UnacceptableVersion (PackageName, String)
39 deriving (Show)
39 deriving (Show)
@@ -253,7 +253,7 @@ displayOtherError e = case e of
253 [ "An IO exception occurred:", show exc ]
253 [ "An IO exception occurred:", show exc ]
254
254
255data CollectedWarnings = CollectedWarnings
255data CollectedWarnings = CollectedWarnings
256− { resolutionNotVersions :: [PackageName]
256+ { noResolvedVersions :: [PackageName]
257 , undeclaredDependencies :: [PackageName]
257 , undeclaredDependencies :: [PackageName]
258 , unacceptableVersions :: [(PackageName, String)]
258 , unacceptableVersions :: [(PackageName, String)]
259 }
259 }
@@ -268,7 +268,7 @@ collectWarnings :: [PackageWarning] -> CollectedWarnings
268collectWarnings = foldMap singular
268collectWarnings = foldMap singular
269 where
269 where
270 singular w = case w of
270 singular w = case w of
271− ResolutionNotVersion pn -> CollectedWarnings [pn] [] []
271+ NoResolvedVersion pn -> CollectedWarnings [pn] [] []
272 UndeclaredDependency pn -> CollectedWarnings [] [pn] []
272 UndeclaredDependency pn -> CollectedWarnings [] [pn] []
273 UnacceptableVersion t -> CollectedWarnings [] [] [t]
273 UnacceptableVersion t -> CollectedWarnings [] [] [t]
274
274
@@ -276,7 +276,7 @@ renderWarnings :: [PackageWarning] -> Box
276renderWarnings warns =
276renderWarnings warns =
277 let CollectedWarnings{..} = collectWarnings warns
277 let CollectedWarnings{..} = collectWarnings warns
278 go toBox warns' = toBox <$> NonEmpty.nonEmpty warns'
278 go toBox warns' = toBox <$> NonEmpty.nonEmpty warns'
279− mboxes = [ go warnResolutionNotVersions resolutionNotVersions
279+ mboxes = [ go warnNoResolvedVersions noResolvedVersions
280 , go warnUndeclaredDependencies undeclaredDependencies
280 , go warnUndeclaredDependencies undeclaredDependencies
281 , go warnUnacceptableVersions unacceptableVersions
281 , go warnUnacceptableVersions unacceptableVersions
282 ]
282 ]
@@ -286,18 +286,18 @@ renderWarnings warns =
286 , indented (vcat (intersperse spacer boxes))
286 , indented (vcat (intersperse spacer boxes))
287 ]
287 ]
288
288
289−warnResolutionNotVersions :: NonEmpty PackageName -> Box
289+warnNoResolvedVersions :: NonEmpty PackageName -> Box
290−warnResolutionNotVersions pkgNames =
290+warnNoResolvedVersions pkgNames =
291 let singular = NonEmpty.length pkgNames == 1
291 let singular = NonEmpty.length pkgNames == 1
292 pl a b = if singular then b else a
292 pl a b = if singular then b else a
293
293
294 packages = pl "packages" "package"
294 packages = pl "packages" "package"
295− were = pl "were" "was"
296 anyOfThese = pl "any of these" "this"
295 anyOfThese = pl "any of these" "this"
297 these = pl "these" "this"
296 these = pl "these" "this"
298 in vcat $
297 in vcat $
299 [ para (concat
298 [ para (concat
300− ["The following ", packages, " ", were, " not resolved to a version:"])
299+ ["The following ", packages, " did not appear to have a resolved "
300+ , "version:"])
301 ] ++
301 ] ++
302 bulletedList runPackageName (NonEmpty.toList pkgNames)
302 bulletedList runPackageName (NonEmpty.toList pkgNames)
303 ++
303 ++
psc-publish/Main.hs+11−4
@@ -171,6 +171,12 @@ readProcess' prog args stdin = do
171
171
172data DependencyStatus
172data DependencyStatus
173 = Missing
173 = Missing
174+ -- ^ Listed in bower.json, but not installed.
175+ | NoResolution
176+ -- ^ In the output of `bower list --json --offline`, there was no
177+ -- _resolution key. This can be caused by adding the dependency using
178+ -- `bower link`, or simply copying it into bower_components instead of
179+ -- installing it normally.
174 | ResolvedOther String
180 | ResolvedOther String
175 -- ^ Resolved, but to something other than a version. The String argument
181 -- ^ Resolved, but to something other than a version. The String argument
176 -- is the resolution type. The values it can take that I'm aware of are
182 -- is the resolution type. The values it can take that I'm aware of are
@@ -235,7 +241,7 @@ asDependencyStatus = do
235 return Missing
241 return Missing
236 else
242 else
237 key "pkgMeta" $
243 key "pkgMeta" $
238− key "_resolution" $ do
244+ keyOrDefault "_resolution" NoResolution $ do
239 type_ <- key "type" asString
245 type_ <- key "type" asString
240 case type_ of
246 case type_ of
241 "version" -> ResolvedVersion <$> key "tag" asString
247 "version" -> ResolvedVersion <$> key "tag" asString
@@ -248,12 +254,12 @@ warnUndeclared declared actual =
248handleDeps ::
254handleDeps ::
249 [(PackageName, DependencyStatus)] -> PrepareM [(PackageName, Version)]
255 [(PackageName, DependencyStatus)] -> PrepareM [(PackageName, Version)]
250handleDeps deps = do
256handleDeps deps = do
251− let (missing, notVersion, installed) = partitionDeps deps
257+ let (missing, noVersion, installed) = partitionDeps deps
252 case missing of
258 case missing of
253 (x:xs) ->
259 (x:xs) ->
254 userError (MissingDependencies (x :| xs))
260 userError (MissingDependencies (x :| xs))
255 [] -> do
261 [] -> do
256− mapM_ (warn . ResolutionNotVersion . fst) notVersion
262+ mapM_ (warn . NoResolvedVersion) noVersion
257 withVersions <- catMaybes <$> mapM tryExtractVersion' installed
263 withVersions <- catMaybes <$> mapM tryExtractVersion' installed
258 filterM (liftIO . isPureScript . bowerDir . fst) withVersions
264 filterM (liftIO . isPureScript . bowerDir . fst) withVersions
259
265
@@ -262,7 +268,8 @@ handleDeps deps = do
262 go (pkgName, d) (ms, os, is) =
268 go (pkgName, d) (ms, os, is) =
263 case d of
269 case d of
264 Missing -> (pkgName : ms, os, is)
270 Missing -> (pkgName : ms, os, is)
271+ NoResolution -> (ms, pkgName : os, is)
265− ResolvedOther o -> (ms, (pkgName, o) : os, is)
272+ ResolvedOther _ -> (ms, pkgName : os, is)
266 ResolvedVersion v -> (ms, os, (pkgName, v) : is)
273 ResolvedVersion v -> (ms, os, (pkgName, v) : is)
267
274
268 bowerDir pkgName = "bower_components/" ++ runPackageName pkgName
275 bowerDir pkgName = "bower_components/" ++ runPackageName pkgName