newgem 0.29.0 → 1.0.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/History.txt +15 -1
- data/Manifest.txt +7 -22
- data/README.rdoc +55 -33
- data/Rakefile +22 -7
- data/app_generators/newgem/newgem_generator.rb +23 -23
- data/app_generators/newgem/templates/Rakefile +27 -3
- data/app_generators/newgem/templates/lib/module.rb +1 -1
- data/bin/newgem +12 -2
- data/config/website.yml +2 -0
- data/features/development.feature +22 -0
- data/features/executable_generator.feature +6 -6
- data/features/expected_outputs/newgem.out +2 -9
- data/features/install_cucumber.feature +11 -0
- data/features/install_website.feature +13 -0
- data/features/newgem_cli.feature +60 -0
- data/features/steps/cli.rb +125 -36
- data/features/steps/env.rb +4 -2
- data/lib/newgem/support/tasks.rb +10 -0
- data/lib/newgem/tasks.rb +1 -0
- data/lib/newgem.rb +5 -5
- data/newgem_generators/install_website/install_website_generator.rb +12 -9
- data/newgem_generators/install_website/templates/config/website.yml.sample.erb +2 -0
- data/newgem_generators/install_website/templates/script/txt2html +5 -16
- data/newgem_generators/install_website/templates/tasks/website.rake +34 -4
- data/rubygems_generators/executable/templates/test/test_cli.rb.erb +1 -1
- data/script/txt2html +5 -16
- data/tasks/deployment.rake +5 -6
- data/tasks/website.rake +34 -6
- data/test/test_install_website_generator.rb +1 -0
- data/test/test_newgem_generator.rb +0 -10
- data/website/index.html +27 -22
- data/website/index.txt +30 -19
- data/website/rubyforge.html +2 -2
- data/website/version.js +0 -4
- metadata +35 -67
- data/Todo.txt +0 -4
- data/app_generators/newgem/templates/config/hoe.rb +0 -82
- data/app_generators/newgem/templates/config/requirements.rb +0 -15
- data/app_generators/newgem/templates/lib/version.rb +0 -10
- data/app_generators/newgem/templates/setup.rb +0 -1585
- data/app_generators/newgem/templates/tasks/deployment.rake +0 -34
- data/app_generators/newgem/templates/tasks/environment.rake +0 -7
- data/app_generators/newgem/templates/tasks/website.rake +0 -9
- data/config/hoe.rb +0 -62
- data/features/cli.feature +0 -28
- data/features/steps/executable_generator.rb +0 -0
- data/lib/newgem/version.rb +0 -9
- data/rubygems_generators/install_rspec_stories/USAGE +0 -5
- data/rubygems_generators/install_rspec_stories/install_rspec_stories_generator.rb +0 -54
- data/rubygems_generators/install_rspec_stories/templates/all.rb +0 -8
- data/rubygems_generators/install_rspec_stories/templates/steps.rb +0 -13
- data/rubygems_generators/install_rspec_stories/templates/story.story +0 -9
- data/script/txt2html.rb +0 -70
- data/script/txt2js +0 -59
- data/setup.rb +0 -1585
- data/tasks/generator_report.rake +0 -19
- data/test/test_install_rspec_stories_generator.rb +0 -45
@@ -1,34 +0,0 @@
|
|
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
|
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/config/hoe.rb
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'hoe'
|
2
|
-
require 'newgem/version'
|
3
|
-
|
4
|
-
AUTHOR = "Dr Nic Williams"
|
5
|
-
EMAIL = "drnicwilliams@gmail.com"
|
6
|
-
DESCRIPTION = "Make your own gems at home"
|
7
|
-
GEM_NAME = "newgem" # what ppl will type to install your gem
|
8
|
-
RUBYFORGE_PROJECT = "newgem"
|
9
|
-
HOMEPATH = "http://#{RUBYFORGE_PROJECT}.rubyforge.org"
|
10
|
-
DOWNLOAD_PATH = "http://rubyforge.org/projects/#{RUBYFORGE_PROJECT}"
|
11
|
-
|
12
|
-
@config_file = "~/.rubyforge/user-config.yml"
|
13
|
-
@config = nil
|
14
|
-
RUBYFORGE_USERNAME = "unknown"
|
15
|
-
def rubyforge_username
|
16
|
-
unless @config
|
17
|
-
begin
|
18
|
-
@config = YAML.load(File.read(File.expand_path(@config_file)))
|
19
|
-
rescue
|
20
|
-
puts <<-EOS
|
21
|
-
ERROR: No rubyforge config file found: #{@config_file}
|
22
|
-
Run 'rubyforge setup' to prepare your env for access to Rubyforge
|
23
|
-
- See http://newgem.rubyforge.org/rubyforge.html for more details
|
24
|
-
EOS
|
25
|
-
exit
|
26
|
-
end
|
27
|
-
end
|
28
|
-
RUBYFORGE_USERNAME.replace @config["username"]
|
29
|
-
end
|
30
|
-
|
31
|
-
REV = nil #File.read(".svn/entries")[/committed-rev="(\d+)"/, 1] rescue nil
|
32
|
-
# REV = YAML.load(`svn info`)['Revision']
|
33
|
-
VERS = Newgem::VERSION::STRING + (REV ? ".#{REV}" : "")
|
34
|
-
CLEAN.include ['**/.*.sw?', '*.gem', '.config', '**/.DS_Store', 'tmp']
|
35
|
-
|
36
|
-
# Generate all the Rake tasks
|
37
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
38
|
-
hoe = Hoe.new(GEM_NAME, VERS) do |p|
|
39
|
-
p.developer(AUTHOR, EMAIL)
|
40
|
-
p.description = DESCRIPTION
|
41
|
-
p.summary = DESCRIPTION
|
42
|
-
p.url = HOMEPATH
|
43
|
-
p.rubyforge_name = RUBYFORGE_PROJECT if RUBYFORGE_PROJECT
|
44
|
-
p.test_globs = ["test/**/test*.rb"]
|
45
|
-
p.clean_globs |= CLEAN #An array of file patterns to delete on clean.
|
46
|
-
|
47
|
-
# == Optional
|
48
|
-
p.changes = p.paragraphs_of("History.txt", 0..1).join("\n\n")
|
49
|
-
p.extra_deps = [
|
50
|
-
['RedCloth','>=4.0.0'],
|
51
|
-
['syntax','>=1.0.0'],
|
52
|
-
['activesupport','>=2.0.2'],
|
53
|
-
['rubigen','>=1.3.0']
|
54
|
-
]
|
55
|
-
#p.spec_extras - A hash of extra values to set in the gemspec.
|
56
|
-
end
|
57
|
-
|
58
|
-
CHANGES = hoe.paragraphs_of('History.txt', 0..1).join("\n\n")
|
59
|
-
PATH = (RUBYFORGE_PROJECT == GEM_NAME) ? RUBYFORGE_PROJECT : "\#{RUBYFORGE_PROJECT}/\#{GEM_NAME}"
|
60
|
-
hoe.remote_rdoc_dir = File.join(PATH.gsub(/^#{RUBYFORGE_PROJECT}\/?/,''), 'rdoc')
|
61
|
-
hoe.rsync_args = '-av --delete --ignore-errors'
|
62
|
-
hoe.spec.post_install_message = File.open(File.dirname(__FILE__) + "/../PostInstall.txt").read rescue ""
|
data/features/cli.feature
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
Feature: Can run create RubyGem scaffolds
|
2
|
-
|
3
|
-
As a developer of RubyGems
|
4
|
-
I want to create RubyGem scaffolds
|
5
|
-
So that I can rapidly produce specs and code for encapsulated applications and libraries
|
6
|
-
|
7
|
-
Scenario: Run newgem without any arguments
|
8
|
-
Given a safe folder
|
9
|
-
When newgem is executed for project 'my_project' with no options
|
10
|
-
Then folder 'my_project' is created
|
11
|
-
And file 'my_project/Rakefile' is created
|
12
|
-
And output matches 'newgem.out'
|
13
|
-
And invokes generator 'install_test_unit'
|
14
|
-
And invokes generator 'install_website'
|
15
|
-
And invokes generator 'install_rubigen_scripts'
|
16
|
-
|
17
|
-
Scenario: Run newgem to include rspec
|
18
|
-
Given a safe folder
|
19
|
-
When newgem is executed for project 'my_rspec_project' with options '-T rspec'
|
20
|
-
Then folder 'my_rspec_project' is created
|
21
|
-
And invokes generator 'install_rspec'
|
22
|
-
|
23
|
-
Scenario: Run newgem to disable website
|
24
|
-
Given a safe folder
|
25
|
-
When newgem is executed for project 'my_project' with options '-W'
|
26
|
-
Then folder 'my_project' is created
|
27
|
-
And does not invoke generator 'install_website'
|
28
|
-
|
File without changes
|
data/lib/newgem/version.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
class InstallRspecStoriesGenerator < RubiGen::Base
|
2
|
-
|
3
|
-
default_options :author => nil
|
4
|
-
|
5
|
-
attr_reader :gem_name, :module_name, :name
|
6
|
-
|
7
|
-
def initialize(runtime_args, runtime_options = {})
|
8
|
-
super
|
9
|
-
@gem_name = base_name
|
10
|
-
@module_name = gem_name.camelize
|
11
|
-
extract_options
|
12
|
-
end
|
13
|
-
|
14
|
-
def manifest
|
15
|
-
record do |m|
|
16
|
-
# Ensure appropriate folder(s) exists
|
17
|
-
m.directory 'stories/steps'
|
18
|
-
|
19
|
-
m.template 'steps.rb', "stories/steps/#{gem_name}_steps.rb"
|
20
|
-
m.template 'story.story', "stories/sell_#{gem_name}.story"
|
21
|
-
m.template 'all.rb', "stories/all.rb"
|
22
|
-
# Create stubs
|
23
|
-
# m.template "template.rb", "some_file_after_erb.rb"
|
24
|
-
# m.file "file", "some_file_copied"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
protected
|
29
|
-
def banner
|
30
|
-
<<-EOS
|
31
|
-
Creates an RSpec story scaffold for this RubyGem.
|
32
|
-
|
33
|
-
USAGE: #{$0} #{spec.name}
|
34
|
-
EOS
|
35
|
-
end
|
36
|
-
|
37
|
-
def add_options!(opts)
|
38
|
-
# opts.separator ''
|
39
|
-
# opts.separator 'Options:'
|
40
|
-
# For each option below, place the default
|
41
|
-
# at the top of the file next to "default_options"
|
42
|
-
# opts.on("-a", "--author=\"Your Name\"", String,
|
43
|
-
# "Some comment about this option",
|
44
|
-
# "Default: none") { |options[:author]| }
|
45
|
-
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
46
|
-
end
|
47
|
-
|
48
|
-
def extract_options
|
49
|
-
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
50
|
-
# Templates can access these value via the attr_reader-generated methods, but not the
|
51
|
-
# raw instance variable value.
|
52
|
-
# @author = options[:author]
|
53
|
-
end
|
54
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
steps_for :<%= gem_name %> do
|
2
|
-
Given 'there are $n <%= gem_name %>' do |n|
|
3
|
-
<%= module_name %>.initial = n.to_i
|
4
|
-
end
|
5
|
-
|
6
|
-
When 'I sell $n <%= gem_name %>' do |n|
|
7
|
-
<%= module_name %>.sold = n.to_i
|
8
|
-
end
|
9
|
-
|
10
|
-
Then 'there should be $n <%= gem_name %> left' do |n|
|
11
|
-
<%= module_name %>.left.should == n.to_i
|
12
|
-
end
|
13
|
-
end
|
@@ -1,9 +0,0 @@
|
|
1
|
-
Story: Sell <%= gem_name %>
|
2
|
-
As a <%= gem_name %> artist
|
3
|
-
I want to sell <%= gem_name %>
|
4
|
-
So that I can make the world a better place
|
5
|
-
|
6
|
-
Scenario: Sell a couple
|
7
|
-
Given there are 5 <%= gem_name %>
|
8
|
-
When I sell 2 <%= gem_name %>
|
9
|
-
Then there should be 3 <%= gem_name %> left
|
data/script/txt2html.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'redcloth'
|
5
|
-
require 'syntax/convertors/html'
|
6
|
-
require 'erb'
|
7
|
-
|
8
|
-
class Fixnum
|
9
|
-
def ordinal
|
10
|
-
# teens
|
11
|
-
return 'th' if (10..19).include?(self % 100)
|
12
|
-
# others
|
13
|
-
case self % 10
|
14
|
-
when 1: return 'st'
|
15
|
-
when 2: return 'nd'
|
16
|
-
when 3: return 'rd'
|
17
|
-
else return 'th'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
class Time
|
23
|
-
def pretty
|
24
|
-
return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
module Txt2Html
|
29
|
-
def convert_syntax(syntax, source)
|
30
|
-
return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
|
31
|
-
end
|
32
|
-
|
33
|
-
require File.dirname(__FILE__) + '/../lib/newgem/version.rb'
|
34
|
-
|
35
|
-
version = Newgem::VERSION::STRING
|
36
|
-
download = ENV['HOMEPAGE']
|
37
|
-
|
38
|
-
if ARGV.length >= 1
|
39
|
-
src, template = ARGV
|
40
|
-
template ||= File.dirname(__FILE__) + '/../website/template.html.erb'
|
41
|
-
|
42
|
-
else
|
43
|
-
puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
|
44
|
-
exit!
|
45
|
-
end
|
46
|
-
|
47
|
-
template = ERB.new(File.open(template).read)
|
48
|
-
|
49
|
-
title = nil
|
50
|
-
body = nil
|
51
|
-
File.open(src) do |fsrc|
|
52
|
-
title_text = fsrc.readline
|
53
|
-
body_text = fsrc.read
|
54
|
-
syntax_items = []
|
55
|
-
body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
|
56
|
-
ident = syntax_items.length
|
57
|
-
element, syntax, source = $1, $2, $3
|
58
|
-
syntax_items << "<#{element} class=\"syntax\">#{convert_syntax(syntax, source)}</#{element}>"
|
59
|
-
"syntax-temp-#{ident}"
|
60
|
-
}
|
61
|
-
title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
|
62
|
-
body = RedCloth.new(body_text).to_html
|
63
|
-
body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
|
64
|
-
end
|
65
|
-
stat = File.stat(src)
|
66
|
-
created = stat.ctime
|
67
|
-
modified = stat.mtime
|
68
|
-
|
69
|
-
$stdout << template.result(binding)
|
70
|
-
end
|
data/script/txt2js
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'redcloth'
|
5
|
-
require 'syntax/convertors/html'
|
6
|
-
require 'erb'
|
7
|
-
require 'active_support'
|
8
|
-
require File.dirname(__FILE__) + '/../lib/newgem/version.rb'
|
9
|
-
|
10
|
-
version = Newgem::VERSION::STRING
|
11
|
-
download = 'http://rubyforge.org/projects/newgem'
|
12
|
-
|
13
|
-
class Fixnum
|
14
|
-
def ordinal
|
15
|
-
# teens
|
16
|
-
return 'th' if (10..19).include?(self % 100)
|
17
|
-
# others
|
18
|
-
case self % 10
|
19
|
-
when 1: return 'st'
|
20
|
-
when 2: return 'nd'
|
21
|
-
when 3: return 'rd'
|
22
|
-
else return 'th'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class Time
|
28
|
-
def pretty
|
29
|
-
return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def convert_syntax(syntax, source)
|
34
|
-
return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
|
35
|
-
end
|
36
|
-
|
37
|
-
if ARGV.length >= 1
|
38
|
-
src, template = ARGV
|
39
|
-
template ||= File.dirname(__FILE__) + '/../website/template.js'
|
40
|
-
else
|
41
|
-
puts("Usage: #{File.split($0).last} source.txt [template.js] > output.html")
|
42
|
-
exit!
|
43
|
-
end
|
44
|
-
|
45
|
-
template = ERB.new(File.open(template).read)
|
46
|
-
|
47
|
-
title = nil
|
48
|
-
body = nil
|
49
|
-
File.open(src) do |fsrc|
|
50
|
-
title_text = fsrc.readline
|
51
|
-
body_text = fsrc.read
|
52
|
-
title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
|
53
|
-
body = RedCloth.new(body_text)
|
54
|
-
end
|
55
|
-
stat = File.stat(src)
|
56
|
-
created = stat.ctime
|
57
|
-
modified = stat.mtime
|
58
|
-
|
59
|
-
$stdout << template.result(binding)
|