diff options
Diffstat (limited to 'ymir')
-rw-r--r-- | ymir/mlmmj-expose.nix | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/ymir/mlmmj-expose.nix b/ymir/mlmmj-expose.nix index aca8aeb1..b3eab046 100644 --- a/ymir/mlmmj-expose.nix +++ b/ymir/mlmmj-expose.nix | |||
@@ -37,14 +37,17 @@ let | |||
37 | "mlmmj-exposed" -> do | 37 | "mlmmj-exposed" -> do |
38 | args <- getArgs | 38 | args <- getArgs |
39 | case args of | 39 | case args of |
40 | [listDir, extension] -> do | 40 | [listDir, (map toLower -> extension)] -> do |
41 | setCurrentDirectory listDir | 41 | setCurrentDirectory listDir |
42 | identities <- getIdentities | 42 | identities <- getIdentities |
43 | subscribers <- getSubscribers | 43 | subscribers <- getSubscribers |
44 | let hashes = [(ident, sub, take len $ hash' (ident, sub)) | ident <- identities, sub <- subscribers] | 44 | let hashes = filter ((==) extension . snd) [((ident, sub), take len $ hash' (ident, sub)) | ident <- identities, sub <- subscribers] |
45 | unless (extension `elem` map (\(_, _, s) -> s) hashes) $ die "Unknown extension" | 45 | case hashes of |
46 | getContents >>= writeFile "queue/exposed" | 46 | [(_, recipient)] -> do |
47 | callProcess "${pkgs.mlmmj}/bin/mlmmj-send" ["-L", listDir, "-l", "6", "-m", "queue/exposed", "-T", recipient] | 47 | getContents >>= writeFile "queue/exposed" |
48 | callProcess "${pkgs.mlmmj}/bin/mlmmj-send" ["-L", listDir, "-l", "6", "-m", "queue/exposed", "-T", recipient] | ||
49 | [] -> die "Unknown extension" | ||
50 | _ -> die "Ambiguous extension" | ||
48 | _ -> hPutStrLn stderr ("Called without expected arguments (<listDirectory> <recipientExtension>)") >> exitWith (ExitFailure 2) | 51 | _ -> hPutStrLn stderr ("Called without expected arguments (<listDirectory> <recipientExtension>)") >> exitWith (ExitFailure 2) |
49 | "mlmmj-expose" -> do | 52 | "mlmmj-expose" -> do |
50 | args <- getArgs | 53 | args <- getArgs |
@@ -79,7 +82,7 @@ let | |||
79 | readDir dir = concat <$> (mapM (fmap lines . readFile) . map (dir </>) . filter (not . (`elem` [".", ".."]))=<< (getDirectoryContents dir)) | 82 | readDir dir = concat <$> (mapM (fmap lines . readFile) . map (dir </>) . filter (not . (`elem` [".", ".."]))=<< (getDirectoryContents dir)) |
80 | 83 | ||
81 | hash' :: Show a => a -> String | 84 | hash' :: Show a => a -> String |
82 | hash' = show . (hash :: BS.ByteString -> Digest SHA256) . CBS.pack . map toLower . show | 85 | hash' = map toLower . show . (hash :: BS.ByteString -> Digest SHA256) . CBS.pack . map toLower . show |
83 | 86 | ||
84 | len :: Int | 87 | len :: Int |
85 | len = 16 | 88 | len = 16 |