gemstrap 0.0.4 → 0.0.6
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.
- checksums.yaml +5 -13
- data/README.md +52 -0
- data/lib/gemstrap/cli.rb +31 -9
- data/lib/gemstrap/generator.rb +7 -10
- data/lib/gemstrap/template/gemspec.erb +2 -2
- data/lib/gemstrap/version.rb +1 -1
- metadata +24 -10
- data/lib/gemstrap/colorize.rb +0 -19
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MmFhZGNiNTMyNWIwNjAzN2YzYmU2NmZmYjQ0YWYwYjQ5ZWQ1NjYxYw==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 444c3fdfe5711b3879a40e83f586c9a342c35e73
|
4
|
+
data.tar.gz: c72b8b1304376616f6a3c11963a46df09faf5709
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NjhmNDE2ZWE0ZGI4YjcxNjk1NTMzOTdmY2QyNjA2ZWRlZjYyZjcwNGVkMjk4
|
11
|
-
Yzk4YTIyMWM3NTA1YTkyNDkwMzY3YzUyM2Q1MTJlZDY5NGYzNjI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDM0MTY2MGU2NmMwZTkxZTI4YjY1MTc2MWJkZmM0OWMzOWFhYzAzZTVjZjI4
|
14
|
-
NmM3MzgxZmU4MDNhMWY3ZWYyMTVkNTBhYjkzNWQyYzM3YTBlOTZhZWQ5YWMx
|
15
|
-
NTE0NjYxZTk0Njc5N2I5OTI1YmI1Njc2N2ZhNmIxY2I4YzVjM2U=
|
6
|
+
metadata.gz: 33adff9f5c3f57298d8eb6db5d080ae9cef93ac090a747eed8a661f67d8da61678c972983b2f4887dc0cf23c7466b1914a6cac198856bc2b3f0b250e6211809f
|
7
|
+
data.tar.gz: bb6efe15fb6850948bd4f085211b186413a97396abab3f8f7c6a82f519832a22f0b76cfd4f9f04b2991152dc697d34a38d87cd9f3eeac6404b48645b5902dd4d
|
data/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# gemstrap
|
2
|
+
|
3
|
+
[](https://travis-ci.org/dieb/gemstrap)
|
4
|
+
[](https://codeclimate.com/github/dieb/gemstrap)
|
5
|
+
|
6
|
+
[travis]: http://travis-ci.org/dieb/travis
|
7
|
+
[codeclimate]: https://codeclimate.com/github/dieb/gemstrap
|
8
|
+
|
9
|
+
Fastest way to bootstrap a new ruby gem.
|
10
|
+
|
11
|
+

|
12
|
+
|
13
|
+
## Installing
|
14
|
+
|
15
|
+
```shell
|
16
|
+
$ gem install gemstrap
|
17
|
+
```
|
18
|
+
|
19
|
+
Alternatively use our Docker image [dieb/gemstrap](https://registry.hub.docker.com/u/dieb/gemstrap/):
|
20
|
+
|
21
|
+
```bash
|
22
|
+
$ docker pull dieb/gemstrap
|
23
|
+
```
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
```bash
|
28
|
+
$ gemstrap -h
|
29
|
+
Usage: gemstrap [options]
|
30
|
+
-h, --help Display this message
|
31
|
+
-V, --version Display version
|
32
|
+
-n, --name GEM_NAME Gem name
|
33
|
+
-d, --description GEM_DESC Gem description
|
34
|
+
-a, --authors AUTHORS CSV list of authors names (e.g. John Dorian, Christopher Turk)
|
35
|
+
-m, --emails AUTHORS_EMAILS CSV list of corresponding authors emails (e.g. jd@sacredheart.com, turk@sacredheart.com)
|
36
|
+
-s, --summary SUMMARY Gem summary. If not supplied takes description value.
|
37
|
+
-g, --github_user GITHUB_USER Github user. If not blank, homepage will be set to GITHUB_USER/GEM_NAME
|
38
|
+
-H, --homepage HOMEPAGE Homepage URL. Takes priority over the github_user parameter.
|
39
|
+
-i, --interactive Interactive mode. Prompt for user the parameters for gem generate.
|
40
|
+
```
|
41
|
+
|
42
|
+
Or if you prefer through Docker:
|
43
|
+
|
44
|
+
```bash
|
45
|
+
$ docker run --rm -ti -v $(pwd):/build dieb/gemstrap
|
46
|
+
gemstrap: starting interactive mode
|
47
|
+
gemstrap: please type in the required fields:
|
48
|
+
gem name: my_gem
|
49
|
+
...
|
50
|
+
```
|
51
|
+
|
52
|
+
Please note we bind the current folder to /build, which is where gemstrap spits out the new gem.
|
data/lib/gemstrap/cli.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
require 'gemstrap/version'
|
3
3
|
require 'gemstrap/generator'
|
4
|
+
require 'term/ansicolor'
|
4
5
|
|
5
6
|
module Gemstrap
|
6
7
|
class CLI
|
8
|
+
extend Term::ANSIColor
|
9
|
+
|
7
10
|
def self.read(arguments = ARGV)
|
8
11
|
options = Hash.new
|
9
12
|
optparse = OptionParser.new do |opts|
|
@@ -42,21 +45,40 @@ module Gemstrap
|
|
42
45
|
end
|
43
46
|
optparse.parse!(arguments)
|
44
47
|
options = run_interactive_mode if options.empty?
|
45
|
-
fail
|
48
|
+
fail('error: gem name cannot be empty') if options[:gem_name].size == 0
|
49
|
+
options[:homepage] = "https://github.com/#{options[:github_user]}/#{options[:gem_name]}" if options[:homepage].size == 0
|
46
50
|
options[:summary] ||= options[:description]
|
47
51
|
options
|
48
52
|
end
|
49
53
|
|
50
54
|
def self.run_interactive_mode
|
51
55
|
options = Hash.new
|
52
|
-
|
53
|
-
|
54
|
-
options[:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
56
|
+
puts "gemstrap: starting interactive mode"
|
57
|
+
puts 'gemstrap: please type in the required fields:'
|
58
|
+
options[:gem_name] = prompt(' gem name: ')
|
59
|
+
|
60
|
+
unless `which git`.empty?
|
61
|
+
git_name = `git config --global --get user.name`.strip
|
62
|
+
git_email = `git config --global --get user.email`.strip
|
63
|
+
git_author = "#{git_name} <#{git_email}>"
|
64
|
+
author = prompt(" author (press enter to autofill with #{git_author}): ")
|
65
|
+
if author.empty?
|
66
|
+
options[:authors] = [git_name]
|
67
|
+
options[:authors_emails] = [git_email]
|
68
|
+
else
|
69
|
+
options[:authors] = [author.split(' <').first]
|
70
|
+
options[:authors_emails] = [author.split(' <').last[0..-2]]
|
71
|
+
end
|
72
|
+
else
|
73
|
+
options[:authors] = [prompt(' author: ')]
|
74
|
+
options[:authors_emails] = [prompt(' author email: ')]
|
75
|
+
end
|
76
|
+
|
77
|
+
puts 'gemstrap: please type in the optional fields (hit ENTER to skip):'
|
78
|
+
options[:description] = prompt(' gem description: ')
|
79
|
+
options[:summary] = prompt(' gem summary: ')
|
80
|
+
options[:github_user] = prompt(' github user: ')
|
81
|
+
options[:homepage] = prompt(" homepage (press ENTER to autofill with https://github.com/#{options[:github_user]}/#{options[:gem_name]}): ")
|
60
82
|
options
|
61
83
|
end
|
62
84
|
|
data/lib/gemstrap/generator.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require 'fileutils'
|
3
|
+
require 'term/ansicolor'
|
3
4
|
|
4
5
|
require 'gemstrap/template'
|
5
|
-
require 'gemstrap/colorize'
|
6
6
|
|
7
7
|
module Gemstrap
|
8
8
|
class Generator
|
9
9
|
include FileUtils
|
10
|
-
include
|
10
|
+
include Term::ANSIColor
|
11
11
|
|
12
12
|
def run(args)
|
13
13
|
options.merge!(args)
|
14
|
-
puts "
|
14
|
+
puts "gemstrap: creating gem #{yellow(gem_name)}"
|
15
15
|
say_args(args)
|
16
16
|
generate!
|
17
17
|
rescue => e
|
@@ -48,12 +48,12 @@ module Gemstrap
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def generate!
|
51
|
-
puts '
|
51
|
+
puts 'gemstrap: generating...'
|
52
52
|
mkdir_p(path)
|
53
53
|
generate_root_files
|
54
54
|
generate_lib_files
|
55
55
|
mkdir_p(spec_path)
|
56
|
-
|
56
|
+
puts 'gemstrap: done!'
|
57
57
|
end
|
58
58
|
|
59
59
|
def generate_root_files
|
@@ -92,16 +92,13 @@ module Gemstrap
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def say_args(args)
|
95
|
-
puts ' gem data'
|
96
95
|
args.each do |k, v|
|
97
|
-
|
98
|
-
puts " using #{k.ljust(28)} => #{v}"
|
96
|
+
puts " #{white(bold('using'))} #{k.to_s.ljust(16)} => #{v}"
|
99
97
|
end
|
100
98
|
end
|
101
99
|
|
102
100
|
def say_created(item)
|
103
|
-
|
104
|
-
puts " #{created_color} #{item}"
|
101
|
+
puts " #{green(bold('create'))} #{item}"
|
105
102
|
end
|
106
103
|
|
107
104
|
def gem_name_to_module_name
|
@@ -10,12 +10,12 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.version = <%= gem_module %>::VERSION
|
11
11
|
<% if authors %>s.authors = <%= authors %><% end %>
|
12
12
|
<% if authors_emails %>s.email = <%= authors_emails %><% end %>
|
13
|
-
s.homepage = <% if homepage.size > 0 %>'<%= homepage %>'<%
|
13
|
+
s.homepage = <% if homepage.size > 0 %>'<%= homepage %>'<% end %>
|
14
14
|
s.summary = <%= summary.dump %>
|
15
15
|
s.description = <%= description.dump %>
|
16
16
|
s.license = 'MIT'
|
17
17
|
|
18
|
-
s.files = Dir['{
|
18
|
+
s.files = Dir['{lib,bin}/**/*', 'MIT-LICENSE', 'Rakefile', 'README.md']
|
19
19
|
s.test_files = Dir['spec/**/*']
|
20
20
|
|
21
21
|
s.add_development_dependency 'rake'
|
data/lib/gemstrap/version.rb
CHANGED
metadata
CHANGED
@@ -1,43 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemstrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- André Dieb Martins
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '10.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '10.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: term-ansicolor
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
41
55
|
description: Command-line tool for bootstraping a new ruby gem in seconds.
|
42
56
|
email:
|
43
57
|
- andre.dieb@gmail.com
|
@@ -46,11 +60,11 @@ executables:
|
|
46
60
|
extensions: []
|
47
61
|
extra_rdoc_files: []
|
48
62
|
files:
|
63
|
+
- README.md
|
49
64
|
- Rakefile
|
50
65
|
- bin/gemstrap
|
51
66
|
- lib/gemstrap.rb
|
52
67
|
- lib/gemstrap/cli.rb
|
53
|
-
- lib/gemstrap/colorize.rb
|
54
68
|
- lib/gemstrap/generator.rb
|
55
69
|
- lib/gemstrap/template.rb
|
56
70
|
- lib/gemstrap/template/Gemfile
|
@@ -72,17 +86,17 @@ require_paths:
|
|
72
86
|
- lib
|
73
87
|
required_ruby_version: !ruby/object:Gem::Requirement
|
74
88
|
requirements:
|
75
|
-
- -
|
89
|
+
- - ">="
|
76
90
|
- !ruby/object:Gem::Version
|
77
91
|
version: '0'
|
78
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
requirements: []
|
84
98
|
rubyforge_project:
|
85
|
-
rubygems_version: 2.
|
99
|
+
rubygems_version: 2.4.3
|
86
100
|
signing_key:
|
87
101
|
specification_version: 4
|
88
102
|
summary: Fastest way to bootstrap a new ruby gem.
|
data/lib/gemstrap/colorize.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
module Gemstrap
|
2
|
-
module Colorize
|
3
|
-
CLEAR = "\e[0m"
|
4
|
-
BOLD = "\e[1m"
|
5
|
-
BLACK = "\e[30m"
|
6
|
-
RED = "\e[31m"
|
7
|
-
GREEN = "\e[32m"
|
8
|
-
YELLOW = "\e[33m"
|
9
|
-
BLUE = "\e[34m"
|
10
|
-
MAGENTA = "\e[35m"
|
11
|
-
CYAN = "\e[36m"
|
12
|
-
WHITE = "\e[37m"
|
13
|
-
|
14
|
-
def color(text, color, bold = false)
|
15
|
-
bold = bold ? BOLD : ''
|
16
|
-
"#{bold}#{color}#{text}#{CLEAR}"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|