packages feed

jenkinsPlugins2nix 0.2.0.2 → 0.3.0.1

raw patch · 4 files changed

+59/−56 lines, 4 filesdep +prettyprinterdep +prettyprinter-ansi-terminaldep −ansi-wl-pprintdep ~attoparsecdep ~bimapdep ~bytestringPVP ok

version bump matches the API change (PVP)

Dependencies added: prettyprinter, prettyprinter-ansi-terminal

Dependencies removed: ansi-wl-pprint

Dependency ranges changed: attoparsec, bimap, bytestring, containers, cryptohash, hnix, http-conduit, mtl, optparse-applicative, tasty-hspec, text, zip-archive

API changes (from Hackage documentation)

- Nix.JenkinsPlugins2Nix: mkExprsFor :: Config -> IO (Either String Doc)
+ Nix.JenkinsPlugins2Nix: mkExprsFor :: Config -> IO (Either String (Doc ann))
- Nix.JenkinsPlugins2Nix.Types: Manifest :: !Text -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !(Maybe Text) -> !Text -> !Text -> !Text -> !Text -> !(Maybe Text) -> !(Maybe Text) -> !(Set PluginDependency) -> !(Set Text) -> Manifest
+ Nix.JenkinsPlugins2Nix.Types: Manifest :: !Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Maybe Text -> !Text -> !Text -> !Text -> !Text -> !Maybe Text -> !Maybe Text -> !Set PluginDependency -> !Set Text -> Manifest
- Nix.JenkinsPlugins2Nix.Types: Plugin :: !Text -> !(Digest SHA256) -> !Manifest -> Plugin
+ Nix.JenkinsPlugins2Nix.Types: Plugin :: !Text -> !Digest SHA256 -> !Manifest -> Plugin
- Nix.JenkinsPlugins2Nix.Types: RequestedPlugin :: !Text -> !(Maybe Text) -> RequestedPlugin
+ Nix.JenkinsPlugins2Nix.Types: RequestedPlugin :: !Text -> !Maybe Text -> RequestedPlugin
- Nix.JenkinsPlugins2Nix.Types: [archiver_version] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [archiver_version] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [build_jdk] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [build_jdk] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [built_by] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [built_by] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [created_by] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [created_by] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [extension_name] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [extension_name] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [group_id] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [group_id] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [hudson_version] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [hudson_version] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [implementation_title] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [implementation_title] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [implementation_version] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [implementation_version] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [jenkins_version] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [jenkins_version] :: Manifest -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [plugin_dependencies] :: Manifest -> !(Set PluginDependency)
+ Nix.JenkinsPlugins2Nix.Types: [plugin_dependencies] :: Manifest -> !Set PluginDependency
- Nix.JenkinsPlugins2Nix.Types: [plugin_developers] :: Manifest -> !(Set Text)
+ Nix.JenkinsPlugins2Nix.Types: [plugin_developers] :: Manifest -> !Set Text
- Nix.JenkinsPlugins2Nix.Types: [requested_version] :: RequestedPlugin -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [requested_version] :: RequestedPlugin -> !Maybe Text
- Nix.JenkinsPlugins2Nix.Types: [sha256] :: Plugin -> !(Digest SHA256)
+ Nix.JenkinsPlugins2Nix.Types: [sha256] :: Plugin -> !Digest SHA256
- Nix.JenkinsPlugins2Nix.Types: [specification_title] :: Manifest -> !(Maybe Text)
+ Nix.JenkinsPlugins2Nix.Types: [specification_title] :: Manifest -> !Maybe Text

Files

