diff --git a/app/Main.hs b/app/Main.hs index 9f2b6b0..0e3ff50 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -22,7 +22,7 @@ data Command = Command | Import ImportOpts data Opts = Opts - { _optCommand :: Command + { _optCommand :: Maybe Command , _optVersion :: Bool } @@ -51,15 +51,19 @@ main = do options <- execParser optsWithHelp case (options ^. optVersion, options ^. optCommand) of - (True, _) -> putStrLn (showVersion version) - (_, Run rOpts) -> run rOpts - (_, Import iOpts) -> doImport iOpts + (True, _) -> putStrLn (showVersion version) + (_, Just (Run rOpts)) -> run rOpts + (_, Just (Import iOpts)) -> doImport iOpts + (_, Nothing) -> + do g <- createSystemRandom + let gs = GlobalState {_mwc=g, _states=Map.empty, _stack=Stack.empty, _parameters= defaultParameters } + start Nothing gs opts :: Parser Opts opts = Opts - <$> hsubparser + <$> optional (hsubparser ( command "run" (info (Run <$> runOpts) ( progDesc "Run hascard directly on a file")) - <> command "import" (info (Import <$> importOpts) (progDesc "Convert a delimited file to syntax compatible with hascard"))) + <> command "import" (info (Import <$> importOpts) (progDesc "Convert a delimited file to syntax compatible with hascard")))) <*> switch (long "version" <> short 'v' <> help "Show version number") runOpts :: Parser RunOpts diff --git a/src/Runners.hs b/src/Runners.hs index d7b1bbc..292a084 100644 --- a/src/Runners.hs +++ b/src/Runners.hs @@ -86,5 +86,5 @@ entryFilter acceptHidden info = (fileExtensionMatch "txt" info || fileExtensionM '.' : _ -> False _ -> True) -parameterState :: FilePath -> [Card] -> State -parameterState fp cards = ParameterState (PS cards fp (mkParameterForm (length cards) defaultParameters)) \ No newline at end of file +parameterState :: Parameters -> FilePath -> [Card] -> State +parameterState ps fp cards = ParameterState (PS cards fp (mkParameterForm (length cards) ps)) \ No newline at end of file diff --git a/src/UI.hs b/src/UI.hs index cf805ec..e3f666d 100644 --- a/src/UI.hs +++ b/src/UI.hs @@ -14,6 +14,8 @@ module UI , cardsToString , parseImportInput + +, defaultParameters ) where import UI.CardSelector as X (addRecent) diff --git a/src/UI/CardSelector.hs b/src/UI/CardSelector.hs index 4b32bb6..ef29a54 100644 --- a/src/UI/CardSelector.hs +++ b/src/UI/CardSelector.hs @@ -92,7 +92,7 @@ handleEvent gs s@CSS{_list=l, _exception=exc} (VtyEvent ev) = Right result -> continue =<< liftIO (do s'' <- addRecentInternal s' fp let gs' = update s'' - return (gs' `goToState` parameterState fp result)) + return (gs' `goToState` parameterState (gs'^.parameters) fp result)) _ -> continue' s' handleEvent gs _ _ = continue gs diff --git a/src/UI/FileBrowser.hs b/src/UI/FileBrowser.hs index e6246e2..52dcc3a 100644 --- a/src/UI/FileBrowser.hs +++ b/src/UI/FileBrowser.hs @@ -79,7 +79,7 @@ handleEvent gs s@FBS{_fb=b, _exception'=excep} (VtyEvent ev) = Right result -> continue =<< liftIO (do addRecent fp let gs' = update s' - return (gs' `moveToState` parameterState fp result)) + return (gs' `moveToState` parameterState (gs'^.parameters) fp result)) _ -> halt' gs _ -> continue' s'