| 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
|
|
|