Upstream version 5.34.98.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / third_party / tvcm / third_party / gl-matrix / tasks / support / gl-matrix / release_helper.rb
1 # Copyright (c) 2013 Brandon Jones, Colin MacKenzie IV
2
3 # This software is provided 'as-is', without any express or implied
4 # warranty. In no event will the authors be held liable for any damages
5 # arising from the use of this software.
6
7 # Permission is granted to anyone to use this software for any purpose,
8 # including commercial applications, and to alter it and redistribute it
9 # freely, subject to the following restrictions:
10
11 #  1. The origin of this software must not be misrepresented; you must not
12 #     claim that you wrote the original software. If you use this software
13 #     in a product, an acknowledgment in the product documentation would be
14 #     appreciated but is not required.
15
16 #  2. Altered source versions must be plainly marked as such, and must not
17 #     be misrepresented as being the original software.
18
19 #  3. This notice may not be removed or altered from any source distribution.
20
21 # Pretty much everything here was ripped from Bundler.
22 # https://github.com/carlhuda/bundler/blob/master/lib/bundler/gem_helper.rb
23 module GLMatrix::ReleaseHelper
24   module_function
25
26   def release
27     guard_clean
28     guard_already_tagged
29     tag_version {
30       yield if block_given?
31       git_push
32     }
33   end
34
35   def base
36     GLMatrix.base_path.to_s
37   end
38
39   def git_push
40     perform_git_push
41     perform_git_push ' --tags'
42     Bundler.ui.confirm "Pushed git commits and tags"
43   end
44
45   def perform_git_push(options = '')
46     cmd = "git push #{options}"
47     out, code = sh_with_code(cmd)
48     raise "Couldn't git push. `#{cmd}' failed with the following output:\n\n#{out}\n" unless code == 0
49   end
50
51   def guard_already_tagged
52     if sh('git tag').split(/\n/).include?(version_tag)
53       raise("This tag has already been committed to the repo.")
54     end
55   end
56
57   def guard_clean
58     clean? or raise("There are files that need to be committed first.")
59   end
60
61   def clean?
62     sh_with_code("git diff --exit-code")[1] == 0
63   end
64
65   def tag_version
66     sh "git tag -a -m \"Version #{version}\" #{version_tag}"
67     Bundler.ui.confirm "Tagged #{version_tag}"
68     yield if block_given?
69   rescue
70     Bundler.ui.error "Untagged #{version_tag} due to error"
71     sh_with_code "git tag -d #{version_tag}"
72     raise
73   end
74
75   def version
76     GLMatrix::VERSION
77   end
78
79   def version_tag
80     "v#{version}"
81   end
82
83   def name
84     "gl-matrix"
85   end
86
87   def sh(cmd, &block)
88     out, code = sh_with_code(cmd, &block)
89     code == 0 ? out : raise(out.empty? ? "Running `#{cmd}' failed. Run this command directly for more detailed output." : out)
90   end
91
92   def sh_with_code(cmd, &block)
93     cmd << " 2>&1"
94     outbuf = ''
95     Bundler.ui.debug(cmd)
96     Dir.chdir(base) {
97       outbuf = `#{cmd}`
98       if $? == 0
99         block.call(outbuf) if block
100       end
101     }
102     [outbuf, $?]
103   end
104 end