All properties changed to use them, except for prop_encode_c_decode_c_roundtrip, which already filtered to ascii for other reasons. A few modules had to be split out, because Setup does not build-depend on QuickCheck.
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.2 KiB
			
		
	
	
	
		
			Haskell
		
	
	
	
	
	
{- Rsync urls.
 | 
						|
 -
 | 
						|
 - Copyright 2014-2018 Joey Hess <id@joeyh.name>
 | 
						|
 -
 | 
						|
 - Licensed under the GNU AGPL version 3 or higher.
 | 
						|
 -}
 | 
						|
 | 
						|
{-# LANGUAGE CPP #-}
 | 
						|
 | 
						|
module Remote.Rsync.RsyncUrl where
 | 
						|
 | 
						|
import Types
 | 
						|
import Annex.Locations
 | 
						|
import Utility.Rsync
 | 
						|
import Utility.SafeCommand
 | 
						|
import Utility.ShellEscape
 | 
						|
import Utility.FileSystemEncoding
 | 
						|
import Annex.DirHashes
 | 
						|
#ifdef mingw32_HOST_OS
 | 
						|
import Utility.Split
 | 
						|
#endif
 | 
						|
 | 
						|
import Data.Default
 | 
						|
import System.FilePath.Posix
 | 
						|
 | 
						|
type RsyncUrl = String
 | 
						|
 | 
						|
data RsyncOpts = RsyncOpts
 | 
						|
	{ rsyncUrl :: RsyncUrl
 | 
						|
	, rsyncOptions :: Annex [CommandParam]
 | 
						|
	, rsyncUploadOptions :: Annex [CommandParam]
 | 
						|
	, rsyncDownloadOptions :: Annex [CommandParam]
 | 
						|
	, rsyncShellEscape :: Bool
 | 
						|
}
 | 
						|
 | 
						|
rsyncEscape :: RsyncOpts -> RsyncUrl -> RsyncUrl
 | 
						|
rsyncEscape o u
 | 
						|
	| rsyncShellEscape o && rsyncUrlIsShell (rsyncUrl o) = shellEscape u
 | 
						|
	| otherwise = u
 | 
						|
 | 
						|
mkRsyncUrl :: RsyncOpts -> FilePath -> RsyncUrl
 | 
						|
mkRsyncUrl o f = rsyncUrl o </> rsyncEscape o f
 | 
						|
 | 
						|
rsyncUrls :: RsyncOpts -> Key -> [RsyncUrl]
 | 
						|
rsyncUrls o k = map use dirHashes
 | 
						|
  where
 | 
						|
	use h = rsyncUrl o </> hash h </> rsyncEscape o (f </> f)
 | 
						|
	f = fromRawFilePath (keyFile k)
 | 
						|
#ifndef mingw32_HOST_OS
 | 
						|
	hash h = fromRawFilePath $ h def k
 | 
						|
#else
 | 
						|
	hash h = replace "\\" "/" $ fromRawFilePath $ h def k
 | 
						|
#endif
 |