bad_encodings-ruby19 0.1.2 → 1.0.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/README.md CHANGED
@@ -10,7 +10,7 @@ Installation
10
10
 
11
11
  Install gem as normal
12
12
 
13
- gem install adamsalter-bad_encodings-ruby19
13
+ gem install bad_encodings-ruby19 --source=http://gemcutter.org
14
14
 
15
15
 
16
16
  Usage
@@ -1,4 +1,4 @@
1
1
  ---
2
- :major: 0
3
- :minor: 1
4
- :patch: 2
2
+ :major: 1
3
+ :minor: 0
4
+ :patch: 0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bad_encodings-ruby19}
8
- s.version = "0.1.2"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Adam Salter"]
12
- s.date = %q{2009-09-11}
12
+ s.date = %q{2009-10-02}
13
13
  s.default_executable = %q{find_bad_encodings}
14
14
  s.description = %q{Small gem that tries to make the task of finding bad ruby encodings in your project a little easier.}
15
15
  s.email = %q{adam@codebright.net}
@@ -21,6 +21,7 @@ Gem::Specification.new do |s|
21
21
  "README.md",
22
22
  "Rakefile",
23
23
  "VERSION.yml",
24
+ "bad_encodings-ruby19-1.0.0.gem",
24
25
  "bad_encodings-ruby19.gemspec",
25
26
  "bin/find_bad_encodings",
26
27
  "lib/bad_encodings.rb",
@@ -38,7 +39,7 @@ Gem::Specification.new do |s|
38
39
  s.rdoc_options = ["--charset=UTF-8"]
39
40
  s.require_paths = ["lib"]
40
41
  s.rubygems_version = %q{1.3.5}