README.md view
@@ -36,7 +36,7 @@ specify:  ```-jenkins2nix -r latest -p A:0.7 -p B:0.1+jenkinsPlugins2nix -r latest -p A:0.7 -p B:0.1 ```  We will end up with `A:0.7` and `B:0.1`. This also applies when no
app/Main.hs view
@@ -8,17 +8,17 @@ -- @jenkinsPlugins2nix@ entry point. module Main (main) where -import qualified Data.Bimap as Bimap-import           Data.List (intersperse)-import           Data.Monoid ((<>), mconcat)-import qualified Data.Text as Text+import qualified Data.Bimap                                as Bimap+import           Data.List                                 (intersperse)+import           Data.Monoid                               (mconcat, (<>))+import qualified Data.Text                                 as Text+import           Data.Text.Prettyprint.Doc.Render.Terminal (putDoc) import           Nix.JenkinsPlugins2Nix import           Nix.JenkinsPlugins2Nix.Types-import qualified Options.Applicative as Opt+import qualified Options.Applicative                       as Opt import           System.Exit import           System.IO-import qualified Text.PrettyPrint.ANSI.Leijen as Pretty-import           Text.Printf (printf)+import           Text.Printf                               (printf)  main :: IO () main = do@@ -28,7 +28,7 @@       hPutStrLn stderr err       exitFailure     Right p -> do-      Pretty.putDoc p+      putDoc p       exitSuccess   where     opts = Opt.info (parseConfig Opt.<**> Opt.helper)
jenkinsPlugins2nix.cabal view
@@ -1,5 +1,5 @@ name:                jenkinsPlugins2nix-version:             0.2.0.2+version:             0.3.0.1 synopsis:            Generate nix for Jenkins plugins. description:         Generate nix for Jenkins plugins. homepage:            https://github.com/Fuuzetsu/jenkinsPlugins2nix#readme@@ -12,23 +12,24 @@ build-type:          Simple extra-source-files:  README.md cabal-version:       >=1.10+tested-with:         GHC ==8.6.5 || ==8.8.4 || ==8.10.4 || ==8.10.5  library   hs-source-dirs:      src   exposed-modules:     Nix.JenkinsPlugins2Nix                        Nix.JenkinsPlugins2Nix.Parser                        Nix.JenkinsPlugins2Nix.Types-  build-depends:       base >= 4.7 && < 5-                     , ansi-wl-pprint-                     , attoparsec-                     , bytestring-                     , containers-                     , cryptohash-                     , hnix-                     , http-conduit-                     , mtl-                     , text-                     , zip-archive+  build-depends:       base           >=4.7  && < 5+                     , attoparsec     >=0.13 && <0.14+                     , bytestring     >=0.10 && <0.11+                     , containers     >=0.6  && <0.7+                     , cryptohash     >=0.11 && <0.12+                     , hnix           >=0.6  && <0.14+                     , http-conduit   >=2.3  && <2.4+                     , mtl            >=2.2  && <2.3+                     , prettyprinter  >=1.2  && <1.8+                     , text           >=1.2  && <1.3+                     , zip-archive    >=0.4  && <0.5   default-language:    Haskell2010   ghc-options:        -Wall @@ -37,10 +38,10 @@   main-is:             Main.hs   ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall   build-depends:       base-                     , ansi-wl-pprint-                     , bimap+                     , bimap                       >=0.3  && <0.5                      , jenkinsPlugins2nix-                     , optparse-applicative+                     , optparse-applicative        >=0.14 && <0.17+                     , prettyprinter-ansi-terminal >=1.1  && <1.2                      , text   default-language:    Haskell2010 @@ -52,7 +53,7 @@   build-depends:       base                      , containers                      , jenkinsPlugins2nix-                     , tasty-hspec+                     , tasty-hspec         >=1.1 && <1.2                      , text   ghc-options:         -threaded -rtsopts -with-rtsopts=-N -Wall   default-language:    Haskell2010
src/Nix/JenkinsPlugins2Nix.hs view
@@ -7,27 +7,28 @@ -- Main library entry point. module Nix.JenkinsPlugins2Nix where -import qualified Codec.Archive.Zip as Zip-import           Control.Arrow ((&&&))-import           Control.Monad (foldM)-import qualified Control.Monad.Except as MTL-import qualified Crypto.Hash as Hash-import qualified Data.ByteString.Lazy as BSL-import           Data.Map.Strict (Map)-import qualified Data.Map.Strict as Map-import           Data.Monoid ((<>))-import           Data.Text (Text)-import qualified Data.Text as Text-import qualified Data.Text.Encoding as Text-import qualified Data.Text.IO as Text-import qualified Network.HTTP.Simple as HTTP-import qualified Nix.Expr as Nix+import qualified Codec.Archive.Zip             as Zip+import           Control.Arrow                 ((&&&))+import           Control.Monad                 (foldM)+import qualified Control.Monad.Except          as MTL+import qualified Crypto.Hash                   as Hash+import qualified Data.ByteString.Lazy          as BSL+import           Data.Map.Strict               (Map)+import qualified Data.Map.Strict               as Map+import           Data.Monoid                   ((<>))+import           Data.Text                     (Text)+import qualified Data.Text                     as Text+import qualified Data.Text.Encoding            as Text+import qualified Data.Text.IO                  as Text+import           Data.Text.Prettyprint.Doc     (Doc)+import qualified Network.HTTP.Simple           as HTTP+import qualified Nix.Expr                      as Nix+import           Nix.Expr.Shorthands           ((@@)) import qualified Nix.JenkinsPlugins2Nix.Parser as Parser import           Nix.JenkinsPlugins2Nix.Types-import qualified Nix.Pretty as Nix-import           System.IO (stderr)-import qualified Text.PrettyPrint.ANSI.Leijen as Pretty-import           Text.Printf (printf)+import qualified Nix.Pretty                    as Nix+import           System.IO                     (stderr)+import           Text.Printf                   (printf)  -- | Get the download URL of the plugin we're looking for. getPluginUrl :: RequestedPlugin -> Text@@ -88,7 +89,7 @@             AsGiven -> p             -- It's not a user-specified plugin and we want the latest             -- version per strategy so download the latest one.-            Latest -> p { requested_version = Nothing }+            Latest  -> p { requested_version = Nothing }           -- The user has asked for this plugin explicitly so use           -- their possibly-versioned request rather than picking           -- based on versions listed in manifest dependencies.@@ -104,7 +105,7 @@ -- | Pretty-print nix expression for all the given plugins and their -- dependencies that the user asked for. mkExprsFor :: Config-           -> IO (Either String Pretty.Doc)+           -> IO (Either String (Doc ann)) mkExprsFor (Config { resolution_strategy = st, requested_plugins = ps }) = do   eplugins <- MTL.runExceptT $ do     let userPlugins = Map.fromList $ map (requested_name &&& id) ps@@ -113,16 +114,17 @@   return $! case eplugins of     Left err -> Left err     Right plugins ->-      let args = Nix.mkParamset exprs+      let args = Nix.mkParamset exprs False           res = Nix.mkNonRecSet $ map formatPlugin plugins           mkJenkinsPlugin = Nix.bindTo "mkJenkinsPlugin" $             Nix.mkFunction (Nix.mkParamset                               [ ("name", Nothing)                               , ("src", Nothing)-                              ]) $-              Nix.mkApp (Nix.mkSym "stdenv.mkDerivation") $ Nix.mkNonRecSet+                              ]+                              False) $+              Nix.mkSym "stdenv.mkDerivation" @@ Nix.mkNonRecSet                 [ Nix.inherit [ Nix.StaticKey "name"-                              , Nix.StaticKey "src" ]+                              , Nix.StaticKey "src" ] Nix.nullPos                 , "phases" Nix.$= Nix.mkStr "installPhase"                 , "installPhase" Nix.$= Nix.mkStr "cp $src $out"                 ]@@ -132,16 +134,16 @@    where     fetchurl :: Plugin -> Nix.NExpr-    fetchurl p = Nix.mkApp (Nix.mkSym "fetchurl") $-      Nix.mkNonRecSet [ "url" Nix.$= Nix.mkUri (download_url p)+    fetchurl p = Nix.mkSym "fetchurl" @@+      Nix.mkNonRecSet [ "url" Nix.$= Nix.mkStr (download_url p)                       , "sha256" Nix.$= Nix.mkStr (Text.pack . show $ sha256 p)                       ]      mkBody :: Plugin -> Nix.NExpr-    mkBody p = Nix.mkApp (Nix.mkSym "mkJenkinsPlugin") $-      Nix.mkNonRecSet $ [ "name" Nix.$= Nix.mkStr (short_name $ manifest p)-                        , "src" Nix.$= fetchurl p-                        ]+    mkBody p = Nix.mkSym "mkJenkinsPlugin" @@+      Nix.mkNonRecSet [ "name" Nix.$= Nix.mkStr (short_name $ manifest p)+                      , "src" Nix.$= fetchurl p+                      ]      formatPlugin :: Plugin -> Nix.Binding Nix.NExpr     formatPlugin p = short_name (manifest p) Nix.$= mkBody p