FIX don't use partial fields

This commit is contained in:
Nathan Dwarshuis 2022-07-31 20:30:27 -04:00
parent 5fb8b404dc
commit f84407b793
2 changed files with 44 additions and 22 deletions

View File

@ -332,13 +332,22 @@ instance FromJSON CIFSOptsConfig where
<*> o .:? "gid"
<*> o .:? "isocharset"
data DataConfig = VeracryptConfig
data DataConfig = VeracryptConfig VeracryptData
| SSHFSConfig SSHFSData
| CIFSConfig CIFSData
deriving Show
data VeracryptData = VeracryptData
{ veracryptVolume :: String
, veracryptPassword :: Maybe PasswordConfig
} | SSHFSConfig
} deriving Show
data SSHFSData = SSHFSData
{ sshfsRemote :: String
, sshfsPassword :: Maybe PasswordConfig
} | CIFSConfig
} deriving Show
data CIFSData = CIFSData
{ cifsRemote :: String
, cifsSudo :: Bool
, cifsPassword :: Maybe PasswordConfig
@ -361,17 +370,17 @@ instance FromJSON TreeConfig where
deps <- o .:& "depends"
mountconf <- o .: "mount"
devData <- case (devType :: String) of
"cifs" -> CIFSConfig
"cifs" -> CIFSConfig <$> (CIFSData
<$> o .: "remote"
<*> o .:? "sudo" .!= False
<*> o .:? "password"
<*> o .:? "options"
"sshfs" -> SSHFSConfig
<*> o .:? "options")
"sshfs" -> SSHFSConfig <$> (SSHFSData
<$> o .: "remote"
<*> o .:? "password"
"veracrypt" -> VeracryptConfig
<*> o .:? "password")
"veracrypt" -> VeracryptConfig <$> (VeracryptData
<$> o .: "volume"
<*> o .:? "password"
<*> o .:? "password")
-- TODO make this skip adding an entry to the map rather than
-- skipping the map entirely
_ -> fail $ "unknown device type: " ++ devType
@ -423,9 +432,9 @@ instance Mountable a => Mountable (Tree a) where
instance Actionable (Tree DeviceConfig) where
fmtEntry (Tree p@DeviceConfig{ deviceData = d } _) = [getLabel p, target d]
where
target CIFSConfig{ cifsRemote = r } = r
target SSHFSConfig{ sshfsRemote = r } = r
target VeracryptConfig{ veracryptVolume = v } = v
target (CIFSConfig (CIFSData { cifsRemote = r })) = r
target (SSHFSConfig (SSHFSData { sshfsRemote = r })) = r
target (VeracryptConfig (VeracryptData { veracryptVolume = v })) = v
groupHeader (Tree DeviceConfig{ deviceData = d } _) =
case d of
@ -458,21 +467,26 @@ instance Mountable DeviceConfig where
withTmpMountDir m'
$ io
$ case devData of
SSHFSConfig{ sshfsRemote = r, sshfsPassword = p } -> mountSSHFS m' p r
CIFSConfig
SSHFSConfig (SSHFSData { sshfsRemote = r, sshfsPassword = p }) ->
mountSSHFS m' p r
CIFSConfig (CIFSData
{ cifsRemote = r
, cifsSudo = s
, cifsPassword = p
, cifsOpts = o
} -> mountCIFS s r m' o p
VeracryptConfig{ veracryptPassword = p, veracryptVolume = v } ->
}) ->
mountCIFS s r m' o p
VeracryptConfig (VeracryptData
{ veracryptPassword = p
, veracryptVolume = v
}) ->
mountVeracrypt m' p v
mount DeviceConfig{ deviceMount = m, deviceData = d } True = do
m' <- getAbsMountpoint m
runAndRemoveDir m' $ io $ case d of
CIFSConfig{ cifsSudo = s } -> runMountSudoMaybe s "umount" [m']
VeracryptConfig{} -> runVeraCrypt ["-d", m'] ""
CIFSConfig (CIFSData { cifsSudo = s }) -> runMountSudoMaybe s "umount" [m']
VeracryptConfig _ -> runVeraCrypt ["-d", m'] ""
_ -> runMount "umount" [m'] ""
allInstalled DeviceConfig{ deviceData = devData } = io $ isJust

View File

@ -47,6 +47,7 @@ library:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
exposed-modules:
- Bitwarden.Internal
- Rofi.Command
@ -59,6 +60,7 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras
@ -69,6 +71,7 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras
@ -79,6 +82,7 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras
@ -89,6 +93,7 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras
@ -99,6 +104,7 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras
@ -109,6 +115,7 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras
@ -119,5 +126,6 @@ executables:
- -Wall
- -Werror
- -threaded
- -Wpartial-fields
dependencies:
- rofi-extras