41
- s.summary = %q{Small gem that tries to make the task of finding bad ruby encodings in your project a little easier.}
42
+ s.summary = %q{Find bad ruby 1.9 encodings in your project.}
42
43
  s.test_files = [
43
44
  "test/bad_encodings/bad1.rb",
44
45
  "test/bad_encodings/bad2.rb",
@@ -53,14 +54,14 @@ Gem::Specification.new do |s|
53
54
  s.specification_version = 3
54
55
 
55
56
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
56
- s.add_runtime_dependency(%q<optiflag>, ["~> 0.6.5"])
57
+ s.add_runtime_dependency(%q<clip>, [">= 1.0"])
57
58
  s.add_development_dependency(%q<shoulda>, [">= 0"])
58
59
  else
59
- s.add_dependency(%q<optiflag>, ["~> 0.6.5"])
60
+ s.add_dependency(%q<clip>, [">= 1.0"])
60
61
  s.add_dependency(%q<shoulda>, [">= 0"])
61
62
  end
62
63
  else
63
- s.add_dependency(%q<optiflag>, ["~> 0.6.5"])
64
+ s.add_dependency(%q<clip>, [">= 1.0"])
64
65
  s.add_dependency(%q<shoulda>, [">= 0"])
65
66
  end
66
67
  end
@@ -1,20 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
- require 'fileutils'
2
+ require 'clip'
3
3
  require 'bad_encodings'
4
4
 
5
- if ARGV[0] && File.exists?(ARGV[0])
6
- dir = ARGV[0]
5
+ options = Clip do |p|
6
+ p.optional 'e', 'file-extensions', :desc => %Q{Set file extensions to search (comma-separated). E.g. 'rb,yml'. To search all files, just pass a comma ','}, :multi => true, :default => "rb,rake,haml,sass,erb"
7
+ p.flag 'v', 'verbose', :desc => 'Make it chatty.'
8
+ end
9
+
10
+ if options.valid? && !options.remainder.empty?
11
+ ENV['VERBOSE'] = 'true' if options.verbose?
12
+ paths = []
13
+ options.remainder.each do |dir|
14
+ paths << [File.expand_path(dir), dir] if File.exists?(dir)
15
+ end
7
16
  else
8
- raise ArgumentError, "must supply a directory"
17
+ $stderr.puts "find_bad_encodings dir1 [dir2 ...] [options]\n" + options.to_s
18
+ exit
9
19
  end
10
20
 
11
21
  raise ArgumentError, "Requires Ruby 1.9" unless RUBY_VERSION > '1.9'
12
- dir = File.expand_path(dir)
13
- bad_lines = BadEncodings.find_lines_in_path(dir)
22
+
23
+ bad_lines = []
24
+ paths.each do |path|
25
+ bad_lines += BadEncodings.find_lines_in_path(path[0], options.file_extensions).map! {|bl| [bl[0].sub(path[0],path[1]), bl[1]] }
26
+ end
14
27
  unless bad_lines.empty?
15
28
  puts 'The following bad encodings were found:'
16
29
  bad_lines.each do |line|
17
- puts "[%s:%d]" % [line[0].sub(dir,ARGV[0]), line[1]]
30
+ puts "[%s:%d]" % [line[0], line[1]]
18
31
  end
19
32
  else
20
33
  puts 'No bad encodings found'
@@ -2,8 +2,8 @@ require 'find'
2
2
 
3
3
  class BadEncodings
4
4
  class << self
5
- def find_lines_in_path(dir, includes = nil, dir_excludes = nil)
6
- includes ||= /(\.rb|\.rake|\.haml|\.sass|\.erb)$/
5
+ def find_lines_in_path(dir, file_extensions = ["rb|rake|haml|sass|erb"], dir_excludes = nil)
6
+ regex = /#{file_extensions.join('|')}$/
7
7
  files = []
8
8
  Find.find(dir) do |path|
9
9
  if FileTest.directory?(path)
@@ -12,7 +12,7 @@ class BadEncodings
12
12
  else
13
13
  next
14
14
  end
15
- elsif path =~ includes
15
+ elsif path =~ regex
16
16
  files << path
17
17
  end
18
18
  end
@@ -28,6 +28,7 @@ class BadEncodings
28
28
  end
29
29
 
30
30
  def find_lines_in_file(file)
31
+ puts "#{file}" if ENV['VERBOSE']
31
32
  bad_lines = []
32
33
  file = File.open(file, "r:US-ASCII")
33
34
  file.each_line do |line|
@@ -40,6 +41,7 @@ class BadEncodings
40
41
  # if invalid byte sequence on first line of file
41
42
  end
42
43
  next if line.valid_encoding?
44
+ puts "Bad encoding found: line #{file.lineno}" if ENV['VERBOSE']
43
45
  bad_lines << [file.path, file.lineno]
44
46
  end
45
47
  bad_lines
@@ -3,13 +3,13 @@ begin
3
3
  Jeweler::Tasks.new do |s|
4
4
  s.name = 'bad_encodings-ruby19'
5
5
  s.executables = ['find_bad_encodings']
6
- s.summary = 'Small gem that tries to make the task of finding bad ruby encodings in your project a little easier.'
6
+ s.summary = 'Find bad ruby 1.9 encodings in your project.'
7
7
  s.email = 'adam@codebright.net'
8
8
  s.homepage = 'http://github.com/adamsalter/bad_encodings-ruby19'
9
9
  s.description = 'Small gem that tries to make the task of finding bad ruby encodings in your project a little easier.'
10
10
  s.authors = ['Adam Salter']
11
11
  s.files = FileList['*', '{bin,lib,test,tasks}/**/*']
12
- s.add_dependency 'optiflag', '~> 0.6.5'
12
+ s.add_dependency 'clip', '>= 1.0'
13
13
  s.add_development_dependency 'shoulda'
14
14
  end
15
15
  end
@@ -1,4 +1,4 @@
1
- # shouldn't give error since yaml files are 'OK'
1
+ # shouldn't normally give error since yaml files are'OK'
2
2
 
3
3
  test:
4
4
  tëst: 'here'
@@ -1,5 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/test_helper'
2
2
 
3
+ # ENV['VERBOSE'] = 'true'
4
+
3
5
  class BadEncodingsTest < Test::Unit::TestCase
4
6
  context 'A file with bad encodings' do
5
7
  should 'fail' do
@@ -14,8 +16,13 @@ class BadEncodingsTest < Test::Unit::TestCase
14
16
  should 'fail' do
15
17
  path = File.dirname(__FILE__)
16
18
  bad_lines = BadEncodings.find_lines_in_path(path)
17
- puts bad_lines.inspect
18
19
  assert_equal bad_lines, [[path+"/bad_encodings/bad1.rb", 4], [path+"/bad_encodings/bad2.rb", 1], [path+"/bad_encodings/bad2.rb", 3], [path+"/bad_encodings/bad3.rb", 1]]
19
20
  end
21
+
22
+ should 'fail with certain file extensions' do
23
+ path = File.dirname(__FILE__)
24
+ bad_lines = BadEncodings.find_lines_in_path(path, ['yml'])
25
+ assert_equal bad_lines, [[path+"/bad_encodings/ok.yml", 4]]
26
+ end
20
27
  end
21
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bad_encodings-ruby19
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Salter
@@ -9,18 +9,18 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-11 00:00:00 +10:00
12
+ date: 2009-10-02 00:00:00 +10:00
13
13
  default_executable: find_bad_encodings
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: optiflag
16
+ name: clip
17
17
  type: :runtime
18
18
  version_requirement:
19
19
  version_requirements: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ~>
21
+ - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.6.5
23
+ version: "1.0"
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: shoulda
@@ -44,6 +44,7 @@ files:
44
44
  - README.md
45
45
  - Rakefile
46
46
  - VERSION.yml
47
+ - bad_encodings-ruby19-1.0.0.gem
47
48
  - bad_encodings-ruby19.gemspec
48
49
  - bin/find_bad_encodings
49
50
  - lib/bad_encodings.rb
@@ -83,7 +84,7 @@ rubyforge_project:
83
84
  rubygems_version: 1.3.5
84
85
  signing_key:
85
86
  specification_version: 3
86
- summary: Small gem that tries to make the task of finding bad ruby encodings in your project a little easier.
87
+ summary: Find bad ruby 1.9 encodings in your project.
87
88
  test_files:
88
89
  - test/bad_encodings/bad1.rb
89
90
  - test/bad_encodings/bad2.rb