git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #1237 from hdgarrood/handle-bower-link
6806f7fPhil Freeman
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
@@ -173,6 +173,12 @@ readProcess' prog args stdin = do
173
173
174data DependencyStatus
174data DependencyStatus
175 = Missing
175 = Missing
176+ -- ^ Listed in bower.json, but not installed.
177+ | NoResolution
178+ -- ^ In the output of `bower list --json --offline`, there was no
179+ -- _resolution key. This can be caused by adding the dependency using
180+ -- `bower link`, or simply copying it into bower_components instead of
181+ -- installing it normally.
176 | ResolvedOther String
182 | ResolvedOther String
177 -- ^ Resolved, but to something other than a version. The String argument
183 -- ^ Resolved, but to something other than a version. The String argument
178 -- is the resolution type. The values it can take that I'm aware of are
184 -- is the resolution type. The values it can take that I'm aware of are
@@ -237,7 +243,7 @@ asDependencyStatus = do
237 return Missing
243 return Missing
238 else
244 else
239 key "pkgMeta" $
245 key "pkgMeta" $
240− key "_resolution" $ do
246+ keyOrDefault "_resolution" NoResolution $ do
241 type_ <- key "type" asString
247 type_ <- key "type" asString
242 case type_ of
248 case type_ of
243 "version" -> ResolvedVersion <$> key "tag" asString
249 "version" -> ResolvedVersion <$> key "tag" asString
@@ -250,12 +256,12 @@ warnUndeclared declared actual =
250handleDeps ::
256handleDeps ::
251 [(PackageName, DependencyStatus)] -> PrepareM [(PackageName, Version)]
257 [(PackageName, DependencyStatus)] -> PrepareM [(PackageName, Version)]
252handleDeps deps = do
258handleDeps deps = do
253− let (missing, notVersion, installed) = partitionDeps deps
259+ let (missing, noVersion, installed) = partitionDeps deps
254 case missing of
260 case missing of
255 (x:xs) ->
261 (x:xs) ->
256 userError (MissingDependencies (x :| xs))
262 userError (MissingDependencies (x :| xs))
257 [] -> do
263 [] -> do
258− mapM_ (warn . ResolutionNotVersion . fst) notVersion
264+ mapM_ (warn . NoResolvedVersion) noVersion
259 withVersions <- catMaybes <$> mapM tryExtractVersion' installed
265 withVersions <- catMaybes <$> mapM tryExtractVersion' installed
260 filterM (liftIO . isPureScript . bowerDir . fst) withVersions
266 filterM (liftIO . isPureScript . bowerDir . fst) withVersions
261
267
@@ -264,7 +270,8 @@ handleDeps deps = do
264 go (pkgName, d) (ms, os, is) =
270 go (pkgName, d) (ms, os, is) =
265 case d of
271 case d of
266 Missing -> (pkgName : ms, os, is)
272 Missing -> (pkgName : ms, os, is)
273+ NoResolution -> (ms, pkgName : os, is)
267− ResolvedOther o -> (ms, (pkgName, o) : os, is)
274+ ResolvedOther _ -> (ms, pkgName : os, is)
268 ResolvedVersion v -> (ms, os, (pkgName, v) : is)
275 ResolvedVersion v -> (ms, os, (pkgName, v) : is)
269
276
270 bowerDir pkgName = "bower_components/" ++ runPackageName pkgName
277 bowerDir pkgName = "bower_components/" ++ runPackageName pkgName