From cf341c12848e30a53bb415a32d3c13f13feae53a Mon Sep 17 00:00:00 2001 From: Nicolas Mattia Date: Sat, 18 Jul 2026 12:55:37 +0200 Subject: [PATCH 1/4] Add 'version' command --- README.md | 1 + app/Niv.hs | 3 ++- flake.nix | 2 +- src/Niv/Cli.hs | 27 ++++++++++++++++++++++----- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d53f41cf..deecd939 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,7 @@ Available commands: modify Modify dependency attributes without performing an update drop Drop dependency + version Print version ``` #### Add diff --git a/app/Niv.hs b/app/Niv.hs index fcec3657..333cdb97 100644 --- a/app/Niv.hs +++ b/app/Niv.hs @@ -1,6 +1,7 @@ module Main where import Niv.Cli +import System.Environment (getArgs) main :: IO () -main = Niv.Cli.cli +main = getArgs >>= Niv.Cli.cli diff --git a/flake.nix b/flake.nix index e87f32d8..4a755c08 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,7 @@ niv-source = sourceByRegex "niv" ./. [ "^niv.cabal$" - "^README.md$" + "^README.md$" # the README is not required for the build but is required for the sdist "^LICENSE$" "^app$" "^app.*.hs$" diff --git a/src/Niv/Cli.hs b/src/Niv/Cli.hs index 730416ef..180c7039 100644 --- a/src/Niv/Cli.hs +++ b/src/Niv/Cli.hs @@ -36,7 +36,6 @@ import qualified Options.Applicative.Help.Pretty as Opts -- I died a little import Paths_niv (version) import qualified System.Directory as Dir -import System.Environment (getArgs) import System.FilePath (takeDirectory) import UnliftIO @@ -52,17 +51,17 @@ getFindSourcesJson = ask li :: (MonadIO io) => IO a -> io a li = liftIO -cli :: IO () -cli = do +cli :: [String] -> IO () +cli args = do ((fsj, colors), nio) <- - getArgs >>= Opts.handleParseResult . execParserPure' Opts.defaultPrefs opts + pure args >>= Opts.handleParseResult . execParserPure' Opts.defaultPrefs opts setColors colors runReaderT (runNIO nio) fsj where execParserPure' pprefs pinfo [] = Opts.Failure $ Opts.parserFailure pprefs pinfo (Opts.ShowHelpText Nothing) mempty - execParserPure' pprefs pinfo args = Opts.execParserPure pprefs pinfo args + execParserPure' pprefs pinfo as = Opts.execParserPure pprefs pinfo as opts = Opts.info ((,) <$> ((,) <$> parseFindSourcesJson <*> parseColors) <*> (parseCommand <**> Opts.helper <**> versionflag)) $ mconcat desc desc = [ Opts.fullDesc, @@ -105,6 +104,7 @@ parseCommand = <> Opts.command "update" parseCmdUpdate <> Opts.command "modify" parseCmdModify <> Opts.command "drop" parseCmdDrop + <> Opts.command "version" parseCmdVersion ) parsePackageName :: Opts.Parser PackageName @@ -611,6 +611,23 @@ cmdDrop packageName = \case Sources $ HMS.insert packageName packageSpec sources +------------------------------------------------------------------------------- +-- VERSION +------------------------------------------------------------------------------- + +parseCmdVersion :: Opts.ParserInfo (NIO ()) +parseCmdVersion = + Opts.info + ( pure (tsay $ T.pack $ showVersion version) + <**> Opts.helper + ) + $ mconcat desc + where + desc = + [ Opts.fullDesc, + Opts.progDesc "Print version" + ] + ------------------------------------------------------------------------------- -- Files and their content ------------------------------------------------------------------------------- From 1ff1e8a70208397d2fbb76b615de1fbefade4c6e Mon Sep 17 00:00:00 2001 From: Nicolas Mattia Date: Sat, 18 Jul 2026 14:28:27 +0200 Subject: [PATCH 2/4] Update CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b00c6aea..9b1f61a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog +## [Unrelease] + +### Added +* New `version` command: `niv version` + ## [0.2.22] 2023-03-12 ### Changed From 925df1219114ee1e54899d8198d0e81850223bbe Mon Sep 17 00:00:00 2001 From: Nicolas Mattia Date: Sat, 18 Jul 2026 14:46:31 +0200 Subject: [PATCH 3/4] Fix CHANGELOG typo --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b1f61a3..63b03493 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog -## [Unrelease] +## [Unreleased] ### Added * New `version` command: `niv version` From cdde9395d075a5b6ff39ae75514bc9710e46bf7b Mon Sep 17 00:00:00 2001 From: Nicolas Mattia Date: Sat, 18 Jul 2026 14:46:50 +0200 Subject: [PATCH 4/4] Remove double README entry --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index 4a755c08..9b470386 100644 --- a/flake.nix +++ b/flake.nix @@ -41,7 +41,6 @@ "^src/Niv/Sources$" "^src/Niv/Update$" "^src.*.hs$" - "^README.md$" "^nix$" "^nix.sources.nix$" ];