gemignore 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/gemignore.gemspec +9 -10
- data/lib/gemignore/main.rb +32 -6
- data/tests/gemignore_add_test.rb +45 -0
- metadata +61 -94
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/gemignore.gemspec
CHANGED
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{gemignore}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-06
|
13
|
-
s.default_executable = %q{gemignore}
|
11
|
+
s.authors = [%q{Lucas Jenss}]
|
12
|
+
s.date = %q{2011-11-06}
|
14
13
|
s.description = %q{gemignore allows you to automatically insert a wide range of preset .gitignore snippets into your .gitignore files}
|
15
14
|
s.email = %q{lucas@x3ro.de}
|
16
|
-
s.executables = [
|
15
|
+
s.executables = [%q{gemignore}]
|
17
16
|
s.extra_rdoc_files = [
|
18
17
|
"LICENSE.txt",
|
19
18
|
"README.rdoc"
|
@@ -34,16 +33,16 @@ Gem::Specification.new do |s|
|
|
34
33
|
"lib/gemignore/main.rb",
|
35
34
|
"lib/gemignore/util.rb",
|
36
35
|
"spec/gemignore_spec.rb",
|
37
|
-
"spec/spec_helper.rb"
|
36
|
+
"spec/spec_helper.rb",
|
37
|
+
"tests/gemignore_add_test.rb"
|
38
38
|
]
|
39
39
|
s.homepage = %q{http://coding-journal.com/hassle-free-gitignore-management-with-gemignore/}
|
40
|
-
s.licenses = [
|
41
|
-
s.require_paths = [
|
42
|
-
s.rubygems_version = %q{1.
|
40
|
+
s.licenses = [%q{MIT}]
|
41
|
+
s.require_paths = [%q{lib}]
|
42
|
+
s.rubygems_version = %q{1.8.6}
|
43
43
|
s.summary = %q{A command-line tool which ought to simplify your daily .gitignore hassle}
|
44
44
|
|
45
45
|
if s.respond_to? :specification_version then
|
46
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
47
46
|
s.specification_version = 3
|
48
47
|
|
49
48
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
data/lib/gemignore/main.rb
CHANGED
@@ -52,6 +52,24 @@ Available commands are:
|
|
52
52
|
BANNER
|
53
53
|
end
|
54
54
|
|
55
|
+
# Check if there is an case insensitive match in the fetched snippet list, in which
|
56
|
+
# case a list containing only that snippet is returned. Otherwise, the entire list
|
57
|
+
# of snippets is retuned unmodified.
|
58
|
+
def searchExactMatch(snippets, keyword)
|
59
|
+
keyword = keyword.downcase
|
60
|
+
index = snippets.find_index { |x| x.downcase == keyword }
|
61
|
+
if index.nil?
|
62
|
+
snippets
|
63
|
+
else
|
64
|
+
[ snippets[index] ]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Returns the comment that is added before a gitignore snippet
|
69
|
+
def gitignoreCommentForSnippet(snippet)
|
70
|
+
"\n\n# Added by gemignore. Snippet '#{snippet}'\n"
|
71
|
+
end
|
72
|
+
|
55
73
|
# Displays a list of available .gitignore snippets
|
56
74
|
def list
|
57
75
|
msg "Available .gitignore snippets:", 1
|
@@ -78,11 +96,13 @@ BANNER
|
|
78
96
|
# directory in case it exists and the given snippet identifier matched
|
79
97
|
# exactly one snippet.
|
80
98
|
def add
|
81
|
-
|
99
|
+
keyword = ARGV[0]
|
100
|
+
snippets = fetch(keyword)
|
101
|
+
snippets = searchExactMatch(snippets, keyword)
|
82
102
|
if snippets.length < 1
|
83
|
-
error "No snippets found for '#{
|
103
|
+
error "No snippets found for '#{keyword}'", 1
|
84
104
|
elsif snippets.length > 1
|
85
|
-
error "Multiple possible snippets found for '#{
|
105
|
+
error "Multiple possible snippets found for '#{keyword}'.", 1
|
86
106
|
error "Please be more specific.", 1
|
87
107
|
snippets.each do |f|
|
88
108
|
notice f, 2
|
@@ -101,7 +121,7 @@ BANNER
|
|
101
121
|
|
102
122
|
f = File.new(".gitignore", "a")
|
103
123
|
snippetData = fetchFile(snippet)
|
104
|
-
f.write(
|
124
|
+
f.write(gitignoreCommentForSnippet(snippet) + snippetData)
|
105
125
|
f.close
|
106
126
|
|
107
127
|
msg "Successfully added snippet.", 1
|
@@ -127,7 +147,12 @@ BANNER
|
|
127
147
|
search = regexpForInput(search)
|
128
148
|
data = Net::HTTP.get( URI.parse('http://github.com/api/v2/json/blob/all/github/gitignore/master') )
|
129
149
|
response = JSON.parse(data)
|
130
|
-
|
150
|
+
|
151
|
+
files = response["blobs"].map do |k,v|
|
152
|
+
t = k.split('.')
|
153
|
+
(t.pop; t.join('.') =~ search; $1) if t.last === 'gitignore'
|
154
|
+
end
|
155
|
+
|
131
156
|
files.compact
|
132
157
|
end
|
133
158
|
|
@@ -153,4 +178,5 @@ BANNER
|
|
153
178
|
end
|
154
179
|
|
155
180
|
|
156
|
-
|
181
|
+
|
182
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'pathname'
|
3
|
+
require 'pp'
|
4
|
+
|
5
|
+
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
6
|
+
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
7
|
+
|
8
|
+
require 'gemignore'
|
9
|
+
|
10
|
+
GEMIGNORE_PATH = "../bin/gemignore"
|
11
|
+
|
12
|
+
class GemIgnoreAddTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test_all_snippets
|
15
|
+
gemignore = GemIgnore::Main.new
|
16
|
+
snippets = gemignore.fetch('') # Get all snippets
|
17
|
+
|
18
|
+
gitignoreLines = 0 # File should be empty, we created it in #setup
|
19
|
+
gitignoreCommentLength = gemignore.gitignoreCommentForSnippet('foobar').split("\n").length
|
20
|
+
|
21
|
+
snippets.each do |snippet|
|
22
|
+
puts %x[#{GEMIGNORE_PATH} add #{snippet}]
|
23
|
+
|
24
|
+
gitignore = File.readlines('.gitignore')
|
25
|
+
|
26
|
+
# Make sure that adding the snippet did actually add something to the file
|
27
|
+
assert(gitignore.length >= (gitignoreLines + gitignoreCommentLength), "Adding Snippet #{snippet} didn't actually add anything")
|
28
|
+
gitignoreLines = gitignore.length
|
29
|
+
|
30
|
+
# Asserting that there is not HTML in the added snippet, which would mean there
|
31
|
+
# was a 404 error when fetching the snippet.
|
32
|
+
assert(gitignore.grep(/<html>/).empty?, "Adding Snippet #{snippet} failed (HTML in the .gitignore file)")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def setup
|
37
|
+
# Change CWD to tests/ so that we don't accidentally modify another .gitignore file
|
38
|
+
Dir.chdir(File.dirname(__FILE__))
|
39
|
+
|
40
|
+
# Clear potential old .gitignore file
|
41
|
+
File.delete('.gitignore') if File.exists?('.gitignore')
|
42
|
+
File.new('.gitignore', 'w')
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
metadata
CHANGED
@@ -1,120 +1,92 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemignore
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 2
|
8
|
-
- 1
|
9
|
-
version: 0.2.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Lucas Jenss
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-11-06 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: json
|
22
|
-
requirement: &
|
16
|
+
requirement: &70346489392340 !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
segments:
|
28
|
-
- 1
|
29
|
-
- 5
|
30
|
-
- 1
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
31
21
|
version: 1.5.1
|
32
22
|
type: :runtime
|
33
23
|
prerelease: false
|
34
|
-
version_requirements: *
|
35
|
-
- !ruby/object:Gem::Dependency
|
24
|
+
version_requirements: *70346489392340
|
25
|
+
- !ruby/object:Gem::Dependency
|
36
26
|
name: rainbow
|
37
|
-
requirement: &
|
27
|
+
requirement: &70346489390960 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
29
|
+
requirements:
|
40
30
|
- - ~>
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
segments:
|
43
|
-
- 1
|
44
|
-
- 1
|
45
|
-
- 1
|
31
|
+
- !ruby/object:Gem::Version
|
46
32
|
version: 1.1.1
|
47
33
|
type: :runtime
|
48
34
|
prerelease: false
|
49
|
-
version_requirements: *
|
50
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *70346489390960
|
36
|
+
- !ruby/object:Gem::Dependency
|
51
37
|
name: rspec
|
52
|
-
requirement: &
|
38
|
+
requirement: &70346489389620 !ruby/object:Gem::Requirement
|
53
39
|
none: false
|
54
|
-
requirements:
|
40
|
+
requirements:
|
55
41
|
- - ~>
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
segments:
|
58
|
-
- 2
|
59
|
-
- 3
|
60
|
-
- 0
|
42
|
+
- !ruby/object:Gem::Version
|
61
43
|
version: 2.3.0
|
62
44
|
type: :development
|
63
45
|
prerelease: false
|
64
|
-
version_requirements: *
|
65
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
version_requirements: *70346489389620
|
47
|
+
- !ruby/object:Gem::Dependency
|
66
48
|
name: bundler
|
67
|
-
requirement: &
|
49
|
+
requirement: &70346489388420 !ruby/object:Gem::Requirement
|
68
50
|
none: false
|
69
|
-
requirements:
|
51
|
+
requirements:
|
70
52
|
- - ~>
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
segments:
|
73
|
-
- 1
|
74
|
-
- 0
|
75
|
-
- 0
|
53
|
+
- !ruby/object:Gem::Version
|
76
54
|
version: 1.0.0
|
77
55
|
type: :development
|
78
56
|
prerelease: false
|
79
|
-
version_requirements: *
|
80
|
-
- !ruby/object:Gem::Dependency
|
57
|
+
version_requirements: *70346489388420
|
58
|
+
- !ruby/object:Gem::Dependency
|
81
59
|
name: jeweler
|
82
|
-
requirement: &
|
60
|
+
requirement: &70346489387220 !ruby/object:Gem::Requirement
|
83
61
|
none: false
|
84
|
-
requirements:
|
62
|
+
requirements:
|
85
63
|
- - ~>
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
segments:
|
88
|
-
- 1
|
89
|
-
- 6
|
90
|
-
- 0
|
64
|
+
- !ruby/object:Gem::Version
|
91
65
|
version: 1.6.0
|
92
66
|
type: :development
|
93
67
|
prerelease: false
|
94
|
-
version_requirements: *
|
95
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
version_requirements: *70346489387220
|
69
|
+
- !ruby/object:Gem::Dependency
|
96
70
|
name: rcov
|
97
|
-
requirement: &
|
71
|
+
requirement: &70346489385860 !ruby/object:Gem::Requirement
|
98
72
|
none: false
|
99
|
-
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
|
103
|
-
- 0
|
104
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
105
77
|
type: :development
|
106
78
|
prerelease: false
|
107
|
-
version_requirements: *
|
108
|
-
description: gemignore allows you to automatically insert a wide range of preset .gitignore
|
79
|
+
version_requirements: *70346489385860
|
80
|
+
description: gemignore allows you to automatically insert a wide range of preset .gitignore
|
81
|
+
snippets into your .gitignore files
|
109
82
|
email: lucas@x3ro.de
|
110
|
-
executables:
|
83
|
+
executables:
|
111
84
|
- gemignore
|
112
85
|
extensions: []
|
113
|
-
|
114
|
-
extra_rdoc_files:
|
86
|
+
extra_rdoc_files:
|
115
87
|
- LICENSE.txt
|
116
88
|
- README.rdoc
|
117
|
-
files:
|
89
|
+
files:
|
118
90
|
- .document
|
119
91
|
- .rspec
|
120
92
|
- Changelog
|
@@ -131,38 +103,33 @@ files:
|
|
131
103
|
- lib/gemignore/util.rb
|
132
104
|
- spec/gemignore_spec.rb
|
133
105
|
- spec/spec_helper.rb
|
134
|
-
|
106
|
+
- tests/gemignore_add_test.rb
|
135
107
|
homepage: http://coding-journal.com/hassle-free-gitignore-management-with-gemignore/
|
136
|
-
licenses:
|
108
|
+
licenses:
|
137
109
|
- MIT
|
138
110
|
post_install_message:
|
139
111
|
rdoc_options: []
|
140
|
-
|
141
|
-
require_paths:
|
112
|
+
require_paths:
|
142
113
|
- lib
|
143
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
115
|
none: false
|
145
|
-
requirements:
|
146
|
-
- -
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
|
149
|
-
segments:
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
segments:
|
150
121
|
- 0
|
151
|
-
|
152
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
|
+
hash: 2488779062565889007
|
123
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
124
|
none: false
|
154
|
-
requirements:
|
155
|
-
- -
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
|
158
|
-
- 0
|
159
|
-
version: "0"
|
125
|
+
requirements:
|
126
|
+
- - ! '>='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0'
|
160
129
|
requirements: []
|
161
|
-
|
162
130
|
rubyforge_project:
|
163
|
-
rubygems_version: 1.
|
131
|
+
rubygems_version: 1.8.6
|
164
132
|
signing_key:
|
165
133
|
specification_version: 3
|
166
134
|
summary: A command-line tool which ought to simplify your daily .gitignore hassle
|
167
135
|
test_files: []
|
168
|
-
|