pass 0.0.2 → 0.0.3
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 +7 -0
- data/Gemfile +3 -3
- data/README.rdoc +28 -3
- data/Rakefile +2 -9
- data/VERSION +1 -1
- data/bin/pass +1 -1
- data/lib/pass.rb +80 -26
- data/pass.gemspec +15 -18
- data/spec/pass_spec.rb +113 -22
- metadata +51 -43
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 91bcbf233648df0ab6b9b4a676eb9edc2ba9878a
|
4
|
+
data.tar.gz: 6ab800006ea66bbe80c5fdfa274d056de1eae4b7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 06e9e65a42cf8323eb67d8f010c72040e8a9200df6b3b6a64c7116ac1d011d4eadfc3dd6c31143659588ae2f2bea3e22c8c879c2f7b9f5f4e6c0e853502b291c
|
7
|
+
data.tar.gz: 1aeb65fb37aec9c688e32e33351f7b59c38e354751e727ee0f3227c35ab266e69af7b3652a7c6d3e7ed64ec238ebd356f8ecaab2bac412d6bac1e99f4c3abd38
|
data/Gemfile
CHANGED
@@ -8,7 +8,7 @@ source "http://rubygems.org"
|
|
8
8
|
group :development do
|
9
9
|
gem "rspec", "~> 2.8.0"
|
10
10
|
gem "shoulda", ">= 0"
|
11
|
-
gem "
|
12
|
-
gem "
|
13
|
-
gem "
|
11
|
+
gem "yard", "~> 0.7"
|
12
|
+
gem "bundler", "~> 1.9.1"
|
13
|
+
gem "jeweler", "~> 1.8.3"
|
14
14
|
end
|
data/README.rdoc
CHANGED
@@ -1,8 +1,33 @@
|
|
1
|
-
=
|
1
|
+
= Pass
|
2
2
|
|
3
|
-
|
3
|
+
Pass is a command to generator random passwords for CUI.
|
4
4
|
|
5
|
-
==
|
5
|
+
== Using
|
6
|
+
|
7
|
+
The first step is to install the gem
|
8
|
+
|
9
|
+
gem install pass
|
10
|
+
|
11
|
+
You can run Pass to generate one random password. A generated password has 12 characters with more than one upper case letter, lower case letter, and numeric character.
|
12
|
+
|
13
|
+
pass
|
14
|
+
|
15
|
+
If you need more passwords, you can specify the number of passwords.
|
16
|
+
|
17
|
+
pass 12
|
18
|
+
|
19
|
+
You can specify the password length by -c option.
|
20
|
+
|
21
|
+
pass -c 18
|
22
|
+
|
23
|
+
== Options
|
24
|
+
|
25
|
+
```
|
26
|
+
-c NUM specify password length
|
27
|
+
-v, --version show version
|
28
|
+
```
|
29
|
+
|
30
|
+
== Contributing to Pass
|
6
31
|
|
7
32
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
33
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
data/Rakefile
CHANGED
@@ -39,12 +39,5 @@ end
|
|
39
39
|
|
40
40
|
task :default => :spec
|
41
41
|
|
42
|
-
require '
|
43
|
-
Rake::
|
44
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
45
|
-
|
46
|
-
rdoc.rdoc_dir = 'rdoc'
|
47
|
-
rdoc.title = "pass #{version}"
|
48
|
-
rdoc.rdoc_files.include('README*')
|
49
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
50
|
-
end
|
42
|
+
require 'yard'
|
43
|
+
YARD::Rake::YardocTask.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/bin/pass
CHANGED
data/lib/pass.rb
CHANGED
@@ -1,37 +1,91 @@
|
|
1
|
+
require 'optparse'
|
1
2
|
|
2
3
|
class Pass
|
3
|
-
|
4
|
+
MIN_NUM_CHARACTERS = 3
|
4
5
|
NUM_CHARACTERS = 12
|
5
|
-
@list_carachters = ('a'..'z').to_a + ('A'..'Z').to_a + ('1'..'9').to_a
|
6
|
-
@list_carachters.delete_if{|s| %w[l o I O 1].include? s }
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
7
|
+
class Error < StandardError; end
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@list_carachters = ('a'..'z').to_a + ('A'..'Z').to_a + ('1'..'9').to_a - %w[l o I O 1]
|
11
|
+
@num_iteration = 100
|
12
|
+
@validation_regexps = [/\d/, /[a-z]/, /[A-Z]/]
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate(num = NUM_CHARACTERS)
|
16
|
+
if !integer?(num) || num < MIN_NUM_CHARACTERS
|
17
|
+
raise Pass::Error, "Invalid Argument: number of characters should be more than #{MIN_NUM_CHARACTERS}."
|
18
|
+
end
|
19
|
+
|
20
|
+
@num_iteration.times do
|
21
|
+
pass = @list_carachters.sample(num).join
|
22
|
+
return pass if valid?(pass)
|
23
|
+
end
|
24
|
+
raise "Not Converged: #{@num_iteration} times"
|
25
|
+
end
|
26
|
+
|
27
|
+
def valid?(pass)
|
28
|
+
@validation_regexps.all?{|reg| reg =~ pass}
|
29
|
+
end
|
30
|
+
|
31
|
+
def multi_generate(num_password, num_character = NUM_CHARACTERS)
|
24
32
|
passwords = []
|
25
|
-
num_password.times
|
26
|
-
passwords <<
|
27
|
-
|
33
|
+
num_password.times do
|
34
|
+
passwords << generate(num_character)
|
35
|
+
end
|
28
36
|
passwords
|
29
37
|
end
|
30
38
|
|
31
|
-
def Pass.
|
32
|
-
|
33
|
-
|
39
|
+
def Pass.generate(num = NUM_CHARACTERS)
|
40
|
+
Pass.new.generate(num)
|
41
|
+
end
|
42
|
+
|
43
|
+
def exec(argv)
|
44
|
+
num_characters = NUM_CHARACTERS
|
45
|
+
opts = OptionParser.new
|
46
|
+
opts.on('-c NUM', 'specify password length') do |value|
|
47
|
+
num_characters = value
|
48
|
+
end
|
49
|
+
opts.on_tail('-v', '--version', 'show version') do
|
50
|
+
puts "#{self.class.name} #{version}"
|
51
|
+
exit 0
|
52
|
+
end
|
53
|
+
opts.banner = <<END
|
54
|
+
Usage: pass [options] [number of passwords]
|
55
|
+
|
56
|
+
Description:
|
57
|
+
Generates random passwords.
|
58
|
+
|
59
|
+
Options:
|
60
|
+
END
|
61
|
+
begin
|
62
|
+
res_argv = opts.parse!(argv)
|
63
|
+
num_times = res_argv[0] || 1
|
64
|
+
puts multi_generate(num_times.to_i, num_characters.to_i)
|
65
|
+
rescue SystemExit
|
66
|
+
rescue Exception => e
|
67
|
+
$stderr.puts "Error: #{e.message}"
|
68
|
+
exit 1
|
69
|
+
end
|
70
|
+
exit 0
|
71
|
+
end
|
72
|
+
|
73
|
+
def num_iteration
|
74
|
+
@num_iteration
|
75
|
+
end
|
76
|
+
|
77
|
+
def num_iteration=(value)
|
78
|
+
raise(Error, "Invalid Argument: num_iteration #{value}") if !integer?(value) || value <= 0
|
79
|
+
@num_iteration = value
|
80
|
+
end
|
81
|
+
|
82
|
+
def version
|
83
|
+
number = File.read(File.dirname(__FILE__) + '/../VERSION')
|
84
|
+
number.chomp
|
85
|
+
end
|
34
86
|
|
35
|
-
|
87
|
+
private
|
88
|
+
def integer?(value)
|
89
|
+
value.kind_of?(Integer)
|
36
90
|
end
|
37
91
|
end
|
data/pass.gemspec
CHANGED
@@ -2,14 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: pass 0.0.3 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "pass"
|
8
|
-
s.version = "0.0.
|
9
|
+
s.version = "0.0.3"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Hitoshi Kurokawa"]
|
12
|
-
s.date = "
|
14
|
+
s.date = "2015-08-22"
|
13
15
|
s.description = "gem pass - Password Generator for CUI"
|
14
16
|
s.email = "hitoshi@nextseed.jp"
|
15
17
|
s.executables = ["pass"]
|
@@ -33,36 +35,31 @@ Gem::Specification.new do |s|
|
|
33
35
|
]
|
34
36
|
s.homepage = "http://github.com/krhitoshi/pass"
|
35
37
|
s.licenses = ["MIT"]
|
36
|
-
s.
|
37
|
-
s.rubygems_version = "1.8.10"
|
38
|
+
s.rubygems_version = "2.4.5"
|
38
39
|
s.summary = "Password Generator for CUI"
|
39
|
-
s.test_files = [
|
40
|
-
"spec/pass_spec.rb",
|
41
|
-
"spec/spec_helper.rb"
|
42
|
-
]
|
43
40
|
|
44
41
|
if s.respond_to? :specification_version then
|
45
|
-
s.specification_version =
|
42
|
+
s.specification_version = 4
|
46
43
|
|
47
44
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
45
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
49
46
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
50
|
-
s.add_development_dependency(%q<
|
51
|
-
s.add_development_dependency(%q<
|
52
|
-
s.add_development_dependency(%q<
|
47
|
+
s.add_development_dependency(%q<yard>, ["~> 0.7"])
|
48
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.9.1"])
|
49
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
|
53
50
|
else
|
54
51
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
55
52
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
56
|
-
s.add_dependency(%q<
|
57
|
-
s.add_dependency(%q<
|
58
|
-
s.add_dependency(%q<
|
53
|
+
s.add_dependency(%q<yard>, ["~> 0.7"])
|
54
|
+
s.add_dependency(%q<bundler>, ["~> 1.9.1"])
|
55
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
59
56
|
end
|
60
57
|
else
|
61
58
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
62
59
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
63
|
-
s.add_dependency(%q<
|
64
|
-
s.add_dependency(%q<
|
65
|
-
s.add_dependency(%q<
|
60
|
+
s.add_dependency(%q<yard>, ["~> 0.7"])
|
61
|
+
s.add_dependency(%q<bundler>, ["~> 1.9.1"])
|
62
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
|
66
63
|
end
|
67
64
|
end
|
68
65
|
|
data/spec/pass_spec.rb
CHANGED
@@ -4,86 +4,177 @@ require "stringio"
|
|
4
4
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
5
5
|
|
6
6
|
describe Pass do
|
7
|
+
before do
|
8
|
+
@pass = Pass.new
|
9
|
+
end
|
10
|
+
|
7
11
|
describe "出力される文字数" do
|
8
12
|
it "文字数を指定できること" do
|
9
|
-
|
10
|
-
|
11
|
-
|
13
|
+
@pass.generate(3).size.should be(3)
|
14
|
+
@pass.generate(12).size.should be(12)
|
15
|
+
@pass.generate(30).size.should be(30)
|
12
16
|
end
|
13
17
|
|
14
18
|
it "文字数を指定しない場合は12文字であること" do
|
15
|
-
|
19
|
+
@pass.generate.size.should be(12)
|
16
20
|
end
|
17
21
|
end
|
18
22
|
|
19
23
|
describe "特定文字が含まれること含まれないこと" do
|
20
24
|
it "文字列に数字が1文字以上含まれること" do
|
21
25
|
10.times do
|
22
|
-
(
|
26
|
+
(@pass.generate(3) =~ /\d/).should be_true
|
23
27
|
end
|
24
28
|
end
|
25
29
|
|
26
30
|
it "文字列に小文字が1文字以上含まれること" do
|
27
31
|
10.times do
|
28
|
-
(
|
32
|
+
(@pass.generate(3) =~ /[a-z]/).should be_true
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
32
36
|
it "文字列に大文字が1文字以上含まれること" do
|
33
37
|
10.times do
|
34
|
-
(
|
38
|
+
(@pass.generate(3) =~ /[A-Z]/).should be_true
|
35
39
|
end
|
36
40
|
end
|
37
41
|
|
38
42
|
it "見間違えやすい文字列が含まれないこと" do
|
39
43
|
exclude_characters = %w[l o I O 1]
|
40
44
|
50.times do
|
41
|
-
(
|
45
|
+
(@pass.generate =~ /[#{exclude_characters.join}]/).should be_false
|
42
46
|
end
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
46
|
-
describe "
|
47
|
-
|
50
|
+
describe "valid?" do
|
51
|
+
it "validなパスワードでtrueを返すこと" do
|
52
|
+
@pass.valid?("aT2").should be_true
|
53
|
+
@pass.valid?("1bR").should be_true
|
54
|
+
@pass.valid?("J0e").should be_true
|
55
|
+
end
|
56
|
+
|
57
|
+
it "invalidなパスワードでfalseを返すこと" do
|
58
|
+
@pass.valid?("012").should be_false
|
59
|
+
@pass.valid?("abc").should be_false
|
60
|
+
@pass.valid?("ABC").should be_false
|
61
|
+
@pass.valid?("0bc").should be_false
|
62
|
+
@pass.valid?("0BC").should be_false
|
63
|
+
@pass.valid?("AbC").should be_false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "イテレーションの回数" do
|
68
|
+
it "回数値を読み込めること" do
|
69
|
+
@pass.num_iteration.should be(100)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "回数値を変更できること" do
|
73
|
+
@pass.num_iteration = 10
|
74
|
+
@pass.num_iteration.should be(10)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "0以下の回数値を入力すると例外を発生" do
|
78
|
+
lambda{ @pass.num_iteration = 0 }.should raise_error(Pass::Error)
|
79
|
+
lambda{ @pass.num_iteration = -10 }.should raise_error(Pass::Error)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "例外の発生" do
|
84
|
+
describe "特定回数の生成試行数を超えると例外を発生すること" do
|
48
85
|
before do
|
49
|
-
|
86
|
+
@pass.num_iteration = 1
|
50
87
|
end
|
88
|
+
|
51
89
|
after do
|
52
|
-
|
90
|
+
@pass.num_iteration = 100
|
53
91
|
end
|
92
|
+
|
54
93
|
it do
|
55
94
|
lambda{
|
56
95
|
10.times do
|
57
|
-
|
96
|
+
@pass.generate(3)
|
58
97
|
end
|
59
98
|
}.should raise_error
|
60
99
|
end
|
61
100
|
end
|
62
101
|
|
63
|
-
it "2
|
64
|
-
lambda{
|
65
|
-
lambda{
|
66
|
-
lambda{
|
102
|
+
it "2以下の文字数を指定すると例外を発生すること" do
|
103
|
+
lambda{ @pass.generate(2) }.should raise_error(Pass::Error)
|
104
|
+
lambda{ @pass.generate(0) }.should raise_error(Pass::Error)
|
105
|
+
lambda{ @pass.generate(-10) }.should raise_error(Pass::Error)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "不正な回数値を入力すると例外を発生すること" do
|
109
|
+
lambda{ @pass.num_iteration = "abc" }.should raise_error(Pass::Error)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "不正な文字数を入力すると例外を発生すること" do
|
113
|
+
lambda{ @pass.generate("abc") }.should raise_error(Pass::Error)
|
67
114
|
end
|
68
115
|
end
|
69
116
|
|
70
117
|
describe "複数パスワードの生成" do
|
71
118
|
it "指定した個数のパスワードを配列で返すこと" do
|
72
|
-
|
119
|
+
@pass.multi_generate(2).size.should be(2)
|
73
120
|
end
|
74
121
|
end
|
75
122
|
|
76
123
|
describe "コマンド用メソッド" do
|
77
|
-
|
78
|
-
argv = [3, 16] # 16文字 3パスワード
|
124
|
+
before do
|
79
125
|
$stdout = StringIO.new
|
80
|
-
|
126
|
+
end
|
127
|
+
|
128
|
+
after do
|
129
|
+
$stdout = STDOUT
|
130
|
+
end
|
131
|
+
|
132
|
+
it "オプション無しで1個のパスワードが返ってくること" do
|
133
|
+
argv = [] # オプションなし
|
134
|
+
lambda{ @pass.exec(argv) }.should raise_error(SystemExit)
|
135
|
+
passwords = $stdout.string.chomp.split("\n")
|
136
|
+
passwords.size.should be(1)
|
137
|
+
passwords.first.size.should be(12)
|
138
|
+
end
|
139
|
+
|
140
|
+
it "パスワード数が指定できること" do
|
141
|
+
argv = [20] # 20パスワード
|
142
|
+
lambda{ @pass.exec(argv) }.should raise_error(SystemExit)
|
143
|
+
passwords = $stdout.string.chomp.split("\n")
|
144
|
+
passwords.size.should be(20)
|
145
|
+
passwords.each do |password|
|
146
|
+
password.size.should be(12)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
it "-cで文字数指定ができること" do
|
151
|
+
argv = %w[3 -c 16] # 16文字 3パスワード
|
152
|
+
lambda{ @pass.exec(argv) }.should raise_error(SystemExit)
|
81
153
|
passwords = $stdout.string.chomp.split("\n")
|
82
154
|
passwords.size.should be(3)
|
83
155
|
passwords.each do |password|
|
84
156
|
password.size.should be(16)
|
85
157
|
end
|
86
|
-
|
158
|
+
end
|
159
|
+
|
160
|
+
it "指定順序が変わっても-cで文字数指定ができること" do
|
161
|
+
argv = %w[-c 16 3] # 16文字 3パスワード
|
162
|
+
lambda{ @pass.exec(argv) }.should raise_error(SystemExit)
|
163
|
+
passwords = $stdout.string.chomp.split("\n")
|
164
|
+
passwords.size.should be(3)
|
165
|
+
passwords.each do |password|
|
166
|
+
password.size.should be(16)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
it "-vでバージョン表示をするとSystemExitすること" do
|
171
|
+
argv = %w[-v]
|
172
|
+
lambda{ @pass.exec(argv) }.should raise_error(SystemExit)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "-hでヘルプ表示をするとSystemExitすること" do
|
176
|
+
argv = %w[-h]
|
177
|
+
lambda{ @pass.exec(argv) }.should raise_error(SystemExit)
|
87
178
|
end
|
88
179
|
end
|
89
180
|
end
|
metadata
CHANGED
@@ -1,71 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pass
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Hitoshi Kurokawa
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2015-08-22 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 2.8.0
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.8.0
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: shoulda
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement:
|
39
|
-
none: false
|
42
|
+
name: yard
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- - ~>
|
45
|
+
- - "~>"
|
42
46
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
47
|
+
version: '0.7'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.7'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement:
|
50
|
-
none: false
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- - ~>
|
59
|
+
- - "~>"
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
61
|
+
version: 1.9.1
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.9.1
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
requirement:
|
61
|
-
none: false
|
70
|
+
name: jeweler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - "~>"
|
64
74
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
75
|
+
version: 1.8.3
|
66
76
|
type: :development
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.8.3
|
69
83
|
description: gem pass - Password Generator for CUI
|
70
84
|
email: hitoshi@nextseed.jp
|
71
85
|
executables:
|
@@ -75,8 +89,8 @@ extra_rdoc_files:
|
|
75
89
|
- LICENSE.txt
|
76
90
|
- README.rdoc
|
77
91
|
files:
|
78
|
-
- .document
|
79
|
-
- .rspec
|
92
|
+
- ".document"
|
93
|
+
- ".rspec"
|
80
94
|
- Gemfile
|
81
95
|
- LICENSE.txt
|
82
96
|
- README.rdoc
|
@@ -90,31 +104,25 @@ files:
|
|
90
104
|
homepage: http://github.com/krhitoshi/pass
|
91
105
|
licenses:
|
92
106
|
- MIT
|
107
|
+
metadata: {}
|
93
108
|
post_install_message:
|
94
109
|
rdoc_options: []
|
95
110
|
require_paths:
|
96
111
|
- lib
|
97
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
113
|
requirements:
|
100
|
-
- -
|
114
|
+
- - ">="
|
101
115
|
- !ruby/object:Gem::Version
|
102
116
|
version: '0'
|
103
|
-
segments:
|
104
|
-
- 0
|
105
|
-
hash: -1435995826567472989
|
106
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
107
|
-
none: false
|
108
118
|
requirements:
|
109
|
-
- -
|
119
|
+
- - ">="
|
110
120
|
- !ruby/object:Gem::Version
|
111
121
|
version: '0'
|
112
122
|
requirements: []
|
113
123
|
rubyforge_project:
|
114
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.4.5
|
115
125
|
signing_key:
|
116
|
-
specification_version:
|
126
|
+
specification_version: 4
|
117
127
|
summary: Password Generator for CUI
|
118
|
-
test_files:
|
119
|
-
- spec/pass_spec.rb
|
120
|
-
- spec/spec_helper.rb
|
128
|
+
test_files: []
|