packages feed

swiss-army-knife-1.1.0.2: lib/Knives/SysNet.hs

module Knives.SysNet where

import Utils
import CommandLine
import Control.Monad (when)

knifeSysNet :: SysNetOptions -> IO ()
knifeSysNet SysNetOptions { activateSN
                          , enableSN
                          , deactivateSN
                          , disableSN
                          , reactivateSN}
  | isExclusiveOr [ activateSN
                  , enableSN
                  , deactivateSN
                  , disableSN
                  , reactivateSN] = do
      when activateSN   activate
      when enableSN     enable
      when deactivateSN deactivate
      when disableSN    disable
      when reactivateSN reactivate
  | otherwise = putStrLn("You must specify one and only one option for SysNet.")
  where
    socket  = "systemd-networkd.socket"
    service = "systemd-networkd.service"
    
    activate   = do
      systemctl_ ["start",   socket]
      systemctl_ ["start",   service]

    enable     = do
      systemctl_ ["start",   socket]
      systemctl_ ["enable", "--now",  service]

    deactivate = do
      systemctl_ ["stop",   socket]
      systemctl_ ["stop",   service]
 
    disable    = do
      systemctl_ ["stop",   socket]
      systemctl_ ["disable", "--now", service]
 
    reactivate = do
      systemctl_ ["restart",   socket]
      systemctl_ ["restart",   service]