rocketwheel-command 1.0.0

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.
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Rocketfile.yml
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ test/*
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rocketwheel.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Eric J. Holmes
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,130 @@
1
+ # Rocketwheel Command
2
+
3
+ Command line tool for encoding, building and deploying player packages.
4
+
5
+ ## Install
6
+
7
+ To install the gem:
8
+
9
+ ```
10
+ gem install rocketwheel-command
11
+ ```
12
+
13
+ To update the gem:
14
+
15
+ ```
16
+ gem update rocketwheel-command
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ Directory structure
22
+
23
+ ```
24
+ + source
25
+ + videos
26
+ + images
27
+ index.html.erb
28
+ Rocketfile.yml
29
+ ```
30
+
31
+ Rocketfile.yml
32
+
33
+ ```yaml
34
+ s3:
35
+ key: AKIAJ3SV...
36
+ secret: SIhLOJGkT9S...
37
+ bucket: bucket
38
+ path: folder/to/deploy/to
39
+
40
+ playlist:
41
+ - image: 'images/video1.png'
42
+ title: 'Welcome to Vault PromoMats'
43
+ description: 'An overview of Veeva Vault PromoMats'
44
+ file: 'videos/video1.mp4'
45
+
46
+ player:
47
+ autostart: true
48
+
49
+ transloadit:
50
+ key: 123425adwa....
51
+ secret: 8ajd82u2jad...
52
+ ```
53
+
54
+ **Versions**
55
+
56
+ Lists the various versions of the player.
57
+
58
+ ```bash
59
+ rocket versions
60
+ ```
61
+
62
+ **New**
63
+
64
+ Start a new project with the default template.
65
+
66
+ ```bash
67
+ rocket new foobar
68
+ ```
69
+
70
+ **Build**
71
+
72
+ Copies all files from the `./source` directory to the `./build` directory,
73
+ compiles any erb templates, and downloads and installs the player into the
74
+ `./build` directory.
75
+
76
+ ```bash
77
+ rocket build
78
+ ```
79
+
80
+ [ERB templates](http://www.stuartellis.eu/articles/erb/) (files ending in .tt, which have ruby code embedded) are rendered with the following local variables assigned:
81
+
82
+ * `player_options`: A hash of player options.
83
+ * `playlist`: An array of hashes, representing the playlist.
84
+
85
+ **Encode**
86
+
87
+ Using [transloadit](http://transloadit.com), encodes all files in `./source/videos` and places them in `./build/videos`
88
+
89
+ ```bash
90
+ rocket encode
91
+ ```
92
+
93
+ By default, it will use [these](./templates/transloadit.yml) transloadit steps,
94
+ but you can override the steps by specifiying them as the `transloadit.steps`
95
+ key in the Rocketfile.yml. See the [transloadit docs](https://transloadit.com/docs)
96
+ for more information.
97
+
98
+ **Deploy**
99
+
100
+ Uploads all files in the `./build` directory to S3. Uses the credentials from
101
+ the `s3` key in your Rocketfile.yml.
102
+
103
+ ```bash
104
+ rocket deploy
105
+ ```
106
+
107
+ ## Releasing
108
+
109
+ To release a new version of the gem:
110
+
111
+ 1. Bump the version number in [./lib/rocketwheel/command/version.rb](./lib/rocketwheel/command/version.rb)
112
+ 2. Commit changes and tag the commit with the version number.
113
+
114
+ ```bash
115
+ git commit -am "Bumped version"
116
+ git tag x.x.x && git push && git push --tags
117
+ ```
118
+ 3. Push the gem to [rubygems](http://rubygems.org)
119
+
120
+ ```bash
121
+ rake release
122
+ ```
123
+
124
+ ## Contributing
125
+
126
+ 1. Fork it
127
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
128
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
129
+ 4. Push to the branch (`git push origin my-new-feature`)
130
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/bin/rocket ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require 'rocketwheel/command'
5
+ Bundler.require if File.exists?('Gemfile')
6
+
7
+ begin
8
+ require 'rocketwheel/command/cli'
9
+ Rocketwheel::Command::CLI::Base.start
10
+ rescue Interrupt => e
11
+ puts "\nQuitting..."
12
+ exit 1
13
+ rescue SystemExit => e
14
+ exit e.status
15
+ end
@@ -0,0 +1,56 @@
1
+ module Rocketwheel::Command::CLI
2
+ class Build < Base
3
+ include Thor::Actions
4
+
5
+ namespace :build
6
+
7
+ def self.source_root
8
+ File.expand_path("./")
9
+ end
10
+
11
+ desc 'build', 'Build the source files into a deployable package.'
12
+ method_option :source,
13
+ :aliases => '-s',
14
+ :desc => 'Source directory to build from.',
15
+ :default => 'source'
16
+ method_option :destination,
17
+ :aliases => '-d',
18
+ :desc => 'Directory to store the build.',
19
+ :default => 'build'
20
+ def build
21
+ directory source, destination
22
+ player.download_and_unzip(File.join(destination, 'demoplayer'))
23
+ rescue Rocketwheel::Command::PlayerNotFound => e
24
+ raise Thor::Error, "#{e.message} Run `rocket versions` to see a full list of available players."
25
+ end
26
+
27
+ no_tasks do
28
+ def player_options
29
+ manifest.player_options
30
+ end
31
+
32
+ def playlist
33
+ manifest.playlist
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def player
40
+ Rocketwheel::Command::Player.version(version)
41
+ end
42
+
43
+ def version
44
+ manifest.version
45
+ end
46
+
47
+ def source
48
+ options[:source]
49
+ end
50
+
51
+ def destination
52
+ options[:destination]
53
+ end
54
+
55
+ end
56
+ end
@@ -0,0 +1,92 @@
1
+ require 'fog'
2
+ require 'mime/types'
3
+
4
+ module Rocketwheel::Command::CLI
5
+ class Deploy < Base
6
+ include Thor::Actions
7
+
8
+ namespace :deploy
9
+
10
+ desc 'deploy', 'Push a directory to s3.'
11
+ method_option :dir,
12
+ :aliases => '-d',
13
+ :desc => 'Build directory to deploy.',
14
+ :default => 'build'
15
+ def deploy
16
+ invoke Task, [directory, config]
17
+ end
18
+
19
+ class Task < Thor::Group
20
+ argument :source
21
+ argument :config
22
+
23
+ def upload
24
+ files_to_upload.each do |file|
25
+ upload_file(file) if File.file?(file)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def upload_file(file)
32
+ key = File.join(prefix, file.sub(/#{source}\/?/, ''))
33
+ mime = MIME::Types.type_for(file).first
34
+ say_status :uploading, key, :green
35
+ bucket.files.create(
36
+ :key => key,
37
+ :body => File.read(file),
38
+ :public => true,
39
+ :content_type => mime
40
+ )
41
+ end
42
+
43
+ def bucket
44
+ @bucket ||= s3.directories.get(bucket_name, :prefix => prefix)
45
+ end
46
+
47
+ def s3
48
+ @s3 ||= Fog::Storage.new(
49
+ :provider => 'AWS',
50
+ :aws_access_key_id => aws_key,
51
+ :aws_secret_access_key => aws_secret
52
+ )
53
+ end
54
+
55
+ def files_to_upload
56
+ Dir["#{source}/**/**"]
57
+ end
58
+
59
+ def aws_key
60
+ config.key
61
+ end
62
+
63
+ def aws_secret
64
+ config.secret
65
+ end
66
+
67
+ def bucket_name
68
+ config.bucket
69
+ end
70
+
71
+ def prefix
72
+ config.path
73
+ end
74
+
75
+ end
76
+
77
+ private
78
+
79
+ def directory
80
+ File.join(File.expand_path('./'), dir)
81
+ end
82
+
83
+ def dir
84
+ options[:dir]
85
+ end
86
+
87
+ def config
88
+ manifest.s3
89
+ end
90
+
91
+ end
92
+ end
@@ -0,0 +1,65 @@
1
+ require 'rocketwheel/command/encoder'
2
+
3
+ module Rocketwheel::Command::CLI
4
+ class Encode < Base
5
+ include Thor::Actions
6
+
7
+ namespace :encode
8
+
9
+ desc 'encode', 'Encode videos using transloadit.'
10
+ method_option :source,
11
+ :aliases => '-s',
12
+ :desc => 'Directory where the unencoded videos are stored.',
13
+ :default => 'source/videos'
14
+ method_option :destination,
15
+ :aliases => '-d',
16
+ :desc => 'Directory where the encoded videos will be stored.',
17
+ :default => 'build/videos'
18
+ def encode
19
+ files = Dir["#{File.join(File.expand_path('./'), source)}/**/**"]
20
+ invoke Task, [files, manifest, File.join(File.expand_path('./'), destination)]
21
+ end
22
+
23
+ class Task < Thor::Group
24
+ argument :files
25
+ argument :manifest
26
+ argument :destination
27
+
28
+ def encode
29
+ files.each do |file|
30
+ say_status :encoding, File.basename(file)
31
+ end
32
+ @encoder = Rocketwheel::Command::Encoder.new(manifest)
33
+ encoder.encode(files)
34
+ end
35
+
36
+ def wait
37
+ until encoder.encoded? do sleep 2; end
38
+ end
39
+
40
+ def download
41
+ encoder.store(destination) do |result|
42
+ say_status :downloading, result['name']
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ def encoder
49
+ @encoder
50
+ end
51
+
52
+ end
53
+
54
+ private
55
+
56
+ def source
57
+ options[:source]
58
+ end
59
+
60
+ def destination
61
+ options[:destination]
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,59 @@
1
+ require 'fileutils'
2
+
3
+ module Rocketwheel::Command::CLI
4
+ class New < Thor
5
+ include Thor::Actions
6
+
7
+ namespace :new
8
+
9
+ def self.source_root
10
+ File.join(Rocketwheel::Command.templates, 'project')
11
+ end
12
+
13
+ desc 'new [name]', 'Start a new project.'
14
+ method_option :version,
15
+ :desc => 'The player version to use. Defaults to latest.'
16
+ def new(name)
17
+ directory version, name
18
+ end
19
+
20
+ class NoTemplateDirectory < Directory
21
+ protected
22
+
23
+ def execute!
24
+ lookup = Thor::Util.escape_globs(source)
25
+ lookup = config[:recursive] ? File.join(lookup, '**') : lookup
26
+ lookup = file_level_lookup(lookup)
27
+
28
+ files(lookup).sort.each do |file_source|
29
+ next if File.directory?(file_source)
30
+ next if config[:exclude_pattern] && file_source.match(config[:exclude_pattern])
31
+ file_destination = File.join(given_destination, file_source.gsub(source, '.'))
32
+ file_destination.gsub!('/./', '/')
33
+
34
+ case file_source
35
+ when /\.empty_directory$/
36
+ dirname = File.dirname(file_destination).gsub(/\/\.$/, '')
37
+ next if dirname == given_destination
38
+ base.empty_directory(dirname, config)
39
+ else
40
+ destination = base.copy_file(file_source, file_destination, config, &@block)
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ def directory(source, *args, &block)
49
+ config = args.last.is_a?(Hash) ? args.pop : {}
50
+ destination = args.first || source
51
+ action NoTemplateDirectory.new(self, source, destination || source, config, &block)
52
+ end
53
+
54
+ def version
55
+ options[:version] || Rocketwheel::Command::Player.latest_version
56
+ end
57
+
58
+ end
59
+ end
@@ -0,0 +1,12 @@
1
+ module Rocketwheel::Command::CLI
2
+ class Versions < Thor
3
+ namespace :versions
4
+
5
+ desc 'versions', 'List player versions'
6
+ def versions
7
+ Rocketwheel::Command::Player.all.each do |player|
8
+ say "#{player.version} - #{player.download_url}"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,89 @@
1
+ require 'thor'
2
+ require 'thor/group'
3
+
4
+ module Rocketwheel
5
+ module Command
6
+ module CLI
7
+ class Base < Thor
8
+ class << self
9
+ def start(*args)
10
+ # Change flag to a module
11
+ ARGV.unshift('help') if ARGV.delete('--help')
12
+
13
+ super
14
+ end
15
+
16
+ def filename
17
+ Rocketwheel::Command::MANIFEST
18
+ end
19
+ end
20
+
21
+ # Override the Thor help method to find help for subtasks
22
+ # @param [Symbol, String, nil] meth
23
+ # @param [Boolean] subcommand
24
+ # @return [void]
25
+ def help(meth = nil, subcommand = false)
26
+ if meth && !self.respond_to?(meth)
27
+ klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
28
+ klass.start(["-h", task].compact, :shell => self.shell)
29
+ else
30
+ list = []
31
+ Thor::Util.thor_classes_in(Rocketwheel::Command::CLI).each do |klass|
32
+ list += klass.printable_tasks(false)
33
+ end
34
+ list.sort!{ |a,b| a[0] <=> b[0] }
35
+
36
+ shell.say "Tasks:"
37
+ shell.print_table(list, :ident => 2, :truncate => true)
38
+ shell.say
39
+ end
40
+ end
41
+
42
+ # Intercept missing methods and search subtasks for them
43
+ # @param [Symbol] meth
44
+ def method_missing(meth, *args)
45
+ meth = meth.to_s
46
+
47
+ if self.class.map.has_key?(meth)
48
+ meth = self.class.map[meth]
49
+ end
50
+
51
+ klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
52
+
53
+ if klass.nil?
54
+ tasks_dir = File.join(Dir.pwd, "tasks")
55
+
56
+ if File.exists?(tasks_dir)
57
+ Dir[File.join(tasks_dir, "**/*_task.rb")].each { |f| require f }
58
+ klass, task = Thor::Util.find_class_and_task_by_namespace("#{meth}:#{meth}")
59
+ end
60
+ end
61
+
62
+ if klass.nil?
63
+ raise Thor::Error.new "There's no '#{meth}' command. Try 'rocket help' for a list of commands."
64
+ else
65
+ args.unshift(task) if task
66
+ klass.start(args, :shell => self.shell)
67
+ end
68
+ end
69
+
70
+ protected
71
+
72
+ def manifest
73
+ @manifest ||= begin
74
+ file = File.join(File.expand_path('./'), self.class.filename)
75
+ raise Thor::Error, "No #{self.class.filename} file found" unless File.exists?(file)
76
+ Manifest.from_file(file)
77
+ end
78
+ end
79
+
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ require 'rocketwheel/command/cli/versions'
86
+ require 'rocketwheel/command/cli/new'
87
+ require 'rocketwheel/command/cli/build'
88
+ require 'rocketwheel/command/cli/encode'
89
+ require 'rocketwheel/command/cli/deploy'
@@ -0,0 +1,72 @@
1
+ require 'transloadit'
2
+ require 'open-uri'
3
+ require 'fileutils'
4
+ require 'net/http'
5
+
6
+ module Rocketwheel
7
+ module Command
8
+ class Encoder
9
+ def initialize(manifest)
10
+ @manifest = manifest
11
+ end
12
+
13
+ # Public: Starts an encoding job, sending the files to transloadit.
14
+ def encode(files)
15
+ files = files.map { |file| open(file) }
16
+ @response = transloadit.assembly(assembly).submit! *files
17
+ end
18
+
19
+ def encoded?
20
+ response.reload!
21
+ response.completed?
22
+ end
23
+
24
+ def store(destination)
25
+ response['results'].each do |name, result|
26
+ result.each do |result|
27
+ yield result if block_given?
28
+ folder = File.join(destination, name)
29
+ FileUtils.mkdir_p(folder)
30
+ filename = File.join(folder, result['name'])
31
+ download(result['url'], filename)
32
+ end
33
+ end
34
+ end
35
+
36
+ private
37
+ attr_accessor :root, :manifest, :response
38
+
39
+ def download(url, destination)
40
+ uri = URI.parse(url)
41
+ Net::HTTP.start(uri.host) do |http|
42
+ resp = http.get(uri.path)
43
+ File.open(destination, 'wb') { |f| f.write(resp.body) }
44
+ end
45
+ end
46
+
47
+ def transloadit
48
+ @transloadit ||= Transloadit.new(
49
+ :key => transloadit_config.key,
50
+ :secret => transloadit_config.secret
51
+ )
52
+ end
53
+
54
+ def transloadit_config
55
+ manifest.transloadit
56
+ end
57
+
58
+ def default_steps
59
+ YAML.load(File.read(File.join(Rocketwheel::Command.templates, 'transloadit.yml')))['steps']
60
+ end
61
+
62
+ def custom_steps
63
+ transloadit_config.steps
64
+ end
65
+
66
+ def assembly
67
+ { 'steps' => custom_steps || default_steps }
68
+ end
69
+
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,47 @@
1
+ require 'yaml'
2
+
3
+ module Rocketwheel
4
+ module Command
5
+ class Manifest
6
+ S3Config = Struct.new(:key, :secret, :bucket, :path)
7
+ TransloaditConfig = Struct.new(:key, :secret, :steps)
8
+
9
+ attr_accessor :content
10
+
11
+ def self.from_file(path)
12
+ new(YAML.load(File.open(path)))
13
+ end
14
+
15
+ def initialize(hash)
16
+ @content = hash
17
+ end
18
+
19
+ def version
20
+ @version ||= content.fetch('version', Player.latest_version)
21
+ end
22
+
23
+ def s3
24
+ @s3 ||= begin
25
+ config = content.fetch('s3', Hash.new)
26
+ S3Config.new(config['key'], config['secret'], config['bucket'], config['path'].to_s)
27
+ end
28
+ end
29
+
30
+ def playlist
31
+ @playlist = content.fetch('playlist', [])
32
+ end
33
+
34
+ def player_options
35
+ @player_options ||= content.fetch('player', Hash.new)
36
+ end
37
+
38
+ def transloadit
39
+ @transloadit ||= begin
40
+ config = content.fetch('transloadit', Hash.new)
41
+ TransloaditConfig.new(config['key'], config['secret'], config['steps'])
42
+ end
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,65 @@
1
+ require 'open-uri'
2
+ require 'net/http'
3
+ require 'zip/zip'
4
+ require 'fileutils'
5
+
6
+ module Rocketwheel
7
+ module Command
8
+ PlayerNotFound = Class.new(StandardError)
9
+
10
+ class Player
11
+ HOST = 'https://demoplayers.s3.amazonaws.com'
12
+
13
+ attr_reader :json
14
+
15
+ def initialize(json)
16
+ @json = json
17
+ end
18
+
19
+ def version
20
+ json['version']
21
+ end
22
+
23
+ def download_url
24
+ json['download']
25
+ end
26
+
27
+ def download_and_unzip(destination)
28
+ file = open(download_url)
29
+ Zip::ZipFile::open(file) do |zf|
30
+ zf.each do |e|
31
+ path = File.join(destination, e.to_s)
32
+ FileUtils.mkdir_p(File.dirname(path))
33
+ zf.extract(e, path) { true }
34
+ end
35
+ end
36
+ end
37
+
38
+ class << self
39
+ def json
40
+ @json ||= JSON.parse(open(File.join(HOST, 'versions.json')).read)
41
+ end
42
+
43
+ def all
44
+ versions.map { |p| self.new(p) }
45
+ end
46
+
47
+ def latest_version
48
+ json['latest']
49
+ end
50
+
51
+ def latest
52
+ version(latest_version)
53
+ end
54
+
55
+ def version(version)
56
+ all.find { |player| player.version.to_s == version.to_s } || raise(PlayerNotFound, "Version #{version} of the player was not found.")
57
+ end
58
+
59
+ def versions
60
+ json['versions']
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,5 @@
1
+ module Rocketwheel
2
+ module Command
3
+ VERSION = '1.0.0'
4
+ end
5
+ end
@@ -0,0 +1,17 @@
1
+ require 'fog'
2
+ require 'transloadit'
3
+
4
+ require 'rocketwheel/command/version'
5
+ require 'rocketwheel/command/manifest'
6
+
7
+ require 'rocketwheel/command/player'
8
+
9
+ module Rocketwheel
10
+ module Command
11
+ MANIFEST = 'Rocketfile.yml'
12
+
13
+ def self.templates
14
+ File.expand_path('../../../templates', __FILE__)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1 @@
1
+ require 'rocketwheel/command'
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rocketwheel/command/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'rocketwheel-command'
8
+ gem.version = Rocketwheel::Command::VERSION
9
+ gem.authors = ["Eric J. Holmes"]
10
+ gem.email = ["eric@ejholmes.net"]
11
+ gem.description = %q{Command line tool for encoding, building and deploying demo packages.}
12
+ gem.summary = %q{Command line tool for encoding, building and deploying demo packages.}
13
+ gem.homepage = "https://github.com/luminosity-group/rocketwheel-command"
14
+ gem.license = "MIT"
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+
21
+ gem.add_dependency 'thor', '~> 0.17.0'
22
+ gem.add_dependency 'transloadit', '~> 1.0.3'
23
+ gem.add_dependency 'fog', '~> 1.9.0'
24
+ gem.add_dependency 'rubyzip', '~> 0.9.9'
25
+ gem.add_dependency 'mime-types', '~> 1.21'
26
+
27
+ gem.add_development_dependency 'rake'
28
+ gem.add_development_dependency 'rspec'
29
+ end
@@ -0,0 +1,25 @@
1
+ version: 2.1.2
2
+
3
+ # s3:
4
+ # key: s3key
5
+ # secret: s3 secret
6
+ # bucket: s3 bucket
7
+ # path: path/to/s3/folder
8
+
9
+ # playlist:
10
+ # - image: 'images/video1.png'
11
+ # title: 'Title'
12
+ # description: 'Description'
13
+ # levels:
14
+ # - file: 'videos/mp4/video1.mp4'
15
+ # - file: 'videos/webm/video1.webm'
16
+
17
+ # player:
18
+ # autostart: false
19
+
20
+ # transloadit:
21
+ # key: transloadit key
22
+ # secret: transloadit secret
23
+ #
24
+ # # Custom transloadit steps
25
+ # steps:
@@ -0,0 +1,27 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>Title</title>
5
+ <link rel="stylesheet" href="demoplayer/stylesheets/player.css" type="text/css" media="screen">
6
+ <script src="demoplayer/javascripts/player.js" type="text/javascript"></script>
7
+ <meta name="viewport" content="width=880" />
8
+ <script type="text/javascript">
9
+ $(function() {
10
+ Player.setup({
11
+ playlist: <%= playlist.to_json %>,
12
+ jwplayer_options: <%= player_options.to_json %>
13
+ })
14
+ })
15
+ </script>
16
+ </head>
17
+ <body>
18
+ <div id="demoplayer-position">
19
+ <script type="text/x-handlebars">
20
+ {{#view Player.View styles="inline"}}
21
+ {{view Player.PlayerView}}
22
+ {{view Player.PlaylistView}}
23
+ {{/view}}
24
+ </script>
25
+ </div>
26
+ </body>
27
+ </html>
@@ -0,0 +1,16 @@
1
+ steps:
2
+ webm:
3
+ use: ":original"
4
+ robot: "/video/encode"
5
+ ffmpeg:
6
+ acodec: "libvorbis"
7
+ ab: "128k"
8
+ ar: "48k"
9
+ vcodec: "libvpx"
10
+ b: "1200k"
11
+ maxrate: "1200k"
12
+ bufsize: "1600k"
13
+ f: "webm"
14
+ r: 25
15
+ threads: 3
16
+ sameq: true
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rocketwheel-command
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric J. Holmes
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-14 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.17.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.17.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: transloadit
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.0.3
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.3
46
+ - !ruby/object:Gem::Dependency
47
+ name: fog
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.9.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.9.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: rubyzip
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.9.9
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.9.9
78
+ - !ruby/object:Gem::Dependency
79
+ name: mime-types
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '1.21'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '1.21'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rake
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ description: Command line tool for encoding, building and deploying demo packages.
127
+ email:
128
+ - eric@ejholmes.net
129
+ executables:
130
+ - rocket
131
+ extensions: []
132
+ extra_rdoc_files: []
133
+ files:
134
+ - .gitignore
135
+ - .rspec
136
+ - Gemfile
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - bin/rocket
141
+ - lib/rocketwheel-command.rb
142
+ - lib/rocketwheel/command.rb
143
+ - lib/rocketwheel/command/cli.rb
144
+ - lib/rocketwheel/command/cli/build.rb
145
+ - lib/rocketwheel/command/cli/deploy.rb
146
+ - lib/rocketwheel/command/cli/encode.rb
147
+ - lib/rocketwheel/command/cli/new.rb
148
+ - lib/rocketwheel/command/cli/versions.rb
149
+ - lib/rocketwheel/command/encoder.rb
150
+ - lib/rocketwheel/command/manifest.rb
151
+ - lib/rocketwheel/command/player.rb
152
+ - lib/rocketwheel/command/version.rb
153
+ - rocketwheel-command.gemspec
154
+ - templates/project/2.1.2/Rocketfile.yml
155
+ - templates/project/2.1.2/source/images/.empty_directory
156
+ - templates/project/2.1.2/source/index.html.tt
157
+ - templates/project/2.1.2/source/videos/.empty_directory
158
+ - templates/transloadit.yml
159
+ homepage: https://github.com/luminosity-group/rocketwheel-command
160
+ licenses:
161
+ - MIT
162
+ post_install_message:
163
+ rdoc_options: []
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ none: false
168
+ requirements:
169
+ - - ! '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
175
+ - - ! '>='
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ requirements: []
179
+ rubyforge_project:
180
+ rubygems_version: 1.8.23
181
+ signing_key:
182
+ specification_version: 3
183
+ summary: Command line tool for encoding, building and deploying demo packages.
184
+ test_files: []
185
+ has_rdoc: