Text replacement in files using regexes
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



A Leiningen plugin to replace text in files with other text, possibly from a project map.


Put [lein-file-replace "0.1.0"] into your :plugins vector.

Here's a dumb thing you could do:

$ lein file-replace README.md License Tomato

More useful is to add the following to your :release-tasks to keep your README.md in sync with your project's version when you release your project:

["file-replace" "README.md" "your-project \"" "\"]" "version"]

As you might've noticed, the task takes either 3 or 4 arguments. The first arg is always the relative path to the file you want to change, and the last arg is always the replacement text, which may be the name of a key in your project map.

The 2nd arg of the 3-arity form is a regular expression identifying the text you want to replace. Any captured groups may be referenced in your replacement text with a dollar sign, e.g. $1, $2, etc.

When using the 4-arity form, the 2nd arg is the lookbehind text to match and the 3rd arg is the lookahead text. So whatever text is in between them will be replaced. Uniquely identifying the text before and after what you want to replace can be easier than coming up with the right regex.

See this project's project.clj for a working example.


Copyright © 2014 Jim Crossley

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.