packages feed

swiss-army-knife-1.1.0.2: app/SwissArmyKnife.hs

-- main for Swiss Army Knife, cli.

module Main where

import Options.Applicative
import Data.Semigroup ((<>))
import CommandLine
import Knives

main :: IO ()
main = do
  (globalOpts, cmd) <- execParser $ info (opts <**> helper)
    ( fullDesc
      <> progDesc "Many useful utilities, such as getting your external IP address, installed kernel, controlling your WireGuard, etc."
      <> header "Swiss Army Knife -- Many useful functions for the hacker in all of us." )
  
  case cmd of
    ExtIP extipOpts     -> knifeExtIP     extipOpts
    Kernel kernelOpts   -> knifeKernel    kernelOpts
    Sleep sleepOpts     -> knifeSleep     sleepOpts 
    Version versionOpts -> knifeVersion   versionOpts 
    ZfsCheck zfsOpts    -> knifeZfsCheck  zfsOpts
    WireGuard wgOpts    -> knifeWireGuard wgOpts
    NetMan nmOpts       -> knifeNetMan    nmOpts
    SysNet snOpts       -> knifeSysNet    snOpts