forked from fabric/fabric
-
Notifications
You must be signed in to change notification settings - Fork 1
/
fabfile.py
77 lines (64 loc) · 2.3 KB
/
fabfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
Fabric's own fabfile.
"""
from __future__ import with_statement
import inspect
from fabric.api import *
from fabric.contrib.project import rsync_project
import fabric.version
import os.path
def test():
"""
Run all unit tests
"""
# Need show_stderr=True because the interesting output of nosetests is
# actually sent to stderr, not stdout.
print(local('nosetests -sv', capture=False))
def build_docs():
"""
Generate the Sphinx documentation.
"""
local('cd docs && make clean html', capture=False)
@hosts('jforcier@fabfile.org')
def push_docs():
"""
Build and push the Sphinx docs to docs.fabfile.org
"""
build_docs()
branch = fabric.version.get_version(line_only=True)
remote_loc = '/var/www/docs.fabfile/%s/' % branch
rsync_project(remote_loc, 'docs/_build/html/', delete=True)
def tag():
"""
Tag a new release of the software
"""
with settings(warn_only=True):
# Get current version string
version = fabric.version.get_version()
# Does that tag already exist?
exists = local("git tag | grep %s" % version)
if exists:
# If no work has been done since, what's the point?
if not local("git log %s.." % version):
abort("No work done since last tag!")
# If work *has* been done since, we need to make a new tag. To the
# editor for version update!
raw_input("Work has been done since last tag, version update is needed. Hit Enter to load version info in your editor: ")
local("$EDITOR fabric/version.py", capture=False)
# Reload version module to get new version
reload(fabric.version)
# If the tag doesn't exist, the user has already updated version info
# and we can just move on.
else:
print("Version has already been updated, no need to edit...")
# Get version strings
verbose_version = fabric.version.get_version(verbose=True)
short_version = fabric.version.get_version()
# Commit the version update
local("git add fabric/version.py")
local("git commit -m \"Cut %s\"" % verbose_version)
# And tag it
local("git tag -m \"Fabric %s\" %s" % (
verbose_version,
short_version
))