diff --git a/README.md b/README.md index 263c101..2e33cd6 100644 --- a/README.md +++ b/README.md @@ -223,6 +223,7 @@ Usage: niv [-s|--sources-file FILE] COMMAND Available options: -s,--sources-file FILE Use FILE instead of nix/sources.json -h,--help Show this help text + --version Print version Available commands: init Initialize a Nix project. Existing files won't be diff --git a/default.nix b/default.nix index c07e521..e79161a 100644 --- a/default.nix +++ b/default.nix @@ -153,9 +153,7 @@ let packages = ps: [ ps.niv ]; shellHook = '' repl_for() { - haskell_version=$(cat ./package.yaml \ - | grep -oP 'version: \K\d+.\d+.\d+' \ - | sed 's/\./,/g' ) + haskell_version=$(jq <./package.yaml -cMr '.version' | sed 's/\./,/g') paths_niv=$(mktemp -d)/Paths_niv.hs diff --git a/src/Niv/Cli.hs b/src/Niv/Cli.hs index b022306..a0f508b 100644 --- a/src/Niv/Cli.hs +++ b/src/Niv/Cli.hs @@ -61,7 +61,7 @@ cli = do Opts.Failure $ Opts.parserFailure pprefs pinfo Opts.ShowHelpText mempty execParserPure' pprefs pinfo args = Opts.execParserPure pprefs pinfo args - opts = Opts.info ((,) <$> parseFindSourcesJson <*> (parseCommand <**> Opts.helper)) $ mconcat desc + opts = Opts.info ((,) <$> parseFindSourcesJson <*> (parseCommand <**> Opts.helper <**> versionflag)) $ mconcat desc desc = [ Opts.fullDesc, Opts.headerDoc $ Just $ @@ -78,6 +78,11 @@ cli = do <> Opts.help "Use FILE instead of nix/sources.json" ) <|> pure Auto + versionflag :: Opts.Parser (a -> a) + versionflag = + Opts.abortOption (Opts.InfoMsg (showVersion version)) $ + mconcat + [Opts.long "version", Opts.hidden, Opts.help "Print version"] parseCommand :: Opts.Parser (NIO ()) parseCommand =