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 +1/−106
- git-vogue.cabal +16/−11
- lib/Git/Vogue.hs +1/−1
- lib/Git/Vogue/PluginDiscoverer/Libexec.hs +10/−7
- src/git-vogue-cabal.hs +3/−5
- src/git-vogue-ghc-mod.hs +6/−4
- src/git-vogue-hlint.hs +2/−2
- src/git-vogue-packunused.hs +1/−1
- src/git-vogue-stylish.hs +1/−1
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.