import Logs.Group
import Logs.PreferredContent
import Logs.Schedule
+import Logs.Config
import Logs.NumCopies
import Types.StandardGroups
import Types.ScheduledActivity
, cfgRequiredContentMap :: M.Map UUID PreferredContentExpression
, cfgGroupPreferredContentMap :: M.Map Group PreferredContentExpression
, cfgScheduleMap :: M.Map UUID [ScheduledActivity]
+ , cfgGlobalConfigs :: M.Map ConfigName ConfigValue
, cfgNumCopies :: Maybe NumCopies
}
<*> requiredContentMapRaw
<*> groupPreferredContentMapRaw
<*> scheduleMap
+ <*> loadGlobalConfig
<*> getGlobalNumCopies
setCfg :: Cfg -> Cfg -> Annex ()
mapM_ (uncurry requiredContentSet) $ M.toList $ cfgRequiredContentMap diff
mapM_ (uncurry groupPreferredContentSet) $ M.toList $ cfgGroupPreferredContentMap diff
mapM_ (uncurry scheduleSet) $ M.toList $ cfgScheduleMap diff
+ mapM_ (uncurry setGlobalConfig) $ M.toList $ cfgGlobalConfigs diff
maybe noop setGlobalNumCopies $ cfgNumCopies diff
{- Default config has all the keys from the input config, but with their
, cfgRequiredContentMap = mapdef $ cfgRequiredContentMap curcfg
, cfgGroupPreferredContentMap = mapdef $ cfgGroupPreferredContentMap curcfg
, cfgScheduleMap = mapdef $ cfgScheduleMap curcfg
+ , cfgGlobalConfigs = mapdef $ cfgGlobalConfigs curcfg
, cfgNumCopies = Nothing
}
where
, cfgRequiredContentMap = diff cfgRequiredContentMap
, cfgGroupPreferredContentMap = diff cfgGroupPreferredContentMap
, cfgScheduleMap = diff cfgScheduleMap
+ , cfgGlobalConfigs = diff cfgGlobalConfigs
, cfgNumCopies = cfgNumCopies newcfg
}
where
, standardgroups
, requiredcontent
, schedule
- , others
+ , numcopies
+ , globalconfigs
]
where
intro =
(\(l, u) -> line "schedule" u $ fromScheduledActivities l)
(\u -> line "schedule" u "")
+ globalconfigs = settings' cfg S.empty cfgGlobalConfigs
+ [ com "Other global configuration"
+ ]
+ (\(s, g) -> gline g s)
+ (\g -> gline g "")
+ where
+ gline g val = [ unwords ["config", g, "=", val] ]
+
line setting u val =
[ com $ "(for " ++ fromMaybe "" (M.lookup u descs) ++ ")"
, unwords [setting, fromUUID u, "=", val]
line' setting Nothing = com $ unwords [setting, "default", "="]
line' setting (Just val) = unwords [setting, "default", "=", val]
- others =
- [ com "Other configuration"
+ numcopies =
+ [ com "Numcopies configuration"
, line' "numcopies" (show . fromNumCopies <$> cfgNumCopies cfg)
]
Right l ->
let m = M.insert u l (cfgScheduleMap cfg)
in Right $ cfg { cfgScheduleMap = m }
+ | setting == "config" =
+ let m = M.insert f val (cfgGlobalConfigs cfg)
+ in Right $ cfg { cfgGlobalConfigs = m }
| setting == "numcopies" = case readish val of
Nothing -> Left "parse error (expected an integer)"
Just n -> Right $ cfg { cfgNumCopies = Just (NumCopies n) }