-- 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