packages feed

LazyVault-0.0: src/LazyVault.hs

module Main where

import System.Environment ( getArgs )
import Sandboxes

main :: IO ()
main = do
  createEnv
  (action, extra) <- getArguments
  case action of
    "create"   -> runCommand createSandbox extra
    "c"        -> runCommand createSandbox extra
    "--create" -> runCommand createSandbox extra
    "-c"       -> runCommand createSandbox extra

    "set"      -> runCommand setSandbox extra
    "s"        -> runCommand setSandbox extra
    "--set"    -> runCommand setSandbox extra
    "-s"       -> runCommand setSandbox extra

    "list"     -> listSandboxes
    "l"        -> listSandboxes
    "--list"   -> listSandboxes
    "-l"       -> listSandboxes

    "backup"   -> runCommand backupSystemDirs extra    
    "b"        -> runCommand backupSystemDirs extra
    "--backup" -> runCommand backupSystemDirs extra    
    "-b"       -> runCommand backupSystemDirs extra

    "help"     -> help
    "h"        -> help
    "--help"   -> help
    "-h"       -> help
    _          -> help
    

runCommand :: (String -> t) -> String -> t
runCommand command extra =
  if extra == ""
    then error "This action required 1 argument"
    else command extra
     
     
getArguments :: IO (String, String)
getArguments = do
  a <- getArgs
  case length a of
    0 -> return ("not Enough", "")
    1 -> return (a !! 0, "")
    _ -> return (a !! 0, a !! 1)

help :: IO ()
help = do
  putStrLn "Available Commands:"
  putStrLn "  create | c [Name]    Create a new Sandbox"
  putStrLn "  set    | s [Name]    Set a Sandbox"
  putStrLn "  list   | l           List all Sandboxes"
  putStrLn "  backup | b [Name]    Backup your system GHC / Cabal dirs"