gitson-0.5.2: A document store library for Git + JSON.

Safe HaskellSafe



Various functions used inside Gitson.



documentPath :: FilePath -> String -> FilePath Source #

Combines two paths and adds the .json extension.

>>> documentPath "things" "document"
>>> documentPath "things/" "document"

lockPath :: FilePath Source #

Path to the transaction lock file, relative to the repo root.

filterFilenamesAsKeys :: [FilePath] -> [String] Source #

Turns a list of filenames into a list of keys, ignoring non-JSON files.

>>> filterFilenamesAsKeys [".", "..", "k1.json", "unrelated.file"]

filterDirs :: [FilePath] -> IO [FilePath] Source #

Filters a list of file paths, leaving only paths to existing non-hidden directories.

insideDirectory :: (MonadIO i, MonadBaseControl IO i) => FilePath -> i a -> i a Source #

Returns an IO action that switches the current directory to a given path, executes the given IO action and switches the current directory back.

lastCommitText :: IO String Source #

Returns the message of the last git commit in the repo where the current directory is located.

shell :: MonadIO i => String -> [String] -> i () Source #

Runs a shell command with stdin, stdout and stderr set to devnull.

intoFunctor :: Functor f => f a -> b -> f (a, b) Source #

Appends a value to a functor, making the inside a tuple if it's a single value.

>>> intoFunctor (Just 1) 2
Just (1,2)
>>> intoFunctor Nothing 2

maybeReadIntString :: String -> Maybe (Int, String) Source #

Tries to extract the first int out of a string.

>>> maybeReadIntString "0123-hell0w0rld"
Just (123,"-hell0w0rld")
>>> maybeReadIntString "1"
Just (1,"")
>>> maybeReadIntString "hello"

nextKeyId :: [String] -> Int Source #

Returns the next numeric id in a sequence of keys.

>>> nextKeyId []
>>> nextKeyId ["aaaaarrrrrrrrrrr"]
>>> nextKeyId ["1-hell0-w0rld-123456.json", "002-my-second-post.json"]