This repository has been archived on 2020-10-11. You can view files and clone it, but cannot push or open issues or pull requests.
angular-contenteditable/util/post-commit
2013-10-16 05:35:00 +01:00

98 lines
2.3 KiB
Ruby
Executable File

#!/usr/bin/env ruby
require 'tmpdir'
require 'json'
puts 'running post-commit hook'
BOWER = JSON.parse File.read 'bower.json'
def commit
@commit ||= `git log | head -1 | cut -d' ' -f2`
end
# get version of library from bower.json
def bower_version(library)
BOWER["dependencies"][library] || BOWER["devDependencies"][library]
end
# return the base url for a library from bower / github
def library_base_url(library)
# TODO: figure out how to clean the cache so we can use `bower --offline`
(@library_base_url ||= {})[library] ||=
JSON.parse(`bower lookup #{library} --json`)["url"]
.sub(/^git:\/\/github.com/, 'https://rawgithub.com')
.sub(/\.git$/, "/#{bower_version(library).sub(/~/, '')}/")
end
# transform script ref to bower URL
def script_url(src)
if src =~ /\/bower_components\//
parts = src.split('/bower_components/')[1].split('/')
library_base_url(parts[0]) + parts.drop(1).join('/')
else
src.sub(/^\.\.\/\.\./,
'https://rawgithub.com/akatov/angular-contenteditable/master')
end
end
# link href
# script src
def replace_script_and_link(contents)
["script src", "link href"].reduce(contents) do |c, tag|
c.gsub /#{tag}="([^"]*)"/ do
"#{tag}=\"#{script_url($1)}\""
end
end
end
def index_header
<<EOF
<html>
<head>
<title>angular-contenteditable</title>
</head>
<body>
<h1>angular contenteditable</h1>
<h2>examples<h2>
<ul>
EOF
end
def index_footer
<<EOF
</ul>
</body>
</html>
EOF
end
puts commit
def execute
Dir.mktmpdir do |temp|
FileUtils.cp_r 'test/fixtures/', temp
FileUtils.mv "#{temp}/fixtures", "#{temp}/examples"
File.open("#{temp}/index.html", File::CREAT | File::WRONLY) do |index_file|
index_file.write index_header
Dir.glob("#{temp}/examples/*.html").each do |file_name|
bn = File.basename file_name
puts "changing references in #{bn}"
File.write file_name, replace_script_and_link(File.read file_name)
index_file.write " <li><a href='examples/#{bn}'>#{bn}</a></li>\n"
end
index_file.write index_footer
end
`git checkout gh-pages`
`git rm -r examples`
['index.html', 'examples'].each do |f|
FileUtils.cp_r "#{temp}/#{f}", '.'
`git add #{f}`
end
`git commit --message "updating gh-pages for commit #{commit}"`
`git checkout master`
end
end
execute