Index: tools/cc-frame-viewer/third_party/gl-matrix/tasks/support/gl-matrix/release_helper.rb |
diff --git a/tools/cc-frame-viewer/third_party/gl-matrix/tasks/support/gl-matrix/release_helper.rb b/tools/cc-frame-viewer/third_party/gl-matrix/tasks/support/gl-matrix/release_helper.rb |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4aca02baf881c8d92ba442ed72f2a8e78951ee92 |
--- /dev/null |
+++ b/tools/cc-frame-viewer/third_party/gl-matrix/tasks/support/gl-matrix/release_helper.rb |
@@ -0,0 +1,104 @@ |
+# Copyright (c) 2013 Brandon Jones, Colin MacKenzie IV |
+# |
+# This software is provided 'as-is', without any express or implied |
+# warranty. In no event will the authors be held liable for any damages |
+# arising from the use of this software. |
+# |
+# Permission is granted to anyone to use this software for any purpose, |
+# including commercial applications, and to alter it and redistribute it |
+# freely, subject to the following restrictions: |
+# |
+# 1. The origin of this software must not be misrepresented; you must not |
+# claim that you wrote the original software. If you use this software |
+# in a product, an acknowledgment in the product documentation would be |
+# appreciated but is not required. |
+# |
+# 2. Altered source versions must be plainly marked as such, and must not |
+# be misrepresented as being the original software. |
+# |
+# 3. This notice may not be removed or altered from any source distribution. |
+ |
+# Pretty much everything here was ripped from Bundler. |
+# https://github.com/carlhuda/bundler/blob/master/lib/bundler/gem_helper.rb |
+module GLMatrix::ReleaseHelper |
+ module_function |
+ |
+ def release |
+ guard_clean |
+ guard_already_tagged |
+ tag_version { |
+ yield if block_given? |
+ git_push |
+ } |
+ end |
+ |
+ def base |
+ GLMatrix.base_path.to_s |
+ end |
+ |
+ def git_push |
+ perform_git_push |
+ perform_git_push ' --tags' |
+ Bundler.ui.confirm "Pushed git commits and tags" |
+ end |
+ |
+ def perform_git_push(options = '') |
+ cmd = "git push #{options}" |
+ out, code = sh_with_code(cmd) |
+ raise "Couldn't git push. `#{cmd}' failed with the following output:\n\n#{out}\n" unless code == 0 |
+ end |
+ |
+ def guard_already_tagged |
+ if sh('git tag').split(/\n/).include?(version_tag) |
+ raise("This tag has already been committed to the repo.") |
+ end |
+ end |
+ |
+ def guard_clean |
+ clean? or raise("There are files that need to be committed first.") |
+ end |
+ |
+ def clean? |
+ sh_with_code("git diff --exit-code")[1] == 0 |
+ end |
+ |
+ def tag_version |
+ sh "git tag -a -m \"Version #{version}\" #{version_tag}" |
+ Bundler.ui.confirm "Tagged #{version_tag}" |
+ yield if block_given? |
+ rescue |
+ Bundler.ui.error "Untagged #{version_tag} due to error" |
+ sh_with_code "git tag -d #{version_tag}" |
+ raise |
+ end |
+ |
+ def version |
+ GLMatrix::VERSION |
+ end |
+ |
+ def version_tag |
+ "v#{version}" |
+ end |
+ |
+ def name |
+ "gl-matrix" |
+ end |
+ |
+ def sh(cmd, &block) |
+ out, code = sh_with_code(cmd, &block) |
+ code == 0 ? out : raise(out.empty? ? "Running `#{cmd}' failed. Run this command directly for more detailed output." : out) |
+ end |
+ |
+ def sh_with_code(cmd, &block) |
+ cmd << " 2>&1" |
+ outbuf = '' |
+ Bundler.ui.debug(cmd) |
+ Dir.chdir(base) { |
+ outbuf = `#{cmd}` |
+ if $? == 0 |
+ block.call(outbuf) if block |
+ end |
+ } |
+ [outbuf, $?] |
+ end |
+end |