Skip to content

Instantly share code, notes, and snippets.

@spencerwi
Last active August 29, 2015 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spencerwi/bba4512e58d10b51aa88 to your computer and use it in GitHub Desktop.
Save spencerwi/bba4512e58d10b51aa88 to your computer and use it in GitHub Desktop.
Convert Java properties to environment variables (naively)
#!/usr/bin/env runhaskell
module JavaPropsToEnvVars where
import Data.List (break, stripPrefix)
type PropertyName = String
type PropertyValue = String
type Property = (PropertyName, PropertyValue)
containsProperty :: String -> Bool
containsProperty = elem '='
propertyFromString :: String -> Property
propertyFromString = (\(name, val) -> (name, (dropWhile ((==) '=') val))) . break ((==) '=')
sanitizeProperty :: Property -> String
sanitizeProperty (name, val) = (map sanitizeDots name) ++ "=" ++ (quoteStringIfNeeded val)
where sanitizeDots '.' = '_'
sanitizeDots c = c
quoteStringIfNeeded val
| (head val) == '"' = val
| otherwise = "\"" ++ val ++ "\""
convertJavaPropsToEnvironmentVars :: String -> String
convertJavaPropsToEnvironmentVars = unlines . (map sanitizeProperty) . (map propertyFromString) . (filter containsProperty) . lines
main = interact convertJavaPropsToEnvironmentVars
-- vim:ft=haskell
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment