youpy-newextension 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,27 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
23
+
24
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ task :install_gem_no_doc => [:clean, :package] do
26
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
@@ -0,0 +1,9 @@
1
+ # stubs for the website generation
2
+ # To install the website framework:
3
+ # script/generate website
4
+
5
+ task :website_generate
6
+
7
+ task :website_upload
8
+
9
+ task :website => :publish_docs
@@ -0,0 +1,88 @@
1
+ # based on: http://gravelog.blogspot.com/2007/03/using-rake-to-build-firefox-extensions_04.html
2
+ require 'rexml/document'
3
+ include REXML
4
+
5
+ EXTENSION_NAME="<%=extension_name%>"
6
+ BUILD_DIR="build/#{EXTENSION_NAME}"
7
+
8
+ directory "#{BUILD_DIR}/chrome"
9
+ task :create_buildchrome_dir => ["#{BUILD_DIR}/chrome"]
10
+
11
+ desc "prepare the chrome.manifest file"
12
+ file "#{BUILD_DIR}/chrome.manifest" => [:create_buildchrome_dir] do
13
+ open("#{BUILD_DIR}/chrome.manifest",'w') do |infile|
14
+ open("chrome.manifest", "r") do |outfile|
15
+ while line = outfile.gets
16
+ infile.puts line.gsub(/chrome\//, "jar:chrome/#{EXTENSION_NAME}.jar!/")
17
+ end
18
+ end
19
+ end
20
+ end
21
+ task :create_chrome_manifest => ["#{BUILD_DIR}/chrome.manifest"]
22
+
23
+ desc "prepare the install.rdf file"
24
+ file "#{BUILD_DIR}/install.rdf" => [:create_buildchrome_dir] do
25
+ cp 'install.rdf', "#{BUILD_DIR}/install.rdf"
26
+ end
27
+ task :create_install_rdf => ["#{BUILD_DIR}/install.rdf"]
28
+
29
+ desc "create the chrome jar file"
30
+ task :create_chrome_jar => [:create_buildchrome_dir] do
31
+ sh "cd chrome && zip -qr -0 ../#{BUILD_DIR}/chrome/#{EXTENSION_NAME}.jar * -x \*.svn\*"
32
+ end
33
+
34
+ desc "create the xpi file and use the version number in the file name"
35
+ task :create_extension_xpi => [:create_chrome_jar, :create_chrome_manifest, :create_install_rdf] do
36
+ install_rdf_file = File.new('install.rdf','r')
37
+ install_rdf_xmldoc = Document.new(install_rdf_file)
38
+ version_number = ""
39
+ install_rdf_xmldoc.elements.each('RDF/Description/em:version') do |element|
40
+ version_number = element.text
41
+ end
42
+
43
+ sh "cd #{BUILD_DIR} && zip -qr -9 ../../#{EXTENSION_NAME}-#{version_number}-fx.xpi *"
44
+ rm_rf "build"
45
+ end
46
+
47
+ desc "install to local profile directory"
48
+ task :install do
49
+ File.open("#{firefox_profile_dir}/extensions/#{extension_id}", 'w') do |f|
50
+ f.puts(Dir.pwd)
51
+ end
52
+ end
53
+
54
+ desc "uninstall from local profile directory"
55
+ task :uninstall do
56
+ File.unlink("#{firefox_profile_dir}/extensions/#{extension_id}")
57
+ end
58
+
59
+ def firefox_profile_dir(name = nil)
60
+ name = 'default' unless name
61
+
62
+ base =
63
+ case RUBY_PLATFORM
64
+ when /darwin/
65
+ '~/Library/Application Support/Firefox/profiles'
66
+ when /win/
67
+ '~/Application Data/Mozilla/Firefox/Profiles'
68
+ else
69
+ '~/.mozilla/firefox'
70
+ end
71
+
72
+ path = Dir.glob("#{File.expand_path(base)}/*.#{name}")
73
+
74
+ if path.length == 1
75
+ path.first
76
+ else
77
+ raise
78
+ end
79
+ end
80
+
81
+ def extension_id
82
+ open('install.rdf','r') do |file|
83
+ install_rdf_xmldoc = Document.new(file)
84
+ install_rdf_xmldoc.elements.each('RDF/Description/em:id') do |element|
85
+ return element.text
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,2 @@
1
+ var <%=camelize(extension_name)%> = function() {};
2
+ <%=camelize(extension_name)%>.prototype = {};
@@ -0,0 +1,8 @@
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>
@@ -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/
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0"?>
2
+ <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
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>
8
+ <em:type>2</em:type>
9
+ <em:description>Description about this extension</em:description>
10
+ <em:creator><%=author%></em:creator>
11
+ <em:targetApplication>
12
+ <Description>
13
+ <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
14
+ <em:minVersion>1.5</em:minVersion>
15
+ <em:maxVersion>3.0.*</em:maxVersion>
16
+ </Description>
17
+ </em:targetApplication>
18
+ </Description>
19
+ </RDF>
@@ -0,0 +1,17 @@
1
+ require 'test/unit'
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
@@ -0,0 +1,43 @@
1
+ require 'fileutils'
2
+ require 'pathname'
3
+
4
+ include FileUtils
5
+
6
+ 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
+
15
+ def teardown
16
+ rm_rf @testdir
17
+ 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
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,89 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: youpy-newextension
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - youpy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-17 00:00:00 -07:00
13
+ default_executable: newextension
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: uuidtools
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ description: Create a Firefox extension skeleton
25
+ email: youpy@buycheapviagraonlinenow.com
26
+ executables:
27
+ - newextension
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - History.txt
32
+ - License.txt
33
+ - Manifest.txt
34
+ - README.txt
35
+ files:
36
+ - History.txt
37
+ - License.txt
38
+ - Manifest.txt
39
+ - README.txt
40
+ - Rakefile
41
+ - bin/newextension
42
+ - config/hoe.rb
43
+ - config/requirements.rb
44
+ - lib/newextension.rb
45
+ - lib/newextension/version.rb
46
+ - script/destroy
47
+ - script/generate
48
+ - setup.rb
49
+ - tasks/deployment.rake
50
+ - tasks/environment.rake
51
+ - 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
58
+ - test/test_helper.rb
59
+ - test/test_newextension.rb
60
+ has_rdoc: true
61
+ homepage: http://newextension.rubyforge.org
62
+ post_install_message:
63
+ rdoc_options:
64
+ - --main
65
+ - README.txt
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: "0"
73
+ version:
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: "0"
79
+ version:
80
+ requirements: []
81
+
82
+ rubyforge_project: newextension
83
+ rubygems_version: 1.2.0
84
+ signing_key:
85
+ specification_version: 2
86
+ summary: Create a Firefox extension skeleton
87
+ test_files:
88
+ - test/test_helper.rb
89
+ - test/test_newextension.rb