youpy-newextension 0.0.1
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/History.txt +4 -0
- data/License.txt +20 -0
- data/Manifest.txt +24 -0
- data/README.txt +43 -0
- data/Rakefile +4 -0
- data/bin/newextension +80 -0
- data/config/hoe.rb +71 -0
- data/config/requirements.rb +17 -0
- data/lib/newextension/version.rb +9 -0
- data/lib/newextension.rb +5 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/setup.rb +1585 -0
- data/tasks/deployment.rake +27 -0
- data/tasks/environment.rake +7 -0
- data/tasks/website.rake +9 -0
- data/templates/Rakefile +88 -0
- data/templates/chrome/content/__extension__.js +2 -0
- data/templates/chrome/content/overlay.xul +8 -0
- data/templates/chrome.manifest +3 -0
- data/templates/install.rdf +19 -0
- data/test/test_helper.rb +17 -0
- data/test/test_newextension.rb +43 -0
- metadata +89 -0
@@ -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
|
data/tasks/website.rake
ADDED
data/templates/Rakefile
ADDED
@@ -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,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,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>
|
data/test/test_helper.rb
ADDED
@@ -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
|