aboutsummaryrefslogtreecommitdiff
path: root/exe
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-10-05 21:36:06 +0530
committerAkshay Nair <phenax5@gmail.com>2025-10-08 13:07:00 +0530
commitabcbb255e8dd5f624ba5173783cf665522b527df (patch)
tree9069ae4ef9264261522530f33222fcb331c7a9f4 /exe
parent538777b1dffdbfc0efece3ad9341504d8fbac455 (diff)
downloaddaffm-abcbb255e8dd5f624ba5173783cf665522b527df.tar.gz
daffm-abcbb255e8dd5f624ba5173783cf665522b527df.zip
Allow directories and file paths as cli arg/cd
Diffstat (limited to 'exe')
-rw-r--r--exe/Main.hs19
1 files changed, 9 insertions, 10 deletions
diff --git a/exe/Main.hs b/exe/Main.hs
index 2bfe08b..e150569 100644
--- a/exe/Main.hs
+++ b/exe/Main.hs
@@ -11,7 +11,7 @@ import System.Directory (getCurrentDirectory)
import System.Environment (getArgs)
data Args = Args
- { argsCwd :: Maybe Text.Text,
+ { argsDirOrFile :: Maybe Text.Text,
argsConfigFile :: Maybe FilePath,
argsHelp :: Bool
}
@@ -23,12 +23,11 @@ main = do
evaluate args
evaluate :: Args -> IO ()
-evaluate (Args {argsHelp = True}) =
- putStrLn helpMenuContents
-evaluate (Args {argsCwd, argsConfigFile}) = do
+evaluate (Args {argsHelp = True}) = putStrLn helpMenuContents
+evaluate (Args {argsDirOrFile, argsConfigFile}) = do
cwd <- getCurrentDirectory
config <- loadConfigFile argsConfigFile
- let dir = fromMaybe (Text.pack cwd) argsCwd
+ let dir = fromMaybe (Text.pack cwd) argsDirOrFile
initialState <- Daffm.loadDirToState dir $ Daffm.mkEmptyAppState config
void $ M.defaultMain Daffm.app initialState
@@ -37,17 +36,17 @@ parseArgs rawArgs = case parsedArgs of
Left e -> throwIO $ userError e
Right v -> pure v
where
- parsedArgs = parse rawArgs (Args {argsCwd = Nothing, argsConfigFile = Nothing, argsHelp = False})
+ parsedArgs = parse rawArgs (Args {argsDirOrFile = Nothing, argsConfigFile = Nothing, argsHelp = False})
parse :: [String] -> Args -> Either String Args
parse [] args = Right args
parse ("-h" : _) args = Right $ args {argsHelp = True}
parse ("--help" : _) args = Right $ args {argsHelp = True}
- parse ("-c" : config : rest) args = parse rest $ args {argsConfigFile = Just config}
parse ["-c"] _ = Left "Missing value for -c arg"
- parse ("--config" : config : rest) args = parse rest $ args {argsConfigFile = Just config}
+ parse ("-c" : config : rest) args = parse rest $ args {argsConfigFile = Just config}
parse ["--config"] _ = Left "Missing value for --config arg"
+ parse ("--config" : config : rest) args = parse rest $ args {argsConfigFile = Just config}
parse (flag@('-' : _) : _) _ = Left $ "Invalid flag " <> flag
- parse (dir : rest) args = parse rest $ args {argsCwd = Just $ Text.pack dir}
+ parse (dir : rest) args = parse rest $ args {argsDirOrFile = Just $ Text.pack dir}
helpMenuContents :: String
helpMenuContents =
@@ -58,7 +57,7 @@ helpMenuContents =
"",
"Arguments:",
" [dir]",
- " Directory to load. Defaults to current working directory",
+ " Directory or file path to load. Defaults to current working directory",
"",
"Options:",
" -c, --config <CONFIG-PATH>",