tay 0.0.2
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 +18 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +135 -0
- data/Rakefile +6 -0
- data/bin/tay +15 -0
- data/lib/tay.rb +19 -0
- data/lib/tay/builder.rb +173 -0
- data/lib/tay/cli.rb +29 -0
- data/lib/tay/cli/build.rb +15 -0
- data/lib/tay/cli/generate.rb +73 -0
- data/lib/tay/cli/generators/browser_action.rb +20 -0
- data/lib/tay/cli/generators/content_script.rb +37 -0
- data/lib/tay/cli/generators/page_action.rb +19 -0
- data/lib/tay/cli/generators/templates/browser_action/action.css +4 -0
- data/lib/tay/cli/generators/templates/browser_action/action.html +11 -0
- data/lib/tay/cli/generators/templates/browser_action/action.js +5 -0
- data/lib/tay/cli/generators/templates/browser_action/tayfile +7 -0
- data/lib/tay/cli/generators/templates/content_script/content_script.css +6 -0
- data/lib/tay/cli/generators/templates/content_script/content_script.js +4 -0
- data/lib/tay/cli/generators/templates/content_script/tayfile +6 -0
- data/lib/tay/cli/generators/templates/page_action/controller.js +7 -0
- data/lib/tay/cli/generators/templates/page_action/icon.png +0 -0
- data/lib/tay/cli/generators/templates/page_action/tayfile +7 -0
- data/lib/tay/cli/helpers.rb +51 -0
- data/lib/tay/cli/minify.rb +44 -0
- data/lib/tay/cli/new.rb +37 -0
- data/lib/tay/cli/package.rb +41 -0
- data/lib/tay/cli/templates/Gemfile +30 -0
- data/lib/tay/cli/templates/Tayfile +22 -0
- data/lib/tay/cli/templates/gitignore +5 -0
- data/lib/tay/cli/validate.rb +21 -0
- data/lib/tay/cli/watch.rb +29 -0
- data/lib/tay/manifest_generator.rb +160 -0
- data/lib/tay/packager.rb +64 -0
- data/lib/tay/specification.rb +261 -0
- data/lib/tay/specification/action.rb +18 -0
- data/lib/tay/specification/browser_action.rb +10 -0
- data/lib/tay/specification/content_script.rb +41 -0
- data/lib/tay/specification/nacl_module.rb +18 -0
- data/lib/tay/specification/packaged_app.rb +33 -0
- data/lib/tay/specification/page_action.rb +10 -0
- data/lib/tay/specification/web_intent.rb +40 -0
- data/lib/tay/specification_validator.rb +167 -0
- data/lib/tay/utils.rb +21 -0
- data/lib/tay/version.rb +3 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/tay_spec.rb +5 -0
- data/tay.gemspec +26 -0
- metadata +215 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
module Tay
|
2
|
+
class Specification
|
3
|
+
##
|
4
|
+
# Action is a parent class shared between Tay::Specification::PageAction
|
5
|
+
# and Tay::Specification::BrowserAction.
|
6
|
+
class Action
|
7
|
+
##
|
8
|
+
# Path to the icon that is displayed in the browser
|
9
|
+
attr_accessor :icon
|
10
|
+
##
|
11
|
+
# Title that appears on mouseover
|
12
|
+
attr_accessor :title
|
13
|
+
##
|
14
|
+
# Path to the HTML file that is displayed when your action is clicked
|
15
|
+
attr_accessor :popup
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Tay
|
2
|
+
class Specification
|
3
|
+
##
|
4
|
+
# Represents a content script in your extension. For more information on
|
5
|
+
# valid values for attributes and pattern specications, check the docs.
|
6
|
+
#
|
7
|
+
# http://code.google.com/chrome/extensions/content_scripts.html
|
8
|
+
class ContentScript
|
9
|
+
##
|
10
|
+
# Specifies when to inject and run this content script.
|
11
|
+
attr_accessor :run_at
|
12
|
+
|
13
|
+
##
|
14
|
+
# Should this content script run in every frame on a page?
|
15
|
+
attr_accessor :all_frames
|
16
|
+
|
17
|
+
##
|
18
|
+
# An array of patterns to include this content script on
|
19
|
+
attr_accessor :include_patterns
|
20
|
+
|
21
|
+
##
|
22
|
+
# An array of patterns to exclude this content script on
|
23
|
+
attr_accessor :exclude_patterns
|
24
|
+
|
25
|
+
##
|
26
|
+
# An array of stylesheet paths to inject
|
27
|
+
attr_accessor :stylesheets
|
28
|
+
|
29
|
+
##
|
30
|
+
# An array of script paths to inject
|
31
|
+
attr_accessor :javascripts
|
32
|
+
|
33
|
+
def initialize
|
34
|
+
@include_patterns = []
|
35
|
+
@exclude_patterns = []
|
36
|
+
@javascripts = []
|
37
|
+
@stylesheets = []
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Tay
|
2
|
+
class Specification
|
3
|
+
##
|
4
|
+
# Used to map a mime-type to a native client module
|
5
|
+
#
|
6
|
+
# * http://code.google.com/chrome/extensions/manifest.html#nacl_modules
|
7
|
+
# * http://code.google.com/chrome/nativeclient/docs/technical_overview.html
|
8
|
+
class NaClModule
|
9
|
+
##
|
10
|
+
# Path to the .nmf file for your module
|
11
|
+
attr_accessor :path
|
12
|
+
|
13
|
+
##
|
14
|
+
# The mime-type that will load your module
|
15
|
+
attr_accessor :mime_type
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Tay
|
2
|
+
class Specification
|
3
|
+
##
|
4
|
+
# A packaged app is included on the user's New Tab screen. They cannot have
|
5
|
+
# page or browser actions.
|
6
|
+
#
|
7
|
+
# http://code.google.com/chrome/extensions/apps.html
|
8
|
+
class PackagedApp
|
9
|
+
##
|
10
|
+
# When your app is launched, this is the path to the HTML file that will
|
11
|
+
# be loaded
|
12
|
+
attr_accessor :page
|
13
|
+
|
14
|
+
attr_reader :container
|
15
|
+
attr_reader :width, :height
|
16
|
+
|
17
|
+
##
|
18
|
+
# If you app should appear in its own panel, call this method, supplying
|
19
|
+
# the width and height of said panel
|
20
|
+
def appears_in_panel(width, height)
|
21
|
+
@container = 'panel'
|
22
|
+
@width = width
|
23
|
+
@height = height
|
24
|
+
end
|
25
|
+
|
26
|
+
##
|
27
|
+
# If you app should appear in a standard tab (default) call this method.
|
28
|
+
def appears_in_tab
|
29
|
+
@container = 'tab'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Tay
|
2
|
+
class Specification
|
3
|
+
##
|
4
|
+
# Represents a web intent that your extension provides. For more info
|
5
|
+
# check the Google Chrome extension docs, and spec at the URLs below.
|
6
|
+
#
|
7
|
+
# * http://code.google.com/chrome/extensions/manifest.html#intents
|
8
|
+
# * http://www.webintents.org/
|
9
|
+
class WebIntent
|
10
|
+
##
|
11
|
+
# The "title" is displayed in the intent picker UI when the user
|
12
|
+
# initiates the action specific to the handler.
|
13
|
+
attr_accessor :action
|
14
|
+
|
15
|
+
##
|
16
|
+
# The "title" is displayed in the intent picker UI when the user
|
17
|
+
# initiates the action specific to the handler.
|
18
|
+
attr_accessor :title
|
19
|
+
|
20
|
+
##
|
21
|
+
# The "title" is displayed in the intent picker UI when the user
|
22
|
+
# initiates the action specific to the handler.
|
23
|
+
attr_accessor :href
|
24
|
+
|
25
|
+
##
|
26
|
+
# Intents with "window" disposition will open a new tab when invoked,
|
27
|
+
# those with "inline" disposition will be displayed inside the intent
|
28
|
+
# picker when invoked.
|
29
|
+
attr_accessor :disposition
|
30
|
+
|
31
|
+
##
|
32
|
+
# An array of mime types that your intent can act upon
|
33
|
+
attr_accessor :types
|
34
|
+
|
35
|
+
def initialize
|
36
|
+
@types = []
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
module Tay
|
2
|
+
##
|
3
|
+
# Takes a Tay::Specification and does sanity checks for missing required
|
4
|
+
# fields. It also looks for common mistakes and mutually exclusive flags.
|
5
|
+
#
|
6
|
+
# If the output directory is supplied (referencing the compiled extension),
|
7
|
+
# the existence of files referenced in the specification will also be checked
|
8
|
+
# for their presence.
|
9
|
+
class SpecificationValidator
|
10
|
+
##
|
11
|
+
# Pointer to the relevant Tay::Specification
|
12
|
+
attr_reader :spec
|
13
|
+
|
14
|
+
##
|
15
|
+
# If true (default) throw an exception on error
|
16
|
+
attr_accessor :violent
|
17
|
+
|
18
|
+
##
|
19
|
+
# A proc object that will be called on each message with the type and msg
|
20
|
+
attr_accessor :on_message
|
21
|
+
|
22
|
+
attr_reader :warnings
|
23
|
+
attr_reader :errors
|
24
|
+
|
25
|
+
##
|
26
|
+
# Convenience method to validate a specification. Creates a validator and
|
27
|
+
# runs it. Will throw an exception if invalid.
|
28
|
+
def self.validate(specification, output_directory = nil)
|
29
|
+
validator = SpecificationValidator.new(specification, output_directory)
|
30
|
+
validator.violent = true
|
31
|
+
validator.validate!
|
32
|
+
end
|
33
|
+
|
34
|
+
def initialize(specification, output_directory = nil)
|
35
|
+
@spec = specification
|
36
|
+
@out = output_directory ? Pathname.new(output_directory) : nil
|
37
|
+
@errors = []
|
38
|
+
@warnings = []
|
39
|
+
end
|
40
|
+
|
41
|
+
##
|
42
|
+
# Facade method to call the private validation methods. Will return true if
|
43
|
+
# there were no warnings or errors
|
44
|
+
def validate!
|
45
|
+
validate_name
|
46
|
+
validate_version
|
47
|
+
validate_icons
|
48
|
+
validate_description
|
49
|
+
|
50
|
+
check_for_browser_ui_collisions
|
51
|
+
|
52
|
+
check_file_presence if @out
|
53
|
+
|
54
|
+
@warnings.empty? && @errors.empty?
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
##
|
60
|
+
# Go through the specification checking that files that are pointed to
|
61
|
+
# actually exist
|
62
|
+
def check_file_presence
|
63
|
+
spec.icons.values.each do |path|
|
64
|
+
fail_if_not_exist "Icon", path
|
65
|
+
end
|
66
|
+
|
67
|
+
if spec.browser_action
|
68
|
+
fail_if_not_exist "Browser action popup", spec.browser_action.popup
|
69
|
+
fail_if_not_exist "Browser action icon", spec.browser_action.icon
|
70
|
+
end
|
71
|
+
|
72
|
+
if spec.page_action
|
73
|
+
fail_if_not_exist "Page action popup", spec.page_action.popup
|
74
|
+
fail_if_not_exist "Page action icon", spec.page_action.icon
|
75
|
+
end
|
76
|
+
|
77
|
+
if spec.packaged_app
|
78
|
+
fail_if_not_exist "App launch page", spec.packaged_app.page
|
79
|
+
end
|
80
|
+
|
81
|
+
spec.content_scripts.each do |content_script|
|
82
|
+
content_script.javascripts.each do |script_path|
|
83
|
+
fail_if_not_exist "Content script javascript", script_path
|
84
|
+
end
|
85
|
+
content_script.stylesheets.each do |style_path|
|
86
|
+
fail_if_not_exist "Content script style", style_path
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
spec.background_scripts.each do |script_path|
|
91
|
+
fail_if_not_exist "Background script style", script_path
|
92
|
+
end
|
93
|
+
|
94
|
+
fail_if_not_exist "Background page", spec.background_page
|
95
|
+
fail_if_not_exist "Options page", spec.options_page
|
96
|
+
|
97
|
+
spec.web_intents.each do |web_intent|
|
98
|
+
fail_if_not_exist "Web intent href", web_intent.href
|
99
|
+
end
|
100
|
+
|
101
|
+
spec.nacl_modules.each do |nacl_module|
|
102
|
+
fail_if_not_exist "NaCl module", nacl_module.path
|
103
|
+
end
|
104
|
+
|
105
|
+
spec.web_accessible_resources.each do |path|
|
106
|
+
fail_if_not_exist "Web accessible resource", path
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def validate_name
|
111
|
+
fatal("No name provided") unless spec.name
|
112
|
+
fatal("Name too long") if spec.name.length > 45
|
113
|
+
end
|
114
|
+
|
115
|
+
def validate_version
|
116
|
+
fatal("No version provided") unless spec.version
|
117
|
+
fatal("Invalid characters in version") if spec.version[/[^0-9\.]/]
|
118
|
+
end
|
119
|
+
|
120
|
+
def validate_icons
|
121
|
+
warn("No icons provided") if spec.icons.keys.empty?
|
122
|
+
end
|
123
|
+
|
124
|
+
def validate_description
|
125
|
+
fatal("Description too long") if spec.description && spec.description.length > 132
|
126
|
+
end
|
127
|
+
|
128
|
+
def check_for_browser_ui_collisions
|
129
|
+
count = 0
|
130
|
+
count += 1 if spec.packaged_app
|
131
|
+
count += 1 if spec.page_action
|
132
|
+
count += 1 if spec.browser_action
|
133
|
+
|
134
|
+
if count > 1
|
135
|
+
fatal('Only one of browser_action, page_action, and packaged app can be specified')
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
def check_for_background_collisions
|
140
|
+
if spec.background_page && spec.background_scripts.length > 0
|
141
|
+
fatal("You cannot use both background pages and background scripts")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
private
|
146
|
+
|
147
|
+
def fatal(msg)
|
148
|
+
@errors << msg
|
149
|
+
unless on_message.nil?
|
150
|
+
on_message.call('fatal', msg)
|
151
|
+
end
|
152
|
+
raise Tay::InvalidSpecification.new if violent
|
153
|
+
end
|
154
|
+
|
155
|
+
def warn(msg)
|
156
|
+
@warnings << msg
|
157
|
+
unless on_message.nil?
|
158
|
+
on_message.call('warn', msg)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def fail_if_not_exist(what, path)
|
163
|
+
fatal("#{what} does not exist at '#{path}'") unless !path || @out.join(path).exist?
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
data/lib/tay/utils.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Tay
|
2
|
+
##
|
3
|
+
# Simple helpers used across various classes
|
4
|
+
class Utils
|
5
|
+
##
|
6
|
+
# Convert an extension name to a filesystem friendly name
|
7
|
+
def self.filesystem_name(name)
|
8
|
+
name.gsub(/[^a-zA-Z0-9\-_ ]/, '').gsub(/ /, '_').downcase
|
9
|
+
end
|
10
|
+
|
11
|
+
##
|
12
|
+
# Convert a path to be relative to pwd
|
13
|
+
def self.relative_path_to(path)
|
14
|
+
if path.is_a?(String)
|
15
|
+
path = Pathname.new(path)
|
16
|
+
end
|
17
|
+
path.relative_path_from(Pathname.new(Dir.pwd))
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/lib/tay/version.rb
ADDED
data/spec/spec_helper.rb
ADDED
data/spec/tay_spec.rb
ADDED
data/tay.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/tay/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Thomas Rix"]
|
6
|
+
gem.email = ["tom@rixth.org"]
|
7
|
+
gem.summary = %q{Tay helps you develop Chrome extensions}
|
8
|
+
gem.description = gem.summary
|
9
|
+
gem.homepage = "https://github.com/rixth/tay"
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "tay"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = Tay::VERSION
|
17
|
+
|
18
|
+
gem.add_dependency 'thor'
|
19
|
+
gem.add_dependency 'tilt'
|
20
|
+
gem.add_dependency 'sprockets'
|
21
|
+
gem.add_dependency 'crxmake'
|
22
|
+
|
23
|
+
gem.add_development_dependency 'rspec'
|
24
|
+
gem.add_development_dependency 'sdoc'
|
25
|
+
gem.add_development_dependency 'rake'
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,215 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tay
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Thomas Rix
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-05-25 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'
|
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'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: tilt
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
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: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: sprockets
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '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: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: crxmake
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
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'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rspec
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: sdoc
|
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: rake
|
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: Tay helps you develop Chrome extensions
|
127
|
+
email:
|
128
|
+
- tom@rixth.org
|
129
|
+
executables:
|
130
|
+
- tay
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- .gitignore
|
135
|
+
- Gemfile
|
136
|
+
- LICENSE
|
137
|
+
- README.md
|
138
|
+
- Rakefile
|
139
|
+
- bin/tay
|
140
|
+
- lib/tay.rb
|
141
|
+
- lib/tay/builder.rb
|
142
|
+
- lib/tay/cli.rb
|
143
|
+
- lib/tay/cli/build.rb
|
144
|
+
- lib/tay/cli/generate.rb
|
145
|
+
- lib/tay/cli/generators/browser_action.rb
|
146
|
+
- lib/tay/cli/generators/content_script.rb
|
147
|
+
- lib/tay/cli/generators/page_action.rb
|
148
|
+
- lib/tay/cli/generators/templates/browser_action/action.css
|
149
|
+
- lib/tay/cli/generators/templates/browser_action/action.html
|
150
|
+
- lib/tay/cli/generators/templates/browser_action/action.js
|
151
|
+
- lib/tay/cli/generators/templates/browser_action/tayfile
|
152
|
+
- lib/tay/cli/generators/templates/content_script/content_script.css
|
153
|
+
- lib/tay/cli/generators/templates/content_script/content_script.js
|
154
|
+
- lib/tay/cli/generators/templates/content_script/tayfile
|
155
|
+
- lib/tay/cli/generators/templates/page_action/controller.js
|
156
|
+
- lib/tay/cli/generators/templates/page_action/icon.png
|
157
|
+
- lib/tay/cli/generators/templates/page_action/tayfile
|
158
|
+
- lib/tay/cli/helpers.rb
|
159
|
+
- lib/tay/cli/minify.rb
|
160
|
+
- lib/tay/cli/new.rb
|
161
|
+
- lib/tay/cli/package.rb
|
162
|
+
- lib/tay/cli/templates/Gemfile
|
163
|
+
- lib/tay/cli/templates/Tayfile
|
164
|
+
- lib/tay/cli/templates/gitignore
|
165
|
+
- lib/tay/cli/validate.rb
|
166
|
+
- lib/tay/cli/watch.rb
|
167
|
+
- lib/tay/manifest_generator.rb
|
168
|
+
- lib/tay/packager.rb
|
169
|
+
- lib/tay/specification.rb
|
170
|
+
- lib/tay/specification/action.rb
|
171
|
+
- lib/tay/specification/browser_action.rb
|
172
|
+
- lib/tay/specification/content_script.rb
|
173
|
+
- lib/tay/specification/nacl_module.rb
|
174
|
+
- lib/tay/specification/packaged_app.rb
|
175
|
+
- lib/tay/specification/page_action.rb
|
176
|
+
- lib/tay/specification/web_intent.rb
|
177
|
+
- lib/tay/specification_validator.rb
|
178
|
+
- lib/tay/utils.rb
|
179
|
+
- lib/tay/version.rb
|
180
|
+
- spec/spec_helper.rb
|
181
|
+
- spec/tay_spec.rb
|
182
|
+
- tay.gemspec
|
183
|
+
homepage: https://github.com/rixth/tay
|
184
|
+
licenses: []
|
185
|
+
post_install_message:
|
186
|
+
rdoc_options: []
|
187
|
+
require_paths:
|
188
|
+
- lib
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
190
|
+
none: false
|
191
|
+
requirements:
|
192
|
+
- - ! '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
segments:
|
196
|
+
- 0
|
197
|
+
hash: -81594321510644905
|
198
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
|
+
none: false
|
200
|
+
requirements:
|
201
|
+
- - ! '>='
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
segments:
|
205
|
+
- 0
|
206
|
+
hash: -81594321510644905
|
207
|
+
requirements: []
|
208
|
+
rubyforge_project:
|
209
|
+
rubygems_version: 1.8.24
|
210
|
+
signing_key:
|
211
|
+
specification_version: 3
|
212
|
+
summary: Tay helps you develop Chrome extensions
|
213
|
+
test_files:
|
214
|
+
- spec/spec_helper.rb
|
215
|
+
- spec/tay_spec.rb
|