Refactor chmod +x
This commit is contained in:
parent
d9c864d3c5
commit
873c951d6e
17
lib/GHCup.hs
17
lib/GHCup.hs
@ -280,15 +280,7 @@ installCabalBindist dlinfo ver (PlatformRequest {..}) = do
|
|||||||
(path </> cabalFile)
|
(path </> cabalFile)
|
||||||
(destPath)
|
(destPath)
|
||||||
Overwrite
|
Overwrite
|
||||||
liftIO $ setFileMode
|
lift $ chmod_777 destPath
|
||||||
(toFilePath destPath)
|
|
||||||
( newFilePerms
|
|
||||||
`unionFileModes` ownerExecuteMode
|
|
||||||
`unionFileModes` groupExecuteMode
|
|
||||||
`unionFileModes` otherExecuteMode
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- | Installs cabal into @~\/.ghcup\/bin/cabal-\<ver\>@ and
|
-- | Installs cabal into @~\/.ghcup\/bin/cabal-\<ver\>@ and
|
||||||
@ -1085,17 +1077,12 @@ upgradeGHCup dls mtarget force pfreq = do
|
|||||||
tmp <- lift withGHCupTmpDir
|
tmp <- lift withGHCupTmpDir
|
||||||
let fn = [rel|ghcup|]
|
let fn = [rel|ghcup|]
|
||||||
p <- liftE $ download dli tmp (Just fn)
|
p <- liftE $ download dli tmp (Just fn)
|
||||||
let fileMode' =
|
|
||||||
newFilePerms
|
|
||||||
`unionFileModes` ownerExecuteMode
|
|
||||||
`unionFileModes` groupExecuteMode
|
|
||||||
`unionFileModes` otherExecuteMode
|
|
||||||
let fullDest = fromMaybe (binDir </> fn) mtarget
|
let fullDest = fromMaybe (binDir </> fn) mtarget
|
||||||
liftIO $ hideError NoSuchThing $ deleteFile fullDest
|
liftIO $ hideError NoSuchThing $ deleteFile fullDest
|
||||||
handleIO (throwE . CopyError . show) $ liftIO $ copyFile p
|
handleIO (throwE . CopyError . show) $ liftIO $ copyFile p
|
||||||
fullDest
|
fullDest
|
||||||
Overwrite
|
Overwrite
|
||||||
liftIO $ setFileMode (toFilePath fullDest) fileMode'
|
lift $ chmod_777 fullDest
|
||||||
pure latestVer
|
pure latestVer
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
{-# LANGUAGE FlexibleContexts #-}
|
{-# LANGUAGE FlexibleContexts #-}
|
||||||
{-# LANGUAGE TemplateHaskell #-}
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE ViewPatterns #-}
|
||||||
|
|
||||||
{-|
|
{-|
|
||||||
Module : GHCup.Utils.File
|
Module : GHCup.Utils.File
|
||||||
@ -25,6 +26,7 @@ import Control.Concurrent.Async
|
|||||||
import Control.Exception ( evaluate )
|
import Control.Exception ( evaluate )
|
||||||
import Control.Exception.Safe
|
import Control.Exception.Safe
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
|
import Control.Monad.Logger
|
||||||
import Control.Monad.Reader
|
import Control.Monad.Reader
|
||||||
import Control.Monad.Trans.State.Strict
|
import Control.Monad.Trans.State.Strict
|
||||||
import Data.ByteString ( ByteString )
|
import Data.ByteString ( ByteString )
|
||||||
@ -33,6 +35,7 @@ import Data.Functor
|
|||||||
import Data.IORef
|
import Data.IORef
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Data.Sequence ( Seq, (|>) )
|
import Data.Sequence ( Seq, (|>) )
|
||||||
|
import Data.String.Interpolate
|
||||||
import Data.Text ( Text )
|
import Data.Text ( Text )
|
||||||
import Data.Void
|
import Data.Void
|
||||||
import Data.Word8
|
import Data.Word8
|
||||||
@ -46,6 +49,7 @@ import System.IO.Error
|
|||||||
import System.Posix.Directory.ByteString
|
import System.Posix.Directory.ByteString
|
||||||
import System.Posix.FD as FD
|
import System.Posix.FD as FD
|
||||||
import System.Posix.FilePath hiding ( (</>) )
|
import System.Posix.FilePath hiding ( (</>) )
|
||||||
|
import System.Posix.Files.ByteString
|
||||||
import System.Posix.Foreign ( oExcl )
|
import System.Posix.Foreign ( oExcl )
|
||||||
import "unix" System.Posix.IO.ByteString
|
import "unix" System.Posix.IO.ByteString
|
||||||
hiding ( openFd )
|
hiding ( openFd )
|
||||||
@ -375,7 +379,7 @@ toProcessError :: ByteString
|
|||||||
-> Maybe ProcessStatus
|
-> Maybe ProcessStatus
|
||||||
-> Either ProcessError ()
|
-> Either ProcessError ()
|
||||||
toProcessError exe args mps = case mps of
|
toProcessError exe args mps = case mps of
|
||||||
Just (SPPB.Exited (ExitFailure i)) -> Left $ NonZeroExit i exe args
|
Just (SPPB.Exited (ExitFailure xi)) -> Left $ NonZeroExit xi exe args
|
||||||
Just (SPPB.Exited ExitSuccess ) -> Right ()
|
Just (SPPB.Exited ExitSuccess ) -> Right ()
|
||||||
Just (Terminated _ _ ) -> Left $ PTerminated exe args
|
Just (Terminated _ _ ) -> Left $ PTerminated exe args
|
||||||
Just (Stopped _ ) -> Left $ PStopped exe args
|
Just (Stopped _ ) -> Left $ PStopped exe args
|
||||||
@ -434,3 +438,15 @@ isBrokenSymlink p =
|
|||||||
$ do
|
$ do
|
||||||
_ <- canonicalizePath p
|
_ <- canonicalizePath p
|
||||||
pure False
|
pure False
|
||||||
|
|
||||||
|
|
||||||
|
chmod_777 :: (MonadLogger m, MonadIO m) => Path a -> m ()
|
||||||
|
chmod_777 (toFilePath -> fp) = do
|
||||||
|
let exe_mode =
|
||||||
|
newFilePerms
|
||||||
|
`unionFileModes` ownerExecuteMode
|
||||||
|
`unionFileModes` groupExecuteMode
|
||||||
|
`unionFileModes` otherExecuteMode
|
||||||
|
$(logDebug) [i|chmod 777 #{fp}|]
|
||||||
|
liftIO $ setFileMode fp exe_mode
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user