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 CHANGED
@@ -1 +1 @@
1
- 0.2.1
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.2.1"
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 = ["Lucas Jenss"]
12
- s.date = %q{2011-06-10}
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 = ["gemignore"]
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 = ["MIT"]
41
- s.require_paths = ["lib"]
42
- s.rubygems_version = %q{1.3.7}
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
@@ -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
- snippets = fetch(ARGV[0])
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 '#{ARGV[0]}'", 1
103
+ error "No snippets found for '#{keyword}'", 1
84
104
  elsif snippets.length > 1
85
- error "Multiple possible snippets found for '#{ARGV[0]}'.", 1
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("\n\n# Added by gemignore. Snippet '#{snippet}'\n" + snippetData)
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
- files = response["blobs"].map { |k,v| t = k.split('.'); (t[0] =~ search; $1) if t.last === 'gitignore' }
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
- end
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
- prerelease: false
5
- segments:
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
- date: 2011-06-10 00:00:00 +02:00
18
- default_executable: gemignore
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: &id001 !ruby/object:Gem::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: *id001
35
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *70346489392340
25
+ - !ruby/object:Gem::Dependency
36
26
  name: rainbow
37
- requirement: &id002 !ruby/object:Gem::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: *id002
50
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *70346489390960
36
+ - !ruby/object:Gem::Dependency
51
37
  name: rspec
52
- requirement: &id003 !ruby/object:Gem::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: *id003
65
- - !ruby/object:Gem::Dependency
46
+ version_requirements: *70346489389620
47
+ - !ruby/object:Gem::Dependency
66
48
  name: bundler
67
- requirement: &id004 !ruby/object:Gem::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: *id004
80
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *70346489388420
58
+ - !ruby/object:Gem::Dependency
81
59
  name: jeweler
82
- requirement: &id005 !ruby/object:Gem::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: *id005
95
- - !ruby/object:Gem::Dependency
68
+ version_requirements: *70346489387220
69
+ - !ruby/object:Gem::Dependency
96
70
  name: rcov
97
- requirement: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &70346489385860 !ruby/object:Gem::Requirement
98
72
  none: false
99
- requirements:
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- segments:
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: *id006
108
- description: gemignore allows you to automatically insert a wide range of preset .gitignore snippets into your .gitignore files
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
- has_rdoc: true
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
- hash: -4383186091217616758
149
- segments:
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ segments:
150
121
  - 0
151
- version: "0"
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
- segments:
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.3.7
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
-