Bug fixes.
[cdist.git] / cdist / cmd_release.py
1 #
2 #    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
3 #
4 #    This program is free software; you can redistribute it and/or modify
5 #    it under the terms of the GNU General Public License as published by
6 #    the Free Software Foundation; either version 2 of the License, or
7 #    (at your option) any later version.
8 #
9 #    This program is distributed in the hope that it will be useful,
10 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
11 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 #    GNU General Public License for more details.
13
14 #    You should have received a copy of the GNU General Public License
15 #    along with this program; if not, write to the Free Software
16 #    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 from target import SourceTarget
19 import globals
20 from util import *
21 from tree_directory import TreeDirectory
22
23 class CmdRelease(object):
24     def __init__(self):
25         self.name = 'release'
26         self.help = "release a project using its next version number (changing wscript and tagging)"
27
28     def run(self, args):
29         if args.minor is False and args.micro is False:
30             raise Error('you must specify --minor or --micro')
31
32         target = SourceTarget()
33         tree = globals.trees.get(args.project, args.checkout, target)
34
35         version = tree.version
36         version.to_release()
37         if args.minor:
38             version.bump_minor()
39         else:
40             version.bump_micro()
41
42         with TreeDirectory(tree):
43             set_version_in_wscript(version)
44             append_version_to_changelog(version)
45             append_version_to_debian_changelog(version)
46
47             command('git commit -a -m "Bump version"')
48             command('git tag -m "v%s" v%s' % (version, version))
49
50             version.to_devel()
51             set_version_in_wscript(version)
52             command('git commit -a -m "Bump version"')
53             command('git push')
54             command('git push --tags')
55
56         target.cleanup()