youpy-newextension 0.0.2 → 0.1.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/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