Skip to content

Instantly share code, notes, and snippets.

@eigenhombre
Last active November 13, 2023 14:53
Show Gist options
  • Select an option

  • Save eigenhombre/a1e7d98efddf5ebfdd90efdcebaffff6 to your computer and use it in GitHub Desktop.

Select an option

Save eigenhombre/a1e7d98efddf5ebfdd90efdcebaffff6 to your computer and use it in GitHub Desktop.
Temporarily set Java System properties (Clojure macro)
(defmacro with-properties [property-map & body]
`(let [pm# ~property-map
props# (into {} (for [[k# v#] pm#]
[k# (System/getProperty k#)]))]
(doseq [k# (keys pm#)]
(System/setProperty k# (get pm# k#)))
(try
~@body
(finally
(doseq [k# (keys pm#)]
(if-not (get props# k#)
(System/clearProperty k#)
(System/setProperty k# (get props# k#))))))))
(with-properties {"bank2" "1"}
(System/getProperty "bank2"))
;;=>
'"1"
(System/getProperty "bank2")
;;=>
'nil
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment