shadowsocks 1.20140713 → 1.20141007
raw patch · 2 files changed
+16/−34 lines, 2 filesdep ~optparse-applicative
Dependency ranges changed: optparse-applicative
Files
- Shadowsocks/Util.hs +12/−25
- shadowsocks.cabal +4/−9
Shadowsocks/Util.hs view
@@ -10,7 +10,6 @@ import Data.Maybe (fromMaybe) import GHC.Generics (Generic) import Options.Applicative-import Options.Applicative.Types (ReadM(ReadM)) data Config = Config { server :: String@@ -38,32 +37,20 @@ readConfig :: FilePath -> IO (Maybe Config) readConfig fp = liftM decode' $ L.readFile fp -optStr :: Mod OptionFields (Maybe String) -> Parser (Maybe String)-optStr m =- nullOption $ value Nothing <> reader (success . str) <> m- where- success = ReadM . Right--maybeOpt :: Read a => Mod OptionFields (Maybe a) -> Parser (Maybe a)-maybeOpt m =- nullOption $ value Nothing <> reader (success . auto) <> m- where- success = ReadM . Right- configOptions :: Parser Options configOptions = Options- <$> optStr (long "server" <> short 's' <> metavar "ADDR"- <> help "server address")- <*> maybeOpt (long "server-port" <> short 'p' <> metavar "PORT"- <> help "server port")- <*> maybeOpt (long "local-port" <> short 'l' <> metavar "PORT"- <> help "local port")- <*> optStr (long "password" <> short 'k' <> metavar "PASSWORD"- <> help "password")- <*> optStr (long "method" <> short 'm' <> metavar "METHOD"- <> help "encryption method, for example, aes-256-cfb")- <*> optStr (long "config" <> short 'c' <> metavar "CONFIG"- <> help "path to config file")+ <$> optional (strOption (long "server" <> short 's' <> metavar "ADDR"+ <> help "server address"))+ <*> optional (option auto (long "server-port" <> short 'p' <> metavar "PORT"+ <> help "server port"))+ <*> optional (option auto (long "local-port" <> short 'l' <> metavar "PORT"+ <> help "local port"))+ <*> optional (strOption (long "password" <> short 'k' <> metavar "PASSWORD"+ <> help "password"))+ <*> optional (strOption (long "method" <> short 'm' <> metavar "METHOD"+ <> help "encryption method, for example, aes-256-cfb"))+ <*> optional (strOption (long "config" <> short 'c' <> metavar "CONFIG"+ <> help "path to config file")) parseConfigOptions :: IO Config parseConfigOptions = do
shadowsocks.cabal view
@@ -1,5 +1,5 @@ name: shadowsocks-version: 1.20140713+version: 1.20141007 synopsis: A fast tunnel proxy that help you get through firewalls description: Shadowsocks implemented in Haskell. Original python version: <https://github.com/clowwindy/shadowsocks>@@ -33,7 +33,7 @@ cryptohash >= 0.11, HsOpenSSL >= 0.11, network >= 2.4,- optparse-applicative >= 0.8,+ optparse-applicative >= 0.11, unordered-containers >= 0.2 default-language: Haskell2010 @@ -51,7 +51,7 @@ cryptohash >= 0.11, HsOpenSSL >= 0.11, network >= 2.4,- optparse-applicative >= 0.8,+ optparse-applicative >= 0.11, unordered-containers >= 0.2 default-language: Haskell2010 @@ -60,15 +60,10 @@ main-is: test.hs ghc-options: -Wall -fno-warn-unused-do-bind build-depends: base == 4.*,- aeson >= 0.7, binary >= 0.7, bytestring >= 0.9, containers >= 0.5, cryptohash >= 0.11,- HsOpenSSL >= 0.11,- network >= 2.4,- optparse-applicative >= 0.8, process >= 1.1,- HUnit >= 1.2,- unordered-containers >= 0.2+ HUnit >= 1.2 default-language: Haskell2010