youpy-newextension 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +14 -7
- data/PostInstall.txt +0 -0
- data/{README.txt → README.rdoc} +0 -0
- data/Rakefile +1 -1
- data/app_generators/newextension/USAGE +5 -0
- data/app_generators/newextension/newextension_generator.rb +83 -0
- data/{templates → app_generators/newextension/templates}/Rakefile +0 -0
- data/app_generators/newextension/templates/chrome/content/__extension__.js +2 -0
- data/app_generators/newextension/templates/chrome/content/overlay.xul +8 -0
- data/app_generators/newextension/templates/chrome.manifest +3 -0
- data/{templates → app_generators/newextension/templates}/install.rdf +5 -5
- data/bin/newextension +12 -75
- data/bin/newextension.orig +80 -0
- data/config/hoe.rb +13 -13
- data/lib/newextension/version.rb +2 -2
- data/lib/newextension.rb +2 -1
- data/newextension.gemspec +41 -0
- data/script/console +10 -0
- data/script/destroy +2 -2
- data/script/generate +2 -2
- data/tasks/deployment.rake +7 -0
- data/tasks/website.rake +15 -7
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +0 -15
- data/test/test_newextension.rb +5 -37
- data/test/test_newextension_generator.rb +48 -0
- metadata +43 -14
- data/templates/chrome/content/__extension__.js +0 -2
- data/templates/chrome/content/overlay.xul +0 -8
- data/templates/chrome.manifest +0 -3
data/Manifest.txt
CHANGED
@@ -1,24 +1,31 @@
|
|
1
1
|
History.txt
|
2
2
|
License.txt
|
3
3
|
Manifest.txt
|
4
|
-
|
4
|
+
PostInstall.txt
|
5
|
+
README.rdoc
|
5
6
|
Rakefile
|
7
|
+
app_generators/newextension/USAGE
|
8
|
+
app_generators/newextension/newextension_generator.rb
|
9
|
+
app_generators/newextension/templates/Rakefile
|
10
|
+
app_generators/newextension/templates/chrome.manifest
|
11
|
+
app_generators/newextension/templates/chrome/content/__extension__.js
|
12
|
+
app_generators/newextension/templates/chrome/content/overlay.xul
|
13
|
+
app_generators/newextension/templates/install.rdf
|
6
14
|
bin/newextension
|
15
|
+
bin/newextension.orig
|
7
16
|
config/hoe.rb
|
8
17
|
config/requirements.rb
|
9
18
|
lib/newextension.rb
|
10
19
|
lib/newextension/version.rb
|
20
|
+
newextension.gemspec
|
21
|
+
script/console
|
11
22
|
script/destroy
|
12
23
|
script/generate
|
13
24
|
setup.rb
|
14
25
|
tasks/deployment.rake
|
15
26
|
tasks/environment.rake
|
16
27
|
tasks/website.rake
|
17
|
-
|
18
|
-
templates/chrome/content/overlay.xul
|
19
|
-
templates/chrome/skin
|
20
|
-
templates/chrome.manifest
|
21
|
-
templates/install.rdf
|
22
|
-
templates/Rakefile
|
28
|
+
test/test_generator_helper.rb
|
23
29
|
test/test_helper.rb
|
24
30
|
test/test_newextension.rb
|
31
|
+
test/test_newextension_generator.rb
|
data/PostInstall.txt
ADDED
File without changes
|
data/{README.txt → README.rdoc}
RENAMED
File without changes
|
data/Rakefile
CHANGED
@@ -0,0 +1,83 @@
|
|
1
|
+
begin
|
2
|
+
require 'rubygems'
|
3
|
+
rescue LoadError
|
4
|
+
# no rubygems to load, so we fail silently
|
5
|
+
end
|
6
|
+
require 'uuidtools'
|
7
|
+
|
8
|
+
class NewextensionGenerator < RubiGen::Base
|
9
|
+
|
10
|
+
DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
|
11
|
+
Config::CONFIG['ruby_install_name'])
|
12
|
+
|
13
|
+
default_options :author => "FIXME author",
|
14
|
+
:description => "FIXME Description about this extension",
|
15
|
+
:version => "0.0.1"
|
16
|
+
|
17
|
+
attr_reader :name, :author, :package_name, :description, :extension_name, :uuid, :version
|
18
|
+
|
19
|
+
def initialize(runtime_args, runtime_options = {})
|
20
|
+
super
|
21
|
+
usage if args.empty?
|
22
|
+
@destination_root = File.expand_path(args.shift)
|
23
|
+
@name = base_name
|
24
|
+
@extension_name = @name
|
25
|
+
@package_name = @extension_name.downcase.gsub(/[^a-z]/, '')
|
26
|
+
@uuid = UUID.random_create.to_s
|
27
|
+
extract_options
|
28
|
+
end
|
29
|
+
|
30
|
+
def manifest
|
31
|
+
record do |m|
|
32
|
+
# Ensure appropriate folder(s) exists
|
33
|
+
m.directory ''
|
34
|
+
BASEDIRS.each { |path| m.directory path }
|
35
|
+
|
36
|
+
# Create stubs
|
37
|
+
m.template_copy_each %w[chrome.manifest Rakefile install.rdf]
|
38
|
+
m.template_copy_each %w[overlay.xul], "chrome/content"
|
39
|
+
m.template "chrome/content/__extension__.js", "chrome/content/#{package_name.camelize}.js"
|
40
|
+
|
41
|
+
m.dependency "install_rubigen_scripts", [destination_root, 'newextension'],
|
42
|
+
:shebang => options[:shebang], :collision => :force
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
def banner
|
48
|
+
<<-EOS
|
49
|
+
Creates a ...
|
50
|
+
|
51
|
+
USAGE: #{spec.name} name
|
52
|
+
EOS
|
53
|
+
end
|
54
|
+
|
55
|
+
def add_options!(opts)
|
56
|
+
opts.separator ''
|
57
|
+
opts.separator 'Options:'
|
58
|
+
# For each option below, place the default
|
59
|
+
# at the top of the file next to "default_options"
|
60
|
+
opts.on("-a", "--author=\"Your Name\"", String,
|
61
|
+
"The extension author's name",
|
62
|
+
"Default: none") { |x| options[:author] = x }
|
63
|
+
opts.on("-d", "--description=\"This extension does...\"", String,
|
64
|
+
"The description of the extension",
|
65
|
+
"Default: none") { |x| options[:description] = x }
|
66
|
+
opts.on("-v", "Show the #{File.basename($0)} version number and quit.")
|
67
|
+
opts.on("-V", "--version=VERSION", String,
|
68
|
+
"The version of new extension",
|
69
|
+
"Default: #{options[:version]}") { |x| options[:version] = x }
|
70
|
+
end
|
71
|
+
|
72
|
+
def extract_options
|
73
|
+
@author = options[:author]
|
74
|
+
@version = options[:version]
|
75
|
+
@description = options[:description]
|
76
|
+
end
|
77
|
+
|
78
|
+
# Installation skeleton. Intermediate directories are automatically
|
79
|
+
# created so don't sweat their absence here.
|
80
|
+
BASEDIRS = %w(
|
81
|
+
chrome/content
|
82
|
+
)
|
83
|
+
end
|
File without changes
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<?xml version="1.0" ?>
|
2
|
+
<overlay id="<%= extension_name.camelize %>Overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
3
|
+
<script type="application/x-javascript"
|
4
|
+
src="chrome://<%= package_name %>/content/<%= extension_name.camelize %>.js" />
|
5
|
+
<menupopup id="menu_ToolsPopup">
|
6
|
+
<menuitem label='<%= extension_name %>' oncommand='alert("hello. this is <%= extension_name %>")'/>
|
7
|
+
</menupopup>
|
8
|
+
</overlay>
|
@@ -2,12 +2,12 @@
|
|
2
2
|
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
3
3
|
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
4
4
|
<Description about="urn:mozilla:install-manifest">
|
5
|
-
<em:id>{<%=uuid%>}</em:id>
|
6
|
-
<em:name><%=camelize
|
7
|
-
<em:version><%=version%></em:version>
|
5
|
+
<em:id>{<%= uuid %>}</em:id>
|
6
|
+
<em:name><%= extension_name.camelize %></em:name>
|
7
|
+
<em:version><%= version %></em:version>
|
8
8
|
<em:type>2</em:type>
|
9
|
-
<em:description
|
10
|
-
<em:creator><%=author%></em:creator>
|
9
|
+
<em:description><%= description %></em:description>
|
10
|
+
<em:creator><%= author %></em:creator>
|
11
11
|
<em:targetApplication>
|
12
12
|
<Description>
|
13
13
|
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
|
data/bin/newextension
CHANGED
@@ -1,80 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
#
|
3
|
-
# Created on 2007-9-27.
|
4
|
-
# Copyright (c) 2007. All rights reserved.
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
rescue LoadError
|
9
|
-
# no rubygems to load, so we fail silently
|
10
|
-
end
|
11
|
-
|
12
|
-
require 'optparse'
|
13
|
-
require 'pathname'
|
14
|
-
require 'fileutils'
|
15
|
-
require 'uuidtools'
|
16
|
-
require 'erb'
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rubigen'
|
17
5
|
|
18
|
-
include
|
19
|
-
|
20
|
-
|
21
|
-
|
6
|
+
if %w(-v --version).include? ARGV.first
|
7
|
+
require 'newextension/version'
|
8
|
+
puts "#{File.basename($0)} #{Newextension::VERSION::STRING}"
|
9
|
+
exit(0)
|
22
10
|
end
|
23
11
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
extension_dir = nil
|
31
|
-
|
32
|
-
parser = OptionParser.new do |opts|
|
33
|
-
opts.banner = <<BANNER
|
34
|
-
#{File.basename($0)}: create a Firefox extension skeleton
|
35
|
-
|
36
|
-
Usage: #{File.basename($0)} [options] extension_dir
|
37
|
-
|
38
|
-
Options are:
|
39
|
-
BANNER
|
40
|
-
opts.separator ""
|
41
|
-
opts.on("-a", "--author=AUTHOR", String,
|
42
|
-
"The author of new extension",
|
43
|
-
"Default: #{OPTIONS[:author]}") { |OPTIONS[:author]| }
|
44
|
-
opts.on("-V", "--version=VERSION", String,
|
45
|
-
"The version of new extension",
|
46
|
-
"Default: #{OPTIONS[:version]}") { |OPTIONS[:version]| }
|
47
|
-
opts.on("-h", "--help",
|
48
|
-
"Show this help message.") { puts opts; exit }
|
49
|
-
opts.parse!(ARGV)
|
50
|
-
|
51
|
-
extension_dir = Pathname.new(ARGV.shift).expand_path
|
52
|
-
|
53
|
-
if MANDATORY_OPTIONS && MANDATORY_OPTIONS.find { |option| OPTIONS[option.to_sym].nil? }
|
54
|
-
puts opts; exit
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
author = OPTIONS[:author]
|
59
|
-
version = OPTIONS[:version]
|
60
|
-
uuid = UUID.random_create.to_s
|
61
|
-
|
62
|
-
templates = Pathname.new(File.dirname(__FILE__)).realpath + '../templates'
|
63
|
-
extension_name = extension_dir.basename.to_s
|
64
|
-
package_name = extension_name.downcase.gsub(/[^a-z]/, '')
|
65
|
-
|
66
|
-
cd templates do
|
67
|
-
Pathname.glob('**/*').each do |filename|
|
68
|
-
target = Pathname.new([extension_dir, filename].join('/')).expand_path
|
69
|
-
|
70
|
-
if File.directory?(filename)
|
71
|
-
mkdir_p target
|
72
|
-
puts "create directory:\n\t#{target}"
|
73
|
-
else
|
74
|
-
open(target.to_s.gsub(/__extension__/, camelize(extension_name)), 'w') do |dst|
|
75
|
-
dst.write(ERB.new(filename.read, $SAFE, '-').result(binding))
|
76
|
-
puts "create: #{dst.path}"
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
12
|
+
require 'rubigen/scripts/generate'
|
13
|
+
source = RubiGen::PathSource.new(:application,
|
14
|
+
File.join(File.dirname(__FILE__), "../app_generators"))
|
15
|
+
RubiGen::Base.reset_sources
|
16
|
+
RubiGen::Base.append_sources source
|
17
|
+
RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'newextension')
|
@@ -0,0 +1,80 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created on 2007-9-27.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
begin
|
7
|
+
require 'rubygems'
|
8
|
+
rescue LoadError
|
9
|
+
# no rubygems to load, so we fail silently
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'optparse'
|
13
|
+
require 'pathname'
|
14
|
+
require 'fileutils'
|
15
|
+
require 'uuidtools'
|
16
|
+
require 'erb'
|
17
|
+
|
18
|
+
include FileUtils
|
19
|
+
|
20
|
+
def camelize(lower_case_and_underscored_word)
|
21
|
+
lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
|
22
|
+
end
|
23
|
+
|
24
|
+
OPTIONS = {
|
25
|
+
:author => 'somebody',
|
26
|
+
:version => '0.1',
|
27
|
+
}
|
28
|
+
MANDATORY_OPTIONS = %w( )
|
29
|
+
|
30
|
+
extension_dir = nil
|
31
|
+
|
32
|
+
parser = OptionParser.new do |opts|
|
33
|
+
opts.banner = <<BANNER
|
34
|
+
#{File.basename($0)}: create a Firefox extension skeleton
|
35
|
+
|
36
|
+
Usage: #{File.basename($0)} [options] extension_dir
|
37
|
+
|
38
|
+
Options are:
|
39
|
+
BANNER
|
40
|
+
opts.separator ""
|
41
|
+
opts.on("-a", "--author=AUTHOR", String,
|
42
|
+
"The author of new extension",
|
43
|
+
"Default: #{OPTIONS[:author]}") { |OPTIONS[:author]| }
|
44
|
+
opts.on("-V", "--version=VERSION", String,
|
45
|
+
"The version of new extension",
|
46
|
+
"Default: #{OPTIONS[:version]}") { |OPTIONS[:version]| }
|
47
|
+
opts.on("-h", "--help",
|
48
|
+
"Show this help message.") { puts opts; exit }
|
49
|
+
opts.parse!(ARGV)
|
50
|
+
|
51
|
+
extension_dir = Pathname.new(ARGV.shift).expand_path
|
52
|
+
|
53
|
+
if MANDATORY_OPTIONS && MANDATORY_OPTIONS.find { |option| OPTIONS[option.to_sym].nil? }
|
54
|
+
puts opts; exit
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
author = OPTIONS[:author]
|
59
|
+
version = OPTIONS[:version]
|
60
|
+
uuid = UUID.random_create.to_s
|
61
|
+
|
62
|
+
templates = Pathname.new(File.dirname(__FILE__)).realpath + '../templates'
|
63
|
+
extension_name = extension_dir.basename.to_s
|
64
|
+
package_name = extension_name.downcase.gsub(/[^a-z]/, '')
|
65
|
+
|
66
|
+
cd templates do
|
67
|
+
Pathname.glob('**/*').each do |filename|
|
68
|
+
target = Pathname.new([extension_dir, filename].join('/')).expand_path
|
69
|
+
|
70
|
+
if File.directory?(filename)
|
71
|
+
mkdir_p target
|
72
|
+
puts "create directory:\n\t#{target}"
|
73
|
+
else
|
74
|
+
open(target.to_s.gsub(/__extension__/, camelize(extension_name)), 'w') do |dst|
|
75
|
+
dst.write(ERB.new(filename.read, $SAFE, '-').result(binding))
|
76
|
+
puts "create: #{dst.path}"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/config/hoe.rb
CHANGED
@@ -7,6 +7,10 @@ GEM_NAME = 'newextension' # what ppl will type to install your gem
|
|
7
7
|
RUBYFORGE_PROJECT = 'newextension' # The unix name for your project
|
8
8
|
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
9
9
|
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
10
|
+
EXTRA_DEPENDENCIES = [
|
11
|
+
['uuidtools', '>= 1.0.3'],
|
12
|
+
['rubigen', '>= 1.3.2']
|
13
|
+
] # An array of rubygem dependencies [name, version]
|
10
14
|
|
11
15
|
@config_file = "~/.rubyforge/user-config.yml"
|
12
16
|
@config = nil
|
@@ -28,10 +32,7 @@ Run 'rubyforge setup' to prepare your env for access to Rubyforge
|
|
28
32
|
end
|
29
33
|
|
30
34
|
|
31
|
-
|
32
|
-
# UNCOMMENT IF REQUIRED:
|
33
|
-
# REV = `svn info`.each {|line| if line =~ /^Revision:/ then k,v = line.split(': '); break v.chomp; else next; end} rescue nil
|
34
|
-
VERS = Newextension::VERSION::STRING + (REV ? ".#{REV}" : "")
|
35
|
+
VERS = Newextension::VERSION::STRING
|
35
36
|
RDOC_OPTS = ['--quiet', '--title', 'newextension documentation',
|
36
37
|
"--opname", "index.html",
|
37
38
|
"--line-numbers",
|
@@ -47,25 +48,24 @@ end
|
|
47
48
|
|
48
49
|
# Generate all the Rake tasks
|
49
50
|
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
50
|
-
hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
51
|
-
p.
|
51
|
+
$hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
52
|
+
p.developer(AUTHOR, EMAIL)
|
52
53
|
p.description = DESCRIPTION
|
53
|
-
p.email = EMAIL
|
54
54
|
p.summary = DESCRIPTION
|
55
55
|
p.url = HOMEPATH
|
56
56
|
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
57
|
-
p.extra_deps << ['uuidtools']
|
58
57
|
p.test_globs = ["test/**/test_*.rb"]
|
59
58
|
p.clean_globs |= ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store'] #An array of file patterns to delete on clean.
|
60
59
|
|
61
60
|
# == Optional
|
62
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("
|
63
|
-
|
61
|
+
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
62
|
+
p.extra_deps = EXTRA_DEPENDENCIES
|
64
63
|
|
65
64
|
#p.spec_extras = {} # A hash of extra values to set in the gemspec.
|
66
|
-
|
67
65
|
end
|
68
66
|
|
69
|
-
CHANGES = hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
|
67
|
+
CHANGES = $hoe.paragraphs_of('History.txt', 0..1).join("\\n\\n")
|
70
68
|
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "#{RUBYFORGE_PROJECT}/#{GEM_NAME}"
|
71
|
-
hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
69
|
+
$hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
70
|
+
$hoe.rsync_args = '-av --delete --ignore-errors'
|
71
|
+
$hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
|
data/lib/newextension/version.rb
CHANGED
data/lib/newextension.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{newextension}
|
3
|
+
s.version = "0.1.0"
|
4
|
+
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
6
|
+
s.authors = ["youpy"]
|
7
|
+
s.date = %q{2008-08-21}
|
8
|
+
s.description = %q{Create a Firefox extension skeleton}
|
9
|
+
s.email = ["youpy@buycheapviagraonlinenow.com"]
|
10
|
+
s.executables = ["newextension", "newextension.orig"]
|
11
|
+
s.extra_rdoc_files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt"]
|
12
|
+
s.files = ["History.txt", "License.txt", "Manifest.txt", "PostInstall.txt", "README.rdoc", "Rakefile", "app_generators/newextension/USAGE", "app_generators/newextension/newextension_generator.rb", "app_generators/newextension/templates/Rakefile", "app_generators/newextension/templates/chrome.manifest", "app_generators/newextension/templates/chrome/content/__extension__.js", "app_generators/newextension/templates/chrome/content/overlay.xul", "app_generators/newextension/templates/install.rdf", "bin/newextension", "bin/newextension.orig", "config/hoe.rb", "config/requirements.rb", "lib/newextension.rb", "lib/newextension/version.rb", "newextension.gemspec", "script/console", "script/destroy", "script/generate", "setup.rb", "tasks/deployment.rake", "tasks/environment.rake", "tasks/website.rake", "test/test_generator_helper.rb", "test/test_helper.rb", "test/test_newextension.rb", "test/test_newextension_generator.rb"]
|
13
|
+
s.has_rdoc = true
|
14
|
+
s.homepage = %q{http://newextension.rubyforge.org}
|
15
|
+
s.post_install_message = %q{}
|
16
|
+
s.rdoc_options = ["--main", "README.txt"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{newextension}
|
19
|
+
s.rubygems_version = %q{1.2.0}
|
20
|
+
s.summary = %q{Create a Firefox extension skeleton}
|
21
|
+
s.test_files = ["test/test_generator_helper.rb", "test/test_helper.rb", "test/test_newextension.rb", "test/test_newextension_generator.rb"]
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 2
|
26
|
+
|
27
|
+
if current_version >= 3 then
|
28
|
+
s.add_runtime_dependency(%q<uuidtools>, [">= 1.0.3"])
|
29
|
+
s.add_runtime_dependency(%q<rubigen>, [">= 1.3.2"])
|
30
|
+
s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
|
31
|
+
else
|
32
|
+
s.add_dependency(%q<uuidtools>, [">= 1.0.3"])
|
33
|
+
s.add_dependency(%q<rubigen>, [">= 1.3.2"])
|
34
|
+
s.add_dependency(%q<hoe>, [">= 1.7.0"])
|
35
|
+
end
|
36
|
+
else
|
37
|
+
s.add_dependency(%q<uuidtools>, [">= 1.0.3"])
|
38
|
+
s.add_dependency(%q<rubigen>, [">= 1.3.2"])
|
39
|
+
s.add_dependency(%q<hoe>, [">= 1.7.0"])
|
40
|
+
end
|
41
|
+
end
|
data/script/console
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# File: script/console
|
3
|
+
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
+
|
5
|
+
libs = " -r irb/completion"
|
6
|
+
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
+
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
+
libs << " -r #{File.dirname(__FILE__) + '/../lib/newextension.rb'}"
|
9
|
+
puts "Loading newextension gem"
|
10
|
+
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.join(File.dirname(__FILE__), '..')
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
3
|
|
4
4
|
begin
|
5
5
|
require 'rubigen'
|
@@ -10,5 +10,5 @@ end
|
|
10
10
|
require 'rubigen/scripts/destroy'
|
11
11
|
|
12
12
|
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme]
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
14
|
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.join(File.dirname(__FILE__), '..')
|
2
|
+
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
3
|
|
4
4
|
begin
|
5
5
|
require 'rubigen'
|
@@ -10,5 +10,5 @@ end
|
|
10
10
|
require 'rubigen/scripts/generate'
|
11
11
|
|
12
12
|
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme]
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
14
|
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/tasks/deployment.rake
CHANGED
@@ -25,3 +25,10 @@ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
|
|
25
25
|
task :install_gem_no_doc => [:clean, :package] do
|
26
26
|
sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
|
27
27
|
end
|
28
|
+
|
29
|
+
namespace :manifest do
|
30
|
+
desc 'Recreate Manifest.txt to include ALL files'
|
31
|
+
task :refresh do
|
32
|
+
`rake check_manifest | patch -p0 > Manifest.txt`
|
33
|
+
end
|
34
|
+
end
|
data/tasks/website.rake
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
desc 'Generate website files'
|
2
|
+
task :website_generate => :ruby_env do
|
3
|
+
(Dir['website/**/*.txt'] - Dir['website/version*.txt']).each do |txt|
|
4
|
+
sh %{ #{RUBY_APP} script/txt2html #{txt} > #{txt.gsub(/txt$/,'html')} }
|
5
|
+
end
|
6
|
+
end
|
4
7
|
|
5
|
-
|
8
|
+
desc 'Upload website files to rubyforge'
|
9
|
+
task :website_upload do
|
10
|
+
host = "#{rubyforge_username}@rubyforge.org"
|
11
|
+
remote_dir = "/var/www/gforge-projects/#{PATH}/"
|
12
|
+
local_dir = 'website'
|
13
|
+
sh %{rsync -aCv #{local_dir}/ #{host}:#{remote_dir}}
|
14
|
+
end
|
6
15
|
|
7
|
-
|
8
|
-
|
9
|
-
task :website => :publish_docs
|
16
|
+
desc 'Generate and upload website files'
|
17
|
+
task :website => [:website_generate, :website_upload, :publish_docs]
|
@@ -0,0 +1,29 @@
|
|
1
|
+
begin
|
2
|
+
require File.dirname(__FILE__) + '/test_helper'
|
3
|
+
rescue LoadError
|
4
|
+
require 'test/unit'
|
5
|
+
end
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
# Must set before requiring generator libs.
|
9
|
+
TMP_ROOT = File.dirname(__FILE__) + "/tmp" unless defined?(TMP_ROOT)
|
10
|
+
PROJECT_NAME = "myproject" unless defined?(PROJECT_NAME)
|
11
|
+
app_root = File.join(TMP_ROOT, PROJECT_NAME)
|
12
|
+
if defined?(APP_ROOT)
|
13
|
+
APP_ROOT.replace(app_root)
|
14
|
+
else
|
15
|
+
APP_ROOT = app_root
|
16
|
+
end
|
17
|
+
if defined?(RAILS_ROOT)
|
18
|
+
RAILS_ROOT.replace(app_root)
|
19
|
+
else
|
20
|
+
RAILS_ROOT = app_root
|
21
|
+
end
|
22
|
+
|
23
|
+
begin
|
24
|
+
require 'rubigen'
|
25
|
+
rescue LoadError
|
26
|
+
require 'rubygems'
|
27
|
+
require 'rubigen'
|
28
|
+
end
|
29
|
+
require 'rubigen/helpers/generator_test_helper'
|
data/test/test_helper.rb
CHANGED
@@ -1,17 +1,2 @@
|
|
1
1
|
require 'test/unit'
|
2
2
|
require File.dirname(__FILE__) + '/../lib/newextension'
|
3
|
-
|
4
|
-
module Test::Unit::Assertions
|
5
|
-
def assert_file_contains(pattern, filename, message = '')
|
6
|
-
_wrap_assertion do
|
7
|
-
pattern = case(pattern)
|
8
|
-
when String
|
9
|
-
Regexp.new(Regexp.escape(pattern))
|
10
|
-
else
|
11
|
-
pattern
|
12
|
-
end
|
13
|
-
full_message = build_message(message, "content of file <?> expected to be =~\n<?>.", filename, pattern)
|
14
|
-
assert_block(full_message) { File.open(filename).read =~ pattern }
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/test/test_newextension.rb
CHANGED
@@ -1,43 +1,11 @@
|
|
1
|
-
require '
|
2
|
-
require 'pathname'
|
3
|
-
|
4
|
-
include FileUtils
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
5
2
|
|
6
3
|
class TestNewextension < Test::Unit::TestCase
|
7
|
-
def setup
|
8
|
-
@testdir = Pathname.new(File.dirname(__FILE__) + '/foo_extension')
|
9
|
-
system(Pathname.new(File.dirname(__FILE__)).realpath + '../bin/newextension',
|
10
|
-
'-a youpy',
|
11
|
-
'-V 0.11',
|
12
|
-
@testdir)
|
13
|
-
end
|
14
4
|
|
15
|
-
def
|
16
|
-
rm_rf @testdir
|
5
|
+
def setup
|
17
6
|
end
|
18
|
-
|
19
|
-
def
|
20
|
-
assert
|
21
|
-
cd @testdir do
|
22
|
-
assert_equal([
|
23
|
-
'chrome',
|
24
|
-
'chrome/content',
|
25
|
-
'chrome/content/FooExtension.js',
|
26
|
-
'chrome/content/overlay.xul',
|
27
|
-
'chrome/skin',
|
28
|
-
'chrome.manifest',
|
29
|
-
'install.rdf',
|
30
|
-
'Rakefile',
|
31
|
-
].sort, Dir['**/*'].sort)
|
32
|
-
|
33
|
-
assert_file_contains(/FooExtension/, 'chrome/content/FooExtension.js')
|
34
|
-
assert_file_contains(/FooExtension/, 'chrome/content/FooExtension.js')
|
35
|
-
assert_file_contains(/chrome:\/\/fooextension/, 'chrome/content/overlay.xul')
|
36
|
-
assert_file_contains(/FooExtensionOverlay/, 'chrome/content/overlay.xul')
|
37
|
-
assert_file_contains(/chrome:\/\/fooextension/, 'chrome.manifest')
|
38
|
-
assert_file_contains(/youpy/, 'install.rdf')
|
39
|
-
assert_file_contains(/0\.11/, 'install.rdf')
|
40
|
-
assert_file_contains(/EXTENSION_NAME="foo_extension"/, 'Rakefile')
|
41
|
-
end
|
7
|
+
|
8
|
+
def test_truth
|
9
|
+
assert true
|
42
10
|
end
|
43
11
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_generator_helper.rb")
|
2
|
+
|
3
|
+
class TestNewextensionGenerator < Test::Unit::TestCase
|
4
|
+
include RubiGen::GeneratorTestHelper
|
5
|
+
|
6
|
+
def setup
|
7
|
+
bare_setup
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
bare_teardown
|
12
|
+
end
|
13
|
+
|
14
|
+
# Some generator-related assertions:
|
15
|
+
# assert_generated_file(name, &block) # block passed the file contents
|
16
|
+
# assert_directory_exists(name)
|
17
|
+
# assert_generated_class(name, &block)
|
18
|
+
# assert_generated_module(name, &block)
|
19
|
+
# assert_generated_test_for(name, &block)
|
20
|
+
# The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
|
21
|
+
# assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
|
22
|
+
#
|
23
|
+
# Other helper methods are:
|
24
|
+
# app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
|
25
|
+
# bare_setup - place this in setup method to create the APP_ROOT folder for each test
|
26
|
+
# bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
|
27
|
+
|
28
|
+
def test_generator_without_options
|
29
|
+
run_generator('newextension', [APP_ROOT], sources)
|
30
|
+
assert_directory_exists "chrome/content"
|
31
|
+
assert_generated_file "chrome.manifest"
|
32
|
+
assert_generated_file "Rakefile"
|
33
|
+
assert_generated_file "install.rdf"
|
34
|
+
assert_generated_file "chrome.manifest"
|
35
|
+
assert_generated_file "chrome/content/overlay.xul"
|
36
|
+
assert_generated_file "chrome/content/#{PROJECT_NAME.camelize}.js"
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def sources
|
41
|
+
[RubiGen::PathSource.new(:test, File.join(File.dirname(__FILE__),"..", generator_path))
|
42
|
+
]
|
43
|
+
end
|
44
|
+
|
45
|
+
def generator_path
|
46
|
+
"app_generators"
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: youpy-newextension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- youpy
|
@@ -9,8 +9,8 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-
|
13
|
-
default_executable:
|
12
|
+
date: 2008-08-21 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: uuidtools
|
@@ -19,47 +19,74 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 1.0.3
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: rubigen
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.3.2
|
32
|
+
version:
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: hoe
|
35
|
+
version_requirement:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.7.0
|
23
41
|
version:
|
24
42
|
description: Create a Firefox extension skeleton
|
25
|
-
email:
|
43
|
+
email:
|
44
|
+
- youpy@buycheapviagraonlinenow.com
|
26
45
|
executables:
|
27
46
|
- newextension
|
47
|
+
- newextension.orig
|
28
48
|
extensions: []
|
29
49
|
|
30
50
|
extra_rdoc_files:
|
31
51
|
- History.txt
|
32
52
|
- License.txt
|
33
53
|
- Manifest.txt
|
34
|
-
-
|
54
|
+
- PostInstall.txt
|
35
55
|
files:
|
36
56
|
- History.txt
|
37
57
|
- License.txt
|
38
58
|
- Manifest.txt
|
39
|
-
-
|
59
|
+
- PostInstall.txt
|
60
|
+
- README.rdoc
|
40
61
|
- Rakefile
|
62
|
+
- app_generators/newextension/USAGE
|
63
|
+
- app_generators/newextension/newextension_generator.rb
|
64
|
+
- app_generators/newextension/templates/Rakefile
|
65
|
+
- app_generators/newextension/templates/chrome.manifest
|
66
|
+
- app_generators/newextension/templates/chrome/content/__extension__.js
|
67
|
+
- app_generators/newextension/templates/chrome/content/overlay.xul
|
68
|
+
- app_generators/newextension/templates/install.rdf
|
41
69
|
- bin/newextension
|
70
|
+
- bin/newextension.orig
|
42
71
|
- config/hoe.rb
|
43
72
|
- config/requirements.rb
|
44
73
|
- lib/newextension.rb
|
45
74
|
- lib/newextension/version.rb
|
75
|
+
- newextension.gemspec
|
76
|
+
- script/console
|
46
77
|
- script/destroy
|
47
78
|
- script/generate
|
48
79
|
- setup.rb
|
49
80
|
- tasks/deployment.rake
|
50
81
|
- tasks/environment.rake
|
51
82
|
- tasks/website.rake
|
52
|
-
-
|
53
|
-
- templates/chrome/content/overlay.xul
|
54
|
-
- templates/chrome/skin
|
55
|
-
- templates/chrome.manifest
|
56
|
-
- templates/install.rdf
|
57
|
-
- templates/Rakefile
|
83
|
+
- test/test_generator_helper.rb
|
58
84
|
- test/test_helper.rb
|
59
85
|
- test/test_newextension.rb
|
86
|
+
- test/test_newextension_generator.rb
|
60
87
|
has_rdoc: true
|
61
88
|
homepage: http://newextension.rubyforge.org
|
62
|
-
post_install_message:
|
89
|
+
post_install_message: ""
|
63
90
|
rdoc_options:
|
64
91
|
- --main
|
65
92
|
- README.txt
|
@@ -85,5 +112,7 @@ signing_key:
|
|
85
112
|
specification_version: 2
|
86
113
|
summary: Create a Firefox extension skeleton
|
87
114
|
test_files:
|
115
|
+
- test/test_generator_helper.rb
|
88
116
|
- test/test_helper.rb
|
89
117
|
- test/test_newextension.rb
|
118
|
+
- test/test_newextension_generator.rb
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<?xml version="1.0" ?>
|
2
|
-
<overlay id="<%=camelize(extension_name)%>Overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
3
|
-
<script type="application/x-javascript"
|
4
|
-
src="chrome://<%=package_name%>/content/<%=camelize(extension_name)%>.js" />
|
5
|
-
<menupopup id="menu_ToolsPopup">
|
6
|
-
<menuitem label='<%=extension_name%>' oncommand='alert("hello. this is <%=extension_name%>")'/>
|
7
|
-
</menupopup>
|
8
|
-
</overlay>
|
data/templates/chrome.manifest
DELETED