preparing post-commit hook to create gh-pages
parent
7ba9e4abcb
commit
f773f5ff94
@ -0,0 +1,94 @@
|
|||||||
|
#!/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:\/\//, 'https://raw.')
|
||||||
|
.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://raw.github.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.open(file_name, File::RDWR) do |file|
|
||||||
|
file.write replace_script_and_link(file.read)
|
||||||
|
end
|
||||||
|
index_file.write " <li><a href='examples/#{bn}'>#{bn}</a></li>\n"
|
||||||
|
end
|
||||||
|
index_file.write index_footer
|
||||||
|
end
|
||||||
|
FileUtils.cp_r temp, '.'
|
||||||
|
File.exists? 'temp' and FileUtils.rm_r 'temp'
|
||||||
|
FileUtils.mv temp.split('/').last, 'temp'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
execute
|
Reference in New Issue