rewinder 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []