42 lines
1.1 KiB
Haskell
42 lines
1.1 KiB
Haskell
{- git-annex command
|
|
-
|
|
- Copyright 2012 Joey Hess <joey@kitenet.net>
|
|
-
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
-}
|
|
|
|
module Command.Import where
|
|
|
|
import System.PosixCompat.Files
|
|
|
|
import Common.Annex
|
|
import Command
|
|
import qualified Annex
|
|
import qualified Command.Add
|
|
|
|
def :: [Command]
|
|
def = [notBareRepo $ command "import" paramPaths seek
|
|
SectionCommon "move and add files from outside git working copy"]
|
|
|
|
seek :: [CommandSeek]
|
|
seek = [withPathContents start]
|
|
|
|
start :: (FilePath, FilePath) -> CommandStart
|
|
start (srcfile, destfile) =
|
|
ifM (liftIO $ isRegularFile <$> getSymbolicLinkStatus srcfile)
|
|
( do
|
|
showStart "import" destfile
|
|
next $ perform srcfile destfile
|
|
, stop
|
|
)
|
|
|
|
perform :: FilePath -> FilePath -> CommandPerform
|
|
perform srcfile destfile = do
|
|
whenM (liftIO $ doesFileExist destfile) $
|
|
unlessM (Annex.getState Annex.force) $
|
|
error $ "not overwriting existing " ++ destfile ++
|
|
" (use --force to override)"
|
|
|
|
liftIO $ createDirectoryIfMissing True (parentDir destfile)
|
|
liftIO $ moveFile srcfile destfile
|
|
Command.Add.perform destfile
|