gemignore 0.2.1 → 0.3.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/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
|
-
|