1 import System
.Environment
17 usage
:: Operation
-> String
19 usage Help
= "usage: " ++ progName
++ " [operation] [id]\n\
22 \ bookmark [options] [id]\n\
23 \ citation [options] [id]\n\
24 \ help [operation] \n\
25 \ modify [options] <filters> <id>\n\
26 \ remove [options] <id>\n\
27 \ search [options] [filters] [id]\n\
28 \ view [options] <id>\n\
31 usage op
= show op
++ " not yet implemented"
33 parseArgs
:: [String] -> Either String Operation
34 parseArgs
[] = Left
$ "No operation specified ('" ++ progName
++ " help' for help)"
35 parseArgs xs
= parseArg
$ head xs
37 parseArg
:: String -> Either String Operation
38 parseArg op
= case op
of
40 "bookmark" -> Right Bookmark
41 "citation" -> Right Citation
44 "--help" -> Right Help
45 "modify" -> Right Modify
46 "remove" -> Right Remove
47 "search" -> Right Search
49 "version" -> Right Version
50 _
-> Left
$ "Invalid argument: " ++ op
52 add
:: [String] -> IO ()
53 add argv
= putStrLn $ usage Add
55 bookmark
:: [String] -> IO ()
56 bookmark argv
= putStrLn $ usage Bookmark
58 citation
:: [String] -> IO ()
59 citation argv
= putStrLn $ usage Citation
61 help
:: [String] -> IO ()
62 help argv
= putStrLn $ usage Help
64 modify
:: [String] -> IO ()
65 modify argv
= putStrLn $ usage Modify
67 remove
:: [String] -> IO ()
68 remove argv
= putStrLn $ usage Remove
70 search
:: [String] -> IO ()
71 search argv
= putStrLn $ usage Search
73 view
:: [String] -> IO ()
74 view argv
= putStrLn $ usage View
77 version
= putStrLn $ progName
++ " " ++ progVersion
83 case parseArgs argv
of
84 Right Add
-> add argv
'
85 Right Bookmark
-> bookmark argv
'
86 Right Citation
-> citation argv
'
87 Right Help
-> help argv
'
88 Right Modify
-> modify argv
'
89 Right Remove
-> remove argv
'
90 Right Search
-> search argv
'
91 Right View
-> view argv
'
92 Right Version
-> version