rewinder 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 62b560c97b29acdad3e89e6b6a2eae01c7c8c00e
4
+ data.tar.gz: 628f0451e419262288032682a17e49f554fcf643
5
+ SHA512:
6
+ metadata.gz: 752d2126329d31c7d226b52ba61c5f480c39b2b1cf9ddab0d14f39e655fb8bd38414b97c5584f4453ef43b1f8d9402a3f8b2d1399a846fd66df27ba9ab1be576
7
+ data.tar.gz: b1c335d92c7e7795a49acd2432e43c59b5caf403ee11f17315857e62f852cea88892f27d829c6bcc75cbee54f35700aad829888900108c8ba7a36169ebd5eb0b
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ *.gem
2
+ *.kpf
3
+ *.sw?
4
+ .DS_Store
5
+ coverage
6
+ pkg
7
+ rdoc
8
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ **Rewinder**
2
+
3
+ Rewinder goes back through the git history of your site and creates a timelapse video showing how it's changed visually.
4
+
5
+ Pretty neat.
6
+
7
+ **Known Bugs**
8
+
9
+ - If you have the hookup gem installed rewinder will not work
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
data/bin/rewinder ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rewinder'
3
+
4
+ rewinder = Rewinder::Snapshotter.new
5
+ rewinder.create_video
data/lib/rasterize.js ADDED
@@ -0,0 +1,55 @@
1
+ var page = require('webpage').create(),
2
+ system = require('system'),
3
+ address, output, size;
4
+
5
+ if (system.args.length < 3 || system.args.length > 5) {
6
+ console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
7
+ console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
8
+ console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
9
+ console.log(' "800px*600px" window, clipped to 800x600');
10
+ phantom.exit(1);
11
+ } else {
12
+ address = system.args[1];
13
+ output = system.args[2];
14
+ page.viewportSize = { width: 1440, height: 900 };
15
+ if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
16
+ size = system.args[3].split('*');
17
+ page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
18
+ : { format: system.args[3], orientation: 'portrait', margin: '1cm' };
19
+ } else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
20
+ size = system.args[3].split('*');
21
+ if (size.length === 2) {
22
+ pageWidth = parseInt(size[0], 10);
23
+ pageHeight = parseInt(size[1], 10);
24
+ page.viewportSize = { width: pageWidth, height: pageHeight };
25
+ page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight };
26
+ } else {
27
+ console.log("size:", system.args[3]);
28
+ pageWidth = parseInt(system.args[3], 10);
29
+ pageHeight = parseInt(pageWidth * 3/4, 10); // it's as good an assumption as any
30
+ console.log ("pageHeight:",pageHeight);
31
+ page.viewportSize = { width: pageWidth, height: pageHeight };
32
+ }
33
+ }
34
+ if (system.args.length > 4) {
35
+ page.zoomFactor = system.args[4];
36
+ }
37
+ page.open(address, function (status) {
38
+ if (status !== 'success') {
39
+ console.log('Unable to load the address!');
40
+ phantom.exit();
41
+ } else {
42
+ page.evaluate(function() {
43
+ var style = document.createElement('style'),
44
+ text = document.createTextNode('body { background: #fff }');
45
+ style.setAttribute('type', 'text/css');
46
+ style.appendChild(text);
47
+ document.head.insertBefore(style, document.head.firstChild);
48
+ });
49
+ window.setTimeout(function () {
50
+ page.render(output);
51
+ phantom.exit();
52
+ }, 200);
53
+ }
54
+ });
55
+ }
@@ -0,0 +1,7 @@
1
+ module Rewinder
2
+
3
+ # The current gem version
4
+ # @return [String] the current gem version.
5
+ VERSION='0.0.1'
6
+
7
+ end
data/lib/rewinder.rb ADDED
@@ -0,0 +1,38 @@
1
+ require 'git'
2
+
3
+ module Rewinder
4
+ class Snapshotter
5
+ def create_video
6
+ gem_root = Gem::Specification.find_by_name("rewinder").gem_dir
7
+
8
+ Dir.chdir("./")
9
+
10
+ g = Git.open('./')
11
+ g.checkout(g.branch('master'))
12
+ g.branch('rewinder').checkout
13
+
14
+ g.log(10).to_a.reverse.each_with_index do |l, i|
15
+ g.checkout(l.sha)
16
+ puts l.sha
17
+ puts `bundle install`
18
+ bundle = `bundle install`
19
+ puts "bundle #{bundle}"
20
+ `rake db:reset RAILS_ENV=production`
21
+ `rake db:migrate RAILS_ENV=production`
22
+ system "rails server &"
23
+ sleep 8
24
+ `phantomjs #{gem_root}/lib/rasterize.js 'http://localhost:3000/' ~/.rewinder/homescreen#{(i+1).to_s.rjust(6, '0')}.png`
25
+ puts "Killing server"
26
+ puts system 'kill -9 `cat tmp/pids/server.pid`'
27
+ puts "Hard resetting"
28
+ g.reset_hard(l)
29
+ end
30
+
31
+ g.checkout(g.branch('master'))
32
+ g.branch('rewinder').delete
33
+
34
+ `ffmpeg -f image2 -r 0.5 -i ~/.rewinder/homescreen%06d.png -s 1440x900 -vcodec libx264 -pix_fmt yuv420p ./rewinder.mp4`
35
+ `rm -rf ~/.rewinder`
36
+ end
37
+ end
38
+ end
data/rewinder.gemspec ADDED
@@ -0,0 +1,18 @@
1
+ require 'date'
2
+ require "#{File.expand_path(File.dirname(__FILE__))}/lib/rewinder/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'rewinder'
6
+ s.version = '0.0.1'
7
+ s.date = Date.today.to_s
8
+ s.summary = "Rewinder"
9
+ s.description = "Rewinder goes back through the git history of your site and creates a timelapse video showing how it's changed visually"
10
+ s.authors = ["Hamilton Chapman"]
11
+ s.email = 'hamchapman@gmail.com'
12
+ s.files = `git ls-files`.split($\)
13
+ s.executables = ['rewinder']
14
+ s.homepage = 'http://rewinder.io'
15
+ s.license = 'MIT'
16
+ s.require_paths = ['lib']
17
+ s.add_dependency 'git'
18
+ end
metadata ADDED
@@ -0,0 +1,69 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rewinder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Hamilton Chapman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: git
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Rewinder goes back through the git history of your site and creates a
28
+ timelapse video showing how it's changed visually
29
+ email: hamchapman@gmail.com
30
+ executables:
31
+ - rewinder
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - ".gitignore"
36
+ - Gemfile
37
+ - README.md
38
+ - Rakefile
39
+ - VERSION
40
+ - bin/rewinder
41
+ - lib/rasterize.js
42
+ - lib/rewinder.rb
43
+ - lib/rewinder/version.rb
44
+ - rewinder.gemspec
45
+ homepage: http://rewinder.io
46
+ licenses:
47
+ - MIT
48
+ metadata: {}
49
+ post_install_message:
50
+ rdoc_options: []
51
+ require_paths:
52
+ - lib
53
+ required_ruby_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ requirements: []
64
+ rubyforge_project:
65
+ rubygems_version: 2.2.2
66
+ signing_key:
67
+ specification_version: 4
68
+ summary: Rewinder
69
+ test_files: []