optparse-applicative 0.6 #610
This commit is contained in:
parent
eb478470e9
commit
978d6a80da
@ -71,7 +71,7 @@ injectDefaultP env path p@(OptP o)
|
|||||||
in parseri { infoParser = injectDefaultP env (path ++ [normalizeName cmd]) (infoParser parseri) }
|
in parseri { infoParser = injectDefaultP env (path ++ [normalizeName cmd]) (infoParser parseri) }
|
||||||
in OptP (Option (CmdReader cmds (`M.lookup` cmdMap)) props)
|
in OptP (Option (CmdReader cmds (`M.lookup` cmdMap)) props)
|
||||||
| (Option (OptReader names (CReader _ rdr) _) _) <- o =
|
| (Option (OptReader names (CReader _ rdr) _) _) <- o =
|
||||||
p <|> either (const empty) pure (msum $ map (rdr <=< (maybe (Left $ ErrorMsg "Missing environment variable") Right . getEnvValue env path)) names)
|
p <|> either' (const empty) pure (msum $ map (rdr <=< (maybe (left $ ErrorMsg "Missing environment variable") right . getEnvValue env path)) names)
|
||||||
| (Option (FlagReader names a) _) <- o =
|
| (Option (FlagReader names a) _) <- o =
|
||||||
p <|> if any ((==Just "1") . getEnvValue env path) names then pure a else empty
|
p <|> if any ((==Just "1") . getEnvValue env path) names then pure a else empty
|
||||||
| otherwise = p
|
| otherwise = p
|
||||||
@ -81,6 +81,16 @@ injectDefaultP env path (AltP p1 p2) =
|
|||||||
AltP (injectDefaultP env path p1) (injectDefaultP env path p2)
|
AltP (injectDefaultP env path p1) (injectDefaultP env path p2)
|
||||||
injectDefaultP _env _path b@(BindP {}) = b
|
injectDefaultP _env _path b@(BindP {}) = b
|
||||||
|
|
||||||
|
#if MIN_VERSION_optparse_applicative(0,6,0)
|
||||||
|
right = ReadM . Right
|
||||||
|
left = ReadM . Left
|
||||||
|
either' f g (ReadM x) = either f g x
|
||||||
|
#else
|
||||||
|
right = Right
|
||||||
|
left = Left
|
||||||
|
either' = either
|
||||||
|
#endif
|
||||||
|
|
||||||
getEnvValue :: M.Map [String] String -> [String] -> OptName -> Maybe String
|
getEnvValue :: M.Map [String] String -> [String] -> OptName -> Maybe String
|
||||||
getEnvValue env path (OptLong l) = M.lookup (path ++ [normalizeName l]) env
|
getEnvValue env path (OptLong l) = M.lookup (path ++ [normalizeName l]) env
|
||||||
getEnvValue _ _ _ = Nothing
|
getEnvValue _ _ _ = Nothing
|
||||||
|
|||||||
@ -16,6 +16,9 @@ import qualified Paths_yesod_bin
|
|||||||
import Scaffolding.Scaffolder
|
import Scaffolding.Scaffolder
|
||||||
|
|
||||||
import Options.Applicative.Builder.Internal (Mod, OptionFields)
|
import Options.Applicative.Builder.Internal (Mod, OptionFields)
|
||||||
|
#if MIN_VERSION_optparse_applicative(0,6,0)
|
||||||
|
import Options.Applicative.Types (ReadM (ReadM))
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef WINDOWS
|
#ifndef WINDOWS
|
||||||
import Build (touch)
|
import Build (touch)
|
||||||
@ -165,7 +168,11 @@ optStr :: Mod OptionFields (Maybe String) -> Parser (Maybe String)
|
|||||||
optStr m =
|
optStr m =
|
||||||
nullOption $ value Nothing <> reader (success . str) <> m
|
nullOption $ value Nothing <> reader (success . str) <> m
|
||||||
where
|
where
|
||||||
|
#if MIN_VERSION_optparse_applicative(0,6,0)
|
||||||
|
success = ReadM . Right
|
||||||
|
#else
|
||||||
success = Right
|
success = Right
|
||||||
|
#endif
|
||||||
|
|
||||||
-- | Like @rawSystem@, but exits if it receives a non-success result.
|
-- | Like @rawSystem@, but exits if it receives a non-success result.
|
||||||
rawSystem' :: String -> [String] -> IO ()
|
rawSystem' :: String -> [String] -> IO ()
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
name: yesod-bin
|
name: yesod-bin
|
||||||
version: 1.2.3.3
|
version: 1.2.3.4
|
||||||
license: MIT
|
license: MIT
|
||||||
license-file: LICENSE
|
license-file: LICENSE
|
||||||
author: Michael Snoyman <michael@snoyman.com>
|
author: Michael Snoyman <michael@snoyman.com>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user