mirror of
https://github.com/github/semantic.git
synced 2024-11-28 10:15:55 +03:00
Rework the way we read
a userID or repoID from the environment
- TIL : mkRegexWithOpts documentation is misleading. The first boolean option is described as enforcing beginning of line (`^`) and end of line (`$`) matching, along with not matching newline characters with `.`. From my testing, I discovered this is not true, and in order to enforce that regex behavior, I needed to explicitly add `^…$` to my regex. Because the `mkRegexWithOpts` function was no longer doing what I wanted, I opted for the simpler `mkRegex` function. - readInt now returns a `Maybe Int` and expects a single `Just [s]` match supplied to attempt reading. This function is not general purpose enough to be safe to use elsewhere, but is safe to use within the context of `readIntFromEnv` because of the way the regex enforces matches.
This commit is contained in:
parent
773e808bdb
commit
4207e5f901
@ -135,12 +135,17 @@ reportGitmon' SocketFactory{..} program gitCommand = do
|
||||
|
||||
readIntFromEnv :: Maybe String -> Maybe Int
|
||||
readIntFromEnv Nothing = Nothing
|
||||
readIntFromEnv (Just s) = Just (readInt $ subRegex regex s "")
|
||||
where regex :: Regex
|
||||
regex = mkRegexWithOpts "uint:" True False
|
||||
readIntFromEnv (Just s) = readInt $ matchRegex regex s
|
||||
where
|
||||
-- | Expected format for userID and repoID is: "uint:123",
|
||||
-- | where "uint:" indicates an unsigned integer followed by an integer value.
|
||||
regex :: Regex
|
||||
regex = mkRegex "^uint:([0-9]+)$"
|
||||
|
||||
readInt :: Maybe [String] -> Maybe Int
|
||||
readInt (Just [s]) = Just (read s :: Int)
|
||||
readInt _ = Nothing
|
||||
|
||||
readInt :: String -> Int
|
||||
readInt s = read s :: Int
|
||||
|
||||
withGitmonSocket :: (Socket -> IO c) -> IO c
|
||||
withGitmonSocket = bracket connectSocket close
|
||||
|
Loading…
Reference in New Issue
Block a user