packages feed

git-vogue 0.2.2.2 → 0.3.0.0

raw patch · 9 files changed

+41/−138 lines, 9 filesdep −extradep ~optparse-applicativesetup-changedPVP ok

version bump matches the API change (PVP)

Dependencies removed: extra

Dependency ranges changed: optparse-applicative

API changes (from Hackage documentation)

Files

Setup.hs view
@@ -1,107 +1,2 @@-module Main where--import           Control.Monad-import           Data.List-import           Distribution.PackageDescription    (PackageDescription (..)) import           Distribution.Simple-import           Distribution.Simple.Install-import           Distribution.Simple.LocalBuildInfo-import           Distribution.Simple.Program-import           Distribution.Simple.Setup-import           Distribution.Simple.Utils-import           System.FilePath---- | Run cabal with custom copyHook which puts our extra executables in the--- libexec directory.-main :: IO ()-main = defaultMainWithHooks $ simpleUserHooks-    { copyHook = copyThings,-      hookedPrograms = [simpleProgram "git"]-    }---- | Copy "extra" executables to $PREFIX/libexec/git-vogue/ instead of--- $PREFIX/bin.-copyThings-    :: PackageDescription-    -> LocalBuildInfo-    -> UserHooks-    -> CopyFlags-    -> IO ()-copyThings pkg lbi _ flags = do-    -- First install only the "main" components with the default settings.-    let (main_pkg, main_lbi) = tweakMainInstall pkg lbi-    install main_pkg main_lbi flags--    -- Then install the "secondary" executables and plugin scripts with the-    -- special settings.-    let (sub_pkg, sub_lbi) = tweakSubcommandInstall pkg lbi-    install sub_pkg sub_lbi flags--    -- Install shell scripts from plugins/.-    ---    -- This was stolen from "Distribution.Simple.Install" and hacked. Why is-    -- cabal so terrible compared to make and friends?-    let scripts = fmap stripPluginPrefix . filter isPlugin $ dataFiles pkg-        verbosity = fromFlag (copyVerbosity flags)-        src_data_dir = dataDir sub_pkg-        dest_data_dir = datadir . absoluteInstallDirs sub_pkg sub_lbi $-                        fromFlag (copyDest flags)-    forM_ scripts $ \ file -> do-        let dir = takeDirectory file-        files <- matchDirFileGlob src_data_dir file-        createDirectoryIfMissingVerbose verbosity True (dest_data_dir </> dir)-        forM_ files $ \file' ->-            installExecutableFile verbosity (src_data_dir </> file')-                                            (dest_data_dir </> file')---- | Directory our plugin scripts are kept in.-pluginPrefix :: FilePath-pluginPrefix = "plugins/"---- | Strip the 'pluginPrefix' off the front of a 'FilePath'.-stripPluginPrefix :: FilePath -> FilePath-stripPluginPrefix = dropWhile (== '/') . dropWhile (/= '/')---- | A data file is in the plugins directory.-isPlugin :: FilePath -> Bool-isPlugin = (pluginPrefix `isPrefixOf`)---- | Tweak parameters for install of main components (i.e. library and first--- executable) only.-tweakMainInstall-    :: PackageDescription-    -> LocalBuildInfo-    -> (PackageDescription, LocalBuildInfo)-tweakMainInstall pkg lbi =-    let pkg' = pkg { executables = take 1 $ executables pkg-                   , dataFiles = filter (not . isPlugin) $ dataFiles pkg-                   }-    in (pkg', lbi)---- | Tweak parameters for install of secondary components (i.e. executables--- other than the first.-tweakSubcommandInstall-    :: PackageDescription-    -> LocalBuildInfo-    -> (PackageDescription, LocalBuildInfo)-tweakSubcommandInstall pkg lbi =-    let dest = suffixIt . libexecdir $ installDirTemplates lbi-        pkg' = pkg { executables = tail $ executables pkg-                   , dataFiles = []-                   , dataDir = dataDir pkg </> pluginPrefix-                   , library = Nothing-                   , testSuites = []-                   , benchmarks = []-                   , extraSrcFiles = []-                   , extraTmpFiles = []-                   , extraDocFiles = []-                   }-        lbi' = lbi { installDirTemplates = (installDirTemplates lbi)-                        { bindir = dest-                        , datadir = dest-                        , datasubdir = toPathTemplate ""-                        }-                   }-    in (pkg', lbi')-  where-    suffixIt = toPathTemplate . (</> "git-vogue") . fromPathTemplate+main = defaultMain
git-vogue.cabal view
@@ -1,5 +1,5 @@ name:                git-vogue-version:             0.2.2.2+version:             0.3.0.0 synopsis:            A framework for pre-commit checks. description:         Make your Haskell git repositories fashionable. homepage:            https://github.com/christian-marie/git-vogue@@ -9,16 +9,11 @@ maintainer:          Christian Marie <christian@ponies.io>, Oswyn Brent <oztastic703@gmail.com> copyright:           (c) 2017 Christian Marie, Anchor Systems, Pty Ltd and Others category:            Development-build-type:          Custom+build-type:          Simple extra-source-files:  README.md, changelog.txt-cabal-version:       >=1.23+cabal-version:       >= 2.0 data-files:          templates/pre-commit -custom-setup-  setup-depends: base-               , filepath-               , Cabal- source-repository HEAD   type: git   location: https://github.com/christian-marie/git-vogue@@ -36,14 +31,15 @@                        Git.Vogue.VCS.Null                        Git.Vogue.PluginDiscoverer.Libexec                        Git.Vogue.PluginCommon+  autogen-modules:     Paths_git_vogue   other-modules:       Paths_git_vogue   build-depends:       base >=4.8 && <5                      , containers                      , directory-                     , extra >= 1.4 && < 1.6+                     , temporary                      , filepath                      , formatting-                     , optparse-applicative >= 0.11 && < 0.14+                     , optparse-applicative >= 0.11                      , process                      , split                      , text@@ -53,6 +49,8 @@ executable git-vogue   default-language:    Haskell2010   hs-source-dirs:      src+  autogen-modules:     Paths_git_vogue+  other-modules:       Paths_git_vogue   main-is:             git-vogue.hs   build-depends:       base                      , git-vogue@@ -61,6 +59,7 @@  executable git-vogue-cabal   default-language:    Haskell2010+  scope:               private   hs-source-dirs:      src   main-is:             git-vogue-cabal.hs   build-depends:       base@@ -69,6 +68,7 @@  executable git-vogue-hlint   default-language:    Haskell2010+  scope:               private   hs-source-dirs:      src   main-is:             git-vogue-hlint.hs   build-depends:       base@@ -84,6 +84,7 @@  executable git-vogue-packunused   default-language:    Haskell2010+  scope:               private   hs-source-dirs:      src   main-is:             git-vogue-packunused.hs   build-depends:       base@@ -92,6 +93,7 @@  executable git-vogue-stylish   default-language:    Haskell2010+  scope:               private   hs-source-dirs:      src   main-is:             git-vogue-stylish.hs   build-depends:       base@@ -100,9 +102,11 @@                      , strict                      , stylish-haskell >= 0.7 +-- ghc_mod is off by default, and only sticking around in case it starts working+-- again one day with ghc 8.x Flag ghc-mod   Description: build ghc-mod plugin-  Default: True+  Default: False  executable git-vogue-ghc-mod   if flag(ghc-mod)@@ -112,6 +116,7 @@   else     buildable: False   default-language:    Haskell2010+  scope:               private   hs-source-dirs:      src   main-is:             git-vogue-ghc-mod.hs 
lib/Git/Vogue.hs view
@@ -24,7 +24,7 @@ import           Data.Maybe import           Data.Text.Lazy         (Text) import qualified Data.Text.Lazy.IO      as T-import           Data.Traversable       hiding (sequence)+import           Data.Traversable import           Formatting import           Prelude                hiding (elem, maximum, notElem) import           System.Directory
lib/Git/Vogue/PluginDiscoverer/Libexec.hs view
@@ -26,11 +26,12 @@ import           Data.Text.Lazy         (Text) import qualified Data.Text.Lazy         as T import           Data.Traversable-import           Extra                  (withTempFile) import           System.Directory import           System.Environment import           System.Exit import           System.FilePath+import           System.IO+import           System.IO.Temp         (withSystemTempFile) import           System.Process  import           Git.Vogue.Types@@ -57,7 +58,7 @@     => FilePath     -> m [Plugin m] discover libexec_dir = do-    let libexec_plugins = libexec_dir </> "git-vogue"+    let libexec_plugins = libexec_dir      -- Check if libexec dir does not exist, and notify user that this may be     -- caused by cabal being dumb.@@ -134,11 +135,13 @@     -> [FilePath]     -> m Result runPlugin plugin cmd check_fs all_fs = liftIO $ do-    (status, out, err) <- withTempFile (\checkFileListPath ->-        withTempFile (\allFileListPath -> do-          writeFile checkFileListPath (show check_fs)-          writeFile allFileListPath (show all_fs)-          readProcessWithExitCode plugin [cmd, checkFileListPath, allFileListPath] ""+    (status, out, err) <- withSystemTempFile "gv1" (\checkFileList checkFileListHandle ->+        withSystemTempFile "gv2" (\allFileList allFileListHandle -> do+          hPutStr checkFileListHandle (show check_fs)+          hPutStr allFileListHandle (show all_fs)+          hFlush checkFileListHandle+          hFlush allFileListHandle+          readProcessWithExitCode plugin [cmd, checkFileList, allFileList] ""         )       )     let glommed = fromString $ out <> err
src/git-vogue-cabal.hs view
@@ -16,7 +16,7 @@ import           Data.Monoid import           Distribution.PackageDescription.Check import           Distribution.PackageDescription.Configuration (flattenPackageDescription)-import           Distribution.PackageDescription.Parse         (readPackageDescription)+import           Distribution.PackageDescription.Parse         (readGenericPackageDescription) import           Distribution.Simple.Utils                     (defaultPackageDesc,                                                                 toUTF8,                                                                 wrapText)@@ -50,7 +50,7 @@ check :: IO Bool check = do     pdfile <- defaultPackageDesc silent-    ppd <- readPackageDescription silent pdfile+    ppd <- readGenericPackageDescription silent pdfile     let pkg_desc = flattenPackageDescription ppd     ioChecks <- checkPackageFiles pkg_desc "."     let packageChecks = filter goodCheck $ ioChecks <> checkPackage ppd (Just pkg_desc)@@ -81,9 +81,7 @@     return (null packageChecks)   where     goodCheck (PackageDistSuspicious msg) =-        not (or [ "ghc-options: -O2" `isInfixOf` msg-                , "'license' is AllRightsReserved" `isInfixOf` msg-                ])+        not ("ghc-options: -O2" `isInfixOf` msg || "'license' is AllRightsReserved" `isInfixOf` msg)     goodCheck _ = True      printCheckMessages = mapM_ (outputBad . format . explanation)
src/git-vogue-ghc-mod.hs view
@@ -7,6 +7,8 @@ -- the 3-clause BSD licence. -- +{-# LANGUAGE LambdaCase #-}+ -- | Description: Check with "cabal check". module Main where @@ -14,14 +16,14 @@ import           Control.Monad import           Data.Char import           Data.Foldable-import           Data.List              hiding (and, notElem)+import           Data.List              hiding (and) import           Data.Maybe import           Data.Monoid import           Data.Traversable import           GhcMod import           GhcMod.Monad import           Git.Vogue.PluginCommon-import           Prelude                hiding (and, notElem)+import           Prelude                hiding (and) import           System.Exit  main :: IO ()@@ -87,8 +89,8 @@                 return rs      -- Traverse the errors, picking errors and warnings out-    maybe_ws <- for warn_errs $ \warn_err ->-        case warn_err of+    maybe_ws <- for warn_errs $+        \case             -- Errors in files             Left e ->                 return . Just $ explain e
src/git-vogue-hlint.hs view
@@ -17,14 +17,14 @@ import           Control.Monad import           Data.Bifunctor import           Data.Foldable-import           Data.List                           hiding (and, concat)+import           Data.List                           hiding (concat) import           Data.Monoid import           Data.Traversable import           Git.Vogue.PluginCommon import           Language.Haskell.Exts.SrcLoc import           Language.Haskell.HLint3 import           Language.Preprocessor.Cpphs-import           Prelude                             hiding (and, concat)+import           Prelude                             hiding (concat) import           System.Directory import           System.Exit 
src/git-vogue-packunused.hs view
@@ -17,7 +17,7 @@ import           Data.Foldable import           Data.Monoid import           Git.Vogue.PluginCommon-import           Prelude                hiding (and, mapM_)+import           Prelude                hiding (and) import           System.Exit import           System.IO.Error import           System.Process
src/git-vogue-stylish.hs view
@@ -66,7 +66,7 @@     let v = makeVerbose False     in do        config <- configFilePath v Nothing-       loadConfig v (Just config)+       loadConfig v config  -- | Checks whether running Stylish over a given file produces any differences. -- Returns TRUE if there's nothing left to change.