Skip to content

Instantly share code, notes, and snippets.

@me-vlad
Created March 10, 2012 01:57
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 me-vlad/2009694 to your computer and use it in GitHub Desktop.
Save me-vlad/2009694 to your computer and use it in GitHub Desktop.
fabric-1.4.0 fabric.contrib.files.sed patch
--- files.py.orig 2012-02-14 07:53:02.000000000 +0200
+++ files.py 2012-03-10 14:04:51.323559793 +0200
@@ -153,7 +153,7 @@
"""
func = use_sudo and sudo or run
# Characters to be escaped in both
- for char in "/'":
+ for char in '/"':
before = before.replace(char, r'\%s' % char)
after = after.replace(char, r'\%s' % char)
# Characters to be escaped in replacement only (they're useful in regexen
@@ -174,12 +174,15 @@
tmp = "/tmp/%s" % hasher.hexdigest()
# Use temp file to work around lack of -i
expr = r"""cp -p %(filename)s %(tmp)s \
-&& sed -r -e '%(limit)ss/%(before)s/%(after)s/%(flags)sg' %(filename)s > %(tmp)s \
+&& sed -r -e "%(limit)ss/%(before)s/%(after)s/%(flags)sg" %(filename)s > %(tmp)s \
&& cp -p %(filename)s %(filename)s%(backup)s \
&& mv %(tmp)s %(filename)s"""
command = expr % locals()
+ elif platform == "FreeBSD":
+ expr = r'sed -i "%s" -r -e "%ss/%s/%s/%sg" %s'
+ command = expr % (backup, limit, before, after, flags, filename)
else:
- expr = r"sed -i%s -r -e '%ss/%s/%s/%sg' %s"
+ expr = r'sed -i%s -r -e "%ss/%s/%s/%sg" %s'
command = expr % (backup, limit, before, after, flags, filename)
return func(command, shell=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment