tanjun 0.0.1.alpha3 → 0.0.1.alpha4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/bin/bootstrap +22 -14
- data/bin/tanjun +87 -66
- data/bin/templates/tanjun.yml +21 -0
- data/bin/templates/tanjun_profile +1 -5
- data/bin/templates/tanjun_schema.yml +37 -0
- data/bin/templates/vimrc +50 -0
- data/lib/tanjun.rb +1 -0
- data/lib/tanjun/thor_ext/shell/basic.rb +37 -0
- data/lib/tanjun/thor_ext/shell/password.rb +41 -0
- data/lib/tanjun/version.rb +1 -1
- data/tanjun.gemspec +2 -0
- metadata +83 -29
data/.gitignore
CHANGED
data/bin/bootstrap
CHANGED
@@ -1,25 +1,33 @@
|
|
1
1
|
#!/bin/bash
|
2
|
-
# This
|
3
|
-
#
|
2
|
+
# This script can be run directly from Github with:
|
3
|
+
# curl -L http://bit.ly/tanjun-bootstrap | bash -s
|
4
|
+
#
|
5
|
+
# This script installs all rvm/ruby/nginx/passenger dependencies and a few
|
6
|
+
# useful applications. It also installs rvm, the latest ruby-mri, the tanjun
|
7
|
+
# gem and runs the the tanjun installer.
|
4
8
|
|
5
|
-
|
6
|
-
|
7
|
-
"zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev "\
|
8
|
-
"
|
9
|
-
"
|
10
|
-
|
9
|
+
apps="vim google-chrome-stable"
|
10
|
+
rvm_dep="build-essential openssl libreadline6 libreadline6-dev curl "\
|
11
|
+
"git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 "\
|
12
|
+
"libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool "\
|
13
|
+
"bison subversion"
|
14
|
+
nginx_dep="libcurl4-openssl-dev"
|
11
15
|
|
12
16
|
# Install package repositories
|
13
|
-
|
14
|
-
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main"
|
17
|
+
curl -L https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
|
18
|
+
sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google.list'
|
15
19
|
sudo apt-get update
|
16
20
|
|
17
21
|
# Install applications and dependencies
|
18
|
-
sudo apt-get install --force-yes --yes $dependencies
|
22
|
+
sudo apt-get install --force-yes --yes $dependencies
|
19
23
|
|
20
24
|
# Install RVM
|
21
25
|
curl -L get.rvm.io | bash -s stable --ruby
|
22
|
-
source "$HOME/.
|
23
|
-
|
24
|
-
|
26
|
+
source "$HOME/.bashrc"
|
27
|
+
|
28
|
+
# Install and run Tanjun
|
29
|
+
gem install tanjun --no-ri --no-rdoc
|
25
30
|
tanjun install
|
31
|
+
|
32
|
+
echo "Now reload your shell or run:"
|
33
|
+
echo " source ~/.bashrc"
|
data/bin/tanjun
CHANGED
@@ -1,88 +1,109 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
require '
|
2
|
+
require 'kwalify'
|
3
|
+
require 'hashie'
|
3
4
|
|
4
5
|
module Tanjun
|
5
|
-
class Tanjun < Thor
|
6
|
-
|
6
|
+
class Tanjun < Thor
|
7
|
+
include Thor::Actions
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
def self.source_root
|
10
|
+
@source ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
desc "install", "installs Tanjun"
|
14
|
+
def install
|
15
|
+
self.destination_root = File.expand_path("~")
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
17
|
+
config = "tanjun.yml"
|
18
|
+
config_root = file_exists?(config) ? destination_root : source_root
|
19
|
+
config = File.join(config_root, config)
|
19
20
|
|
20
|
-
|
21
|
-
bashrc = '[[ -s "$HOME/.tanjun_profile" ]] && source "$HOME/.tanjun_profile"'
|
22
|
-
bashrc_flag = '[ -z "$PS1" ] && return'
|
21
|
+
@options = Kwalify::Yaml.load(ERB.new(File.read(config)).result)
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
schema_file = "#{source_root}/tanjun_schema.yml"
|
24
|
+
if File.exists? schema_file
|
25
|
+
schema = Kwalify::Yaml.load_file(schema_file)
|
26
|
+
validator = Kwalify::Validator.new(schema)
|
27
|
+
|
28
|
+
errors = validator.validate(@options)
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
path = "/opt/nginx/tanjun"
|
36
|
-
command = "rvmsudo passenger-install-nginx-module --auto --auto-download --prefix=#{path}"
|
37
|
-
run_with_conflict_check(path, command)
|
38
|
-
|
39
|
-
path = "/etc/init.d/nginx"
|
40
|
-
command = "sudo curl -L -o /etc/init.d/nginx http://bit.ly/nginx-ubuntu-init-file && sudo chown root:root /etc/init.d/nginx && sudo chmod '/etc/init.d/nginx' 0755 && sudo update-rc.d nginx defaults"
|
41
|
-
run_with_conflict_check(path, command)
|
42
|
-
|
43
|
-
gitconfig = {
|
44
|
-
name: { key: 'user.name', prompt: 'Full Name', value: nil },
|
45
|
-
email: { key: 'user.email', prompt: 'Email Address', value: nil },
|
46
|
-
user: { key: 'github.user', prompt: 'Github Username', value: nil },
|
47
|
-
token: { key: 'github.token', prompt: 'Github Token', value: nil },
|
48
|
-
ignore: { key: 'core.excludesfile', value: '~/.gitignore' },
|
49
|
-
color: { key: 'color.gui', value: 'true' }
|
50
|
-
}
|
51
|
-
|
52
|
-
gitconfig.each do |name, setting|
|
53
|
-
setting[:value] ||= run "git config --global #{setting[:key]}", verbose: false, capture: true
|
54
|
-
if setting[:value].to_s.strip.length == 0
|
55
|
-
while setting[:value].to_s.strip.length == 0
|
56
|
-
setting[:value] = ask "#{setting[:prompt]}: "
|
57
|
-
if setting[:value].to_s.strip.length == 0
|
58
|
-
say "Nothing input. Try again"
|
30
|
+
if errors && !errors.empty?
|
31
|
+
say "There were errors in the configuration file. Please correct them."
|
32
|
+
errors.each do |e|
|
33
|
+
say "[#{e.path} #{e.message}]"
|
59
34
|
end
|
35
|
+
exit
|
60
36
|
end
|
61
|
-
`git config --global #{setting[:key]} #{setting[:value]}`
|
62
37
|
end
|
38
|
+
|
39
|
+
@options = @options.to_mash
|
40
|
+
|
41
|
+
@options.each do |method_name, settings|
|
42
|
+
self.send("configure_#{method_name}", settings)
|
43
|
+
end
|
44
|
+
|
45
|
+
bash_profile = '[[ -s "$HOME/.tanjun_profile" ]] && source "$HOME/.tanjun_profile"'
|
46
|
+
add_to_file ".bash_profile", bash_profile
|
47
|
+
|
48
|
+
if file_exists?(".ssh/id_rsa") && file_exists?(".ssh/id_rsa.pub")
|
49
|
+
public_key = File.read("#{destination_root}/.ssh/id_rsa.pub")
|
50
|
+
else unless @options["ssh"]["email"].nil?
|
51
|
+
ask "SSH Passphrase: ", password: true, required: true
|
52
|
+
|
53
|
+
public_key = run "ssh-keygen -t rsa -C '#{@options["ssh"]["email"]}' -f '#{destination_root}/.ssh/id_rsa' -N #{password}"
|
54
|
+
end
|
55
|
+
|
56
|
+
copy_file 'gitignore', '.gitignore'
|
57
|
+
copy_file 'tanjun_profile', '.tanjun_profile'
|
58
|
+
|
59
|
+
say "Now add your ssh public key to https://github.com/settings/ssh:"
|
60
|
+
say public_key
|
63
61
|
end
|
64
62
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
63
|
+
no_task do
|
64
|
+
def configure_rubies(rubies)
|
65
|
+
rubies.each { |ruby| `rvm install #{ruby}` }
|
66
|
+
end
|
67
|
+
|
68
|
+
def configure_paths(paths)
|
69
|
+
paths.each { |path| empty_directory path }
|
70
|
+
end
|
71
|
+
|
72
|
+
def configure_vundle(vundles)
|
73
|
+
`git clone https://github.com/gmarik/vundle.git ~/vim/bundle/vundle`
|
74
|
+
@vundles = vundles
|
75
|
+
template 'vimrc', '.vimrc'
|
76
|
+
end
|
77
|
+
|
78
|
+
def configure_git(settings)
|
79
|
+
settings.each { |key, value| `git config --global #{key} #{value}` }
|
80
|
+
end
|
81
|
+
|
82
|
+
def configure_gems(gems)
|
83
|
+
gems.each do |gem|
|
84
|
+
gem.version ||= "=> 0"
|
85
|
+
`rvm do gem install #{gem.name} --version #{gem.version} --no-ri --no-rdoc`
|
86
|
+
self.send("configure_#{gem.name}")
|
75
87
|
end
|
76
|
-
confirm = ask "Confirm Passphrase: "
|
77
88
|
end
|
78
89
|
|
79
|
-
|
80
|
-
|
90
|
+
def configure_hub
|
91
|
+
path = "#{destination_root}/bin/hub"
|
92
|
+
command = "hub hub standalone > #{path} && chmod 755 #{path}"
|
93
|
+
run_with_conflict_check(path, command)
|
94
|
+
end
|
95
|
+
|
96
|
+
def configure_passenger
|
97
|
+
path = "/opt/nginx/tanjun"
|
98
|
+
command = "rvmsudo passenger-install-nginx-module --auto --auto-download --prefix=#{path}"
|
99
|
+
run_with_conflict_check(path, command)
|
81
100
|
|
82
|
-
|
83
|
-
|
101
|
+
path = "/etc/init.d/nginx"
|
102
|
+
command = "sudo curl -L -o /etc/init.d/nginx http://bit.ly/nginx-ubuntu-init-file && sudo chown root:root /etc/init.d/nginx && sudo chmod 0755 '/etc/init.d/nginx' && sudo update-rc.d nginx defaults"
|
103
|
+
run_with_conflict_check(path, command)
|
104
|
+
end
|
105
|
+
end
|
84
106
|
end
|
85
107
|
end
|
86
|
-
end
|
87
108
|
|
88
109
|
Tanjun::Tanjun.start
|
@@ -0,0 +1,21 @@
|
|
1
|
+
gems:
|
2
|
+
- rails
|
3
|
+
- hub
|
4
|
+
- passenger
|
5
|
+
paths:
|
6
|
+
- projects
|
7
|
+
- bin
|
8
|
+
vundles:
|
9
|
+
- tpope/vim-fugitive
|
10
|
+
- tpope/vim-rails
|
11
|
+
- LStinson/TagmaBufMgr
|
12
|
+
gitconfig:
|
13
|
+
user.name:
|
14
|
+
user.email:
|
15
|
+
github.user:
|
16
|
+
github.token:
|
17
|
+
core.excludesfile: ~/.gitignore
|
18
|
+
color.gui: true
|
19
|
+
ssh:
|
20
|
+
email:
|
21
|
+
passphrase:
|
@@ -11,8 +11,4 @@ function ps1_git() {
|
|
11
11
|
|
12
12
|
PS1="\[\033[1;32m\]\u@\h/\j \[\033[1;33m\]\W\[\033[1;34m\]\$(ps1_git)\[\033[00m\]\$ "
|
13
13
|
|
14
|
-
|
15
|
-
eval "$(hub alias -s)"
|
16
|
-
fi
|
17
|
-
|
18
|
-
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
|
14
|
+
eval "$(hub alias -s)"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
type: map
|
2
|
+
mapping:
|
3
|
+
"rubies":
|
4
|
+
type: seq
|
5
|
+
"paths":
|
6
|
+
type: seq
|
7
|
+
"gems":
|
8
|
+
type: seq
|
9
|
+
sequence:
|
10
|
+
- type: map
|
11
|
+
mapping:
|
12
|
+
"name":
|
13
|
+
required: yes
|
14
|
+
"version":
|
15
|
+
"vundles":
|
16
|
+
type: seq
|
17
|
+
"personal":
|
18
|
+
type: map
|
19
|
+
mapping:
|
20
|
+
"full_name":
|
21
|
+
required: yes
|
22
|
+
"email":
|
23
|
+
required: yes
|
24
|
+
"github_user":
|
25
|
+
|
26
|
+
"gitconfig":
|
27
|
+
type: seq
|
28
|
+
sequence:
|
29
|
+
- type: map
|
30
|
+
mapping:
|
31
|
+
"key":
|
32
|
+
required: yes
|
33
|
+
"value":
|
34
|
+
required: yes
|
35
|
+
"ssh":
|
36
|
+
type: map
|
37
|
+
mapping:
|
data/bin/templates/vimrc
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
set nocompatible
|
2
|
+
filetype off
|
3
|
+
|
4
|
+
set rtp+=~/.vim/bundle/vundle
|
5
|
+
call vundle#rc()
|
6
|
+
|
7
|
+
Bundle 'gmarik/vundle'
|
8
|
+
<%- @vundles.each do |vundle| %>
|
9
|
+
Bundle '<%= vundle %>'
|
10
|
+
<%- end %>
|
11
|
+
|
12
|
+
filetype plugin indent on
|
13
|
+
|
14
|
+
syntax on
|
15
|
+
set background=dark
|
16
|
+
set ruler
|
17
|
+
set more
|
18
|
+
set number
|
19
|
+
set autoindent
|
20
|
+
set expandtab
|
21
|
+
set softtabstop=2
|
22
|
+
set shiftwidth=2
|
23
|
+
set scrolloff=5
|
24
|
+
set history=200
|
25
|
+
set backspace=indent,eol,start
|
26
|
+
set wrap
|
27
|
+
set linebreak
|
28
|
+
set showbreak=>\ \ \
|
29
|
+
set undolevels=1000
|
30
|
+
set complete=.,w,b,u,U,t,i,d
|
31
|
+
set ttyfast
|
32
|
+
set showmatch
|
33
|
+
set ignorecase
|
34
|
+
set smartcase
|
35
|
+
nore ; :
|
36
|
+
nore , ;
|
37
|
+
inoremap <Down> <C-o>gj
|
38
|
+
inoremap <Up> <C-o>gk
|
39
|
+
set list
|
40
|
+
set listchars=tab:>·,trail:·
|
41
|
+
set textwidth=80
|
42
|
+
set colorcolumn=+1
|
43
|
+
inoremap jk <Esc>
|
44
|
+
inoremap kj <Esc>
|
45
|
+
inoremap jj <Esc>
|
46
|
+
inoremap kk <Esc>
|
47
|
+
autocmd BufWritePost .vimrc source %
|
48
|
+
autocmd BufWritePre * :%s/\s\+$//e
|
49
|
+
set hidden
|
50
|
+
set wildmenu
|
data/lib/tanjun.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'tanjun/thor_ext/shell/password'
|
2
|
+
|
3
|
+
class Thor
|
4
|
+
module Shell
|
5
|
+
class Basic
|
6
|
+
include Password
|
7
|
+
|
8
|
+
# Asks something to the user and receives a response.
|
9
|
+
#
|
10
|
+
# If asked to limit the correct responses, you can pass in an
|
11
|
+
# array of acceptable answers. If one of those is not supplied,
|
12
|
+
# they will be shown a message stating that one of those answers
|
13
|
+
# must be given and re-asked the question.
|
14
|
+
#
|
15
|
+
# ==== Example
|
16
|
+
# ask("What is your name?")
|
17
|
+
#
|
18
|
+
# ask("What is your favorite Neopolitan flavor?", :limited_to => ["strawberry", "chocolate", "vanilla"])
|
19
|
+
#
|
20
|
+
def ask(statement, *args)
|
21
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
22
|
+
response = if options[:limited_to]
|
23
|
+
ask_filtered(statement, options[:limited_to], *args)
|
24
|
+
elsif options[:password]
|
25
|
+
ask_passwordly(statement, *args)
|
26
|
+
else
|
27
|
+
ask_simply(statement, *args)
|
28
|
+
end
|
29
|
+
|
30
|
+
if options[:required] && response.to_s.strip.length == 0
|
31
|
+
say "Your response can't be empty. Please try again."
|
32
|
+
ask(statement, *args.push(options)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
re 'tempfile'
|
2
|
+
|
3
|
+
class Thor
|
4
|
+
module Shell
|
5
|
+
module Password
|
6
|
+
if RUBY_PLATFORM =~ /mswin32|mingw32/
|
7
|
+
|
8
|
+
def ask_passwordly(statement, color = nil)
|
9
|
+
say("#{statement} ", color)
|
10
|
+
|
11
|
+
require "Win32API"
|
12
|
+
char = nil
|
13
|
+
password = ''
|
14
|
+
|
15
|
+
while char = Win32API.new("crtdll", "_getch", [ ], "L").Call do
|
16
|
+
break if char == 10 || char == 13 # received carriage return or newline
|
17
|
+
if char == 127 || char == 8 # backspace and delete
|
18
|
+
password.slice!(-1, 1)
|
19
|
+
else
|
20
|
+
# windows might throw a -1 at us so make sure to handle RangeError
|
21
|
+
(password << char.chr) rescue RangeError
|
22
|
+
end
|
23
|
+
end
|
24
|
+
puts
|
25
|
+
return password
|
26
|
+
end
|
27
|
+
|
28
|
+
else
|
29
|
+
|
30
|
+
def ask_passwordly(statement, color = nil)
|
31
|
+
system "stty -echo"
|
32
|
+
password = ask(statement, color)
|
33
|
+
puts
|
34
|
+
return password
|
35
|
+
ensure
|
36
|
+
system "stty echo"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/tanjun/version.rb
CHANGED
data/tanjun.gemspec
CHANGED
metadata
CHANGED
@@ -1,40 +1,78 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: tanjun
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: true
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- alpha4
|
10
|
+
version: 0.0.1.alpha4
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Rupert
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2012-04-16 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
15
22
|
name: thor
|
16
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
25
|
none: false
|
18
|
-
requirements:
|
26
|
+
requirements:
|
19
27
|
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 14
|
32
|
+
- 6
|
21
33
|
version: 0.14.6
|
22
34
|
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: hashie
|
23
38
|
prerelease: false
|
24
|
-
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
25
40
|
none: false
|
26
|
-
requirements:
|
41
|
+
requirements:
|
27
42
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
segments:
|
45
|
+
- 1
|
46
|
+
- 2
|
47
|
+
- 0
|
48
|
+
version: 1.2.0
|
49
|
+
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: kwalify
|
53
|
+
prerelease: false
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ~>
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
- 7
|
62
|
+
- 2
|
63
|
+
version: 0.7.2
|
64
|
+
type: :runtime
|
65
|
+
version_requirements: *id003
|
30
66
|
description: A collection of tools for faster development
|
31
|
-
email:
|
67
|
+
email:
|
32
68
|
- rupert@madden-abbott.com
|
33
|
-
executables:
|
69
|
+
executables:
|
34
70
|
- tanjun
|
35
71
|
extensions: []
|
72
|
+
|
36
73
|
extra_rdoc_files: []
|
37
|
-
|
74
|
+
|
75
|
+
files:
|
38
76
|
- .gitignore
|
39
77
|
- Gemfile
|
40
78
|
- LICENSE
|
@@ -45,7 +83,10 @@ files:
|
|
45
83
|
- bin/project
|
46
84
|
- bin/tanjun
|
47
85
|
- bin/templates/gitignore
|
86
|
+
- bin/templates/tanjun.yml
|
48
87
|
- bin/templates/tanjun_profile
|
88
|
+
- bin/templates/tanjun_schema.yml
|
89
|
+
- bin/templates/vimrc
|
49
90
|
- lib/interact/templates/meta/script.rb
|
50
91
|
- lib/interact/templates/project/app/views/layout/application.html.haml.tt
|
51
92
|
- lib/tanjun.rb
|
@@ -54,30 +95,43 @@ files:
|
|
54
95
|
- lib/tanjun/generators/bootstrap-sass/install/install_generator.rb
|
55
96
|
- lib/tanjun/generators/guard/install/install_generator.rb
|
56
97
|
- lib/tanjun/thor_ext/actions.rb
|
98
|
+
- lib/tanjun/thor_ext/shell/basic.rb
|
99
|
+
- lib/tanjun/thor_ext/shell/password.rb
|
57
100
|
- lib/tanjun/version.rb
|
58
101
|
- tanjun.gemspec
|
102
|
+
has_rdoc: true
|
59
103
|
homepage: http://github.com/rupert654/tanjun
|
60
104
|
licenses: []
|
105
|
+
|
61
106
|
post_install_message:
|
62
107
|
rdoc_options: []
|
63
|
-
|
108
|
+
|
109
|
+
require_paths:
|
64
110
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
112
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
version: "0"
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
120
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
121
|
+
requirements:
|
122
|
+
- - ">"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
segments:
|
125
|
+
- 1
|
126
|
+
- 3
|
127
|
+
- 1
|
76
128
|
version: 1.3.1
|
77
129
|
requirements: []
|
130
|
+
|
78
131
|
rubyforge_project:
|
79
|
-
rubygems_version: 1.
|
132
|
+
rubygems_version: 1.3.7
|
80
133
|
signing_key:
|
81
134
|
specification_version: 3
|
82
135
|
summary: Scripts and generators to speed up your development
|
83
136
|
test_files: []
|
137
|
+
|