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 CHANGED
@@ -1,24 +1,31 @@
1
1
  History.txt
2
2
  License.txt
3
3
  Manifest.txt
4
- README.txt
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
- templates/chrome/content/__extension__.js
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
File without changes
data/Rakefile CHANGED
@@ -1,4 +1,4 @@
1
1
  require 'config/requirements'
2
2
  require 'config/hoe' # setup Hoe + all gem configuration
3
3
 
4
- Dir['tasks/**/*.rake'].each { |rake| load rake }
4
+ Dir['tasks/**/*.rake'].each { |rake| load rake }
@@ -0,0 +1,5 @@
1
+ Description:
2
+
3
+
4
+ Usage:
5
+
@@ -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
@@ -0,0 +1,2 @@
1
+ var <%= extension_name.camelize%> = function() {};
2
+ <%=extension_name.camelize%>.prototype = {};
@@ -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>
@@ -0,0 +1,3 @@
1
+ content <%= package_name %> chrome/content/
2
+ overlay chrome://browser/content/browser.xul chrome://<%= package_name %>/content/overlay.xul
3
+ skin <%= package_name %> classic/1.0 chrome/skin/
@@ -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(extension_name)%></em:name>
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>Description about this extension</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
- 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'
3
+ require 'rubygems'
4
+ require 'rubigen'
17
5
 
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 }
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
- 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
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
- REV = nil
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.author = AUTHOR
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("\\n\\n")
63
- #p.extra_deps = [] # An array of rubygem dependencies [name, version], e.g. [ ['active_support', '>= 1.3.1'] ]
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 ""
@@ -1,8 +1,8 @@
1
1
  module Newextension #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
- MINOR = 0
5
- TINY = 2
4
+ MINOR = 1
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/newextension.rb CHANGED
@@ -1,4 +1,5 @@
1
- $:.unshift File.dirname(__FILE__)
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
2
3
 
3
4
  module Newextension
4
5
 
@@ -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)
@@ -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
- # stubs for the website generation
2
- # To install the website framework:
3
- # script/generate website
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
- task :website_generate
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
- task :website_upload
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
@@ -1,43 +1,11 @@
1
- require 'fileutils'
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 teardown
16
- rm_rf @testdir
5
+ def setup
17
6
  end
18
-
19
- def test_create
20
- assert File.directory?(@testdir)
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.2
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-07-18 00:00:00 -07:00
13
- default_executable: newextension
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: "0"
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: youpy@buycheapviagraonlinenow.com
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
- - README.txt
54
+ - PostInstall.txt
35
55
  files:
36
56
  - History.txt
37
57
  - License.txt
38
58
  - Manifest.txt
39
- - README.txt
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
- - templates/chrome/content/__extension__.js
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,2 +0,0 @@
1
- var <%=camelize(extension_name)%> = function() {};
2
- <%=camelize(extension_name)%>.prototype = {};
@@ -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>
@@ -1,3 +0,0 @@
1
- content <%=package_name%> chrome/content/
2
- overlay chrome://browser/content/browser.xul chrome://<%=package_name%>/content/overlay.xul
3
- skin <%=package_name%> classic/1.0 chrome/skin/