code_lister 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +12 -20
- data/Rakefile +1 -10
- data/code_lister.gemspec +17 -16
- data/lib/code_lister/cli.rb +17 -67
- data/lib/code_lister/code_lister.rb +0 -4
- data/lib/code_lister/main.rb +3 -9
- data/lib/code_lister/version.rb +1 -1
- data/spec/code_lister/code_lister_spec.rb +0 -1
- data/spec/code_lister/main_spec.rb +3 -3
- data/spec/spec_helper.rb +1 -1
- metadata +23 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29c1f57613e53602f8a8a101828cac54b05af619
|
4
|
+
data.tar.gz: f7268d21369628be9089d7a2becb88ece7bccaaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c969f80d68ff5a2d844faced9f2c9127a1319c1be362b2a2b4fcef79f7a22c10d5e1c037c9f691c8d71360598f678d30351fd4f8747aee262de434a372b02dad
|
7
|
+
data.tar.gz: dcb3aa77c8b80de464d5925c28d92c686315dd4f9330743fb202d90e0d34a7a0bc0b04efd884983f0d77d8e60c1df94ad75f6aebd9d4bb799ee226c4a37c0237
|
data/README.md
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/code_lister.svg)](http://badge.fury.io/rb/code_lister)
|
4
4
|
|
5
|
-
|
6
|
-
It provides the functionality similar to subset of `find` command in Linux/Unix system.
|
5
|
+
Find/filter files based on simple criteria like `extension`, include/exclude some words in the name.
|
6
|
+
It provides the functionality similar to subset of `find | grep` command in Linux/Unix system.
|
7
7
|
|
8
|
-
Initially
|
9
|
-
that I can re-use it in other project.
|
8
|
+
Initially this was part of my internal project. I extracted this out as a gem so
|
9
|
+
that I can re-use it in other project.
|
10
10
|
|
11
11
|
### Installation
|
12
12
|
|
@@ -36,14 +36,15 @@ Usage/Synopsis:
|
|
36
36
|
|
37
37
|
```
|
38
38
|
Usage:
|
39
|
-
code_lister find
|
39
|
+
code_lister find [OPTIONS]
|
40
40
|
|
41
41
|
Options:
|
42
42
|
-b, [--base-dir=BASE_DIR] # Base directory
|
43
43
|
# Default: . (current directory)
|
44
44
|
-e, [--exts=one two three] # List of extensions to search for
|
45
|
-
-
|
46
|
-
-
|
45
|
+
-f, [--non-exts=one two three] # List of extensions to search for
|
46
|
+
-n, [--inc-words=one two three] # List of words to be included in the result
|
47
|
+
-x, [--exc-words=one two three] # List of words to be excluded from the result
|
47
48
|
-i, [--ignore-case], [--no-ignore-case] # Match case insensitively
|
48
49
|
# Default: true
|
49
50
|
-r, [--recursive], [--no-recursive] # Search for files recursively
|
@@ -57,8 +58,6 @@ Example Usage:
|
|
57
58
|
|
58
59
|
- Find all java and ruby files in a given directory
|
59
60
|
|
60
|
-
e.g.
|
61
|
-
|
62
61
|
```ruby
|
63
62
|
|
64
63
|
# find all files that ends with '*.java' or '*.rb' in a given directory
|
@@ -83,7 +82,6 @@ spec/fixtures/demo1.xxx.rb
|
|
83
82
|
spec/fixtures/demo2.xxx.rb
|
84
83
|
spec/fixtures/java/demo3.xxx.java
|
85
84
|
spec/fixtures/java/demo4.xxx.java
|
86
|
-
|
87
85
|
```
|
88
86
|
|
89
87
|
- Same as previous step, but filter out result that contain the word `demo3` or `demo4`
|
@@ -130,11 +128,7 @@ rake -T
|
|
130
128
|
# Play around with it using Pry
|
131
129
|
rake pry
|
132
130
|
|
133
|
-
|
134
|
-
rake irb
|
135
|
-
```
|
136
|
-
|
137
|
-
From inside `Pry` or `IRB`
|
131
|
+
From inside `Pry`
|
138
132
|
|
139
133
|
```ruby
|
140
134
|
include CodeLister
|
@@ -155,27 +149,25 @@ always welcome.
|
|
155
149
|
|
156
150
|
### Changelogs
|
157
151
|
|
158
|
-
#### 0.0.
|
152
|
+
#### 0.0.7
|
153
|
+
- Make use of the 'agile_utils' gem for better code re-use
|
159
154
|
|
155
|
+
#### 0.0.6
|
160
156
|
- Add `--non-exts` option that make it possible to include files without extension.
|
161
157
|
|
162
158
|
#### 0.0.5
|
163
|
-
|
164
159
|
- Refactoring the CLI options to make it easy for re-use in other library.
|
165
160
|
|
166
161
|
#### 0.0.4
|
167
|
-
|
168
162
|
- Add `ignore-case` option
|
169
163
|
- Use `-n' for `--include-words` and use `-i` for `--ignore-case`.
|
170
164
|
- Make the `--recursive` the default option
|
171
165
|
- Make the `--ignore-case` the default option
|
172
166
|
|
173
167
|
#### 0.0.3
|
174
|
-
|
175
168
|
- Update README.md to include better sample usage, and misc cleanup.
|
176
169
|
|
177
170
|
#### 0.0.2
|
178
|
-
|
179
171
|
- initial release
|
180
172
|
|
181
173
|
## Contributing
|
data/Rakefile
CHANGED
@@ -3,17 +3,8 @@ Bundler::GemHelper.install_tasks
|
|
3
3
|
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
RSpec::Core::RakeTask.new(:spec)
|
6
|
-
task :default => :spec
|
7
6
|
|
8
|
-
task :
|
9
|
-
require 'irb'
|
10
|
-
require 'awesome_print'
|
11
|
-
require 'irb/completion'
|
12
|
-
require 'code_lister'
|
13
|
-
include CodeLister
|
14
|
-
ARGV.clear
|
15
|
-
IRB.start
|
16
|
-
end
|
7
|
+
task :default => :spec
|
17
8
|
|
18
9
|
task :pry do
|
19
10
|
require 'pry'
|
data/code_lister.gemspec
CHANGED
@@ -4,24 +4,25 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'code_lister/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'code_lister'
|
8
8
|
spec.version = CodeLister::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary = %q{
|
12
|
-
spec.description = %q{List/filter files similar to 'find' command in Linux/Unix based system}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
9
|
+
spec.authors = ['Burin Choomnuan']
|
10
|
+
spec.email = ['agilecreativity@gmail.com']
|
11
|
+
spec.summary = %q{List/filter files like 'find | grep' command in Linux/Unix based system}
|
12
|
+
spec.description = %q{List/filter files similar to 'find | grep' command in Linux/Unix based system}
|
13
|
+
spec.homepage = 'https://github.com/agilecreativity/code_lister'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
spec.files = `git ls-files -z`.split("\x0")
|
16
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = [
|
19
|
-
spec.add_runtime_dependency
|
20
|
-
spec.
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
23
|
-
spec.add_development_dependency
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
spec.add_runtime_dependency 'thor', '~> 0.19'
|
20
|
+
spec.add_runtime_dependency 'agile_utils', '~> 0.0.5'
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.1'
|
23
|
+
spec.add_development_dependency 'rspec', '~> 2.14'
|
24
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.2'
|
25
|
+
spec.add_development_dependency 'awesome_print', '~> 1.2'
|
26
|
+
spec.add_development_dependency 'pry', '~> 0.9'
|
27
|
+
spec.add_development_dependency 'fuubar', '~> 1.3'
|
27
28
|
end
|
data/lib/code_lister/cli.rb
CHANGED
@@ -1,74 +1,24 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'agile_utils'
|
2
3
|
require_relative 'core_ext/hash'
|
3
|
-
|
4
|
-
module CodeLister
|
5
|
-
class BaseCLI < Thor
|
6
|
-
|
7
|
-
def self.shared_options
|
8
|
-
|
9
|
-
method_option :base_dir,
|
10
|
-
aliases: "-b",
|
11
|
-
desc: "Base directory",
|
12
|
-
default: Dir.pwd
|
13
|
-
|
14
|
-
method_option :exts,
|
15
|
-
aliases: "-e",
|
16
|
-
desc: "List of extensions to search for",
|
17
|
-
type: :array,
|
18
|
-
default: []
|
19
|
-
|
20
|
-
method_option :non_exts,
|
21
|
-
aliases: "-f",
|
22
|
-
desc: "List of files without extension to search for",
|
23
|
-
type: :array,
|
24
|
-
default: []
|
25
|
-
|
26
|
-
method_option :inc_words,
|
27
|
-
aliases: "-n",
|
28
|
-
desc: "List of words to be included in the result if any",
|
29
|
-
type: :array,
|
30
|
-
default: []
|
31
|
-
|
32
|
-
method_option :exc_words,
|
33
|
-
aliases: "-x",
|
34
|
-
desc: "List of words to be excluded from the result if any",
|
35
|
-
type: :array,
|
36
|
-
default: []
|
37
|
-
|
38
|
-
method_option :ignore_case,
|
39
|
-
aliases: "-i",
|
40
|
-
desc: "Match case insensitively",
|
41
|
-
type: :boolean,
|
42
|
-
default: true
|
43
|
-
|
44
|
-
method_option :recursive,
|
45
|
-
aliases: "-r",
|
46
|
-
desc: "Search for files recursively",
|
47
|
-
type: :boolean,
|
48
|
-
default: true
|
49
|
-
|
50
|
-
method_option :version,
|
51
|
-
aliases: "-v",
|
52
|
-
desc: "Display version information",
|
53
|
-
type: :boolean,
|
54
|
-
default: false
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
4
|
module CodeLister
|
60
|
-
class CLI <
|
61
|
-
|
5
|
+
class CLI < Thor
|
62
6
|
desc "find", "List files by extensions, patterns, and simple criteria"
|
63
|
-
|
64
|
-
|
65
|
-
|
7
|
+
method_option *AgileUtils::Options::BASE_DIR
|
8
|
+
method_option *AgileUtils::Options::EXTS
|
9
|
+
method_option *AgileUtils::Options::NON_EXTS
|
10
|
+
method_option *AgileUtils::Options::INC_WORDS
|
11
|
+
method_option *AgileUtils::Options::EXC_WORDS
|
12
|
+
method_option *AgileUtils::Options::IGNORE_CASE
|
13
|
+
method_option *AgileUtils::Options::RECURSIVE
|
14
|
+
method_option *AgileUtils::Options::VERSION
|
66
15
|
def find
|
67
|
-
|
16
|
+
opts = options.symbolize_keys
|
17
|
+
if opts[:version]
|
68
18
|
puts "You are using CodeLister Version #{CodeLister::VERSION}"
|
69
19
|
exit
|
70
20
|
end
|
71
|
-
CodeLister::Main.run(
|
21
|
+
CodeLister::Main.run(opts)
|
72
22
|
end
|
73
23
|
|
74
24
|
# Note: we don't use help so that we can run :r !./bin/code_lister help find
|
@@ -81,11 +31,11 @@ Usage:
|
|
81
31
|
|
82
32
|
Options:
|
83
33
|
-b, [--base-dir=BASE_DIR] # Base directory
|
84
|
-
# Default:
|
34
|
+
# Default: . (current directory)
|
85
35
|
-e, [--exts=one two three] # List of extensions to search for
|
86
|
-
-f, [--non-exts=one two three] # List of
|
87
|
-
-n, [--inc-words=one two three] # List of words to be included in the result
|
88
|
-
-x, [--exc-words=one two three] # List of words to be excluded from the result
|
36
|
+
-f, [--non-exts=one two three] # List of extensions to search for
|
37
|
+
-n, [--inc-words=one two three] # List of words to be included in the result
|
38
|
+
-x, [--exc-words=one two three] # List of words to be excluded from the result
|
89
39
|
-i, [--ignore-case], [--no-ignore-case] # Match case insensitively
|
90
40
|
# Default: true
|
91
41
|
-r, [--recursive], [--no-recursive] # Search for files recursively
|
data/lib/code_lister/main.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module CodeLister
|
2
2
|
class Main
|
3
3
|
class << self
|
4
|
-
|
5
4
|
def run(options = {})
|
6
5
|
args = default_options.merge(options)
|
7
6
|
|
@@ -13,25 +12,20 @@ module CodeLister
|
|
13
12
|
|
14
13
|
files = CodeLister.filter(files, inc_words: inc_words,
|
15
14
|
exc_words: exc_words)
|
16
|
-
|
17
|
-
# Note: for now just print out the list of files
|
18
15
|
puts files
|
19
|
-
|
20
16
|
files
|
21
17
|
end
|
22
18
|
|
23
19
|
private
|
24
20
|
|
25
21
|
def default_options
|
26
|
-
|
27
|
-
|
28
|
-
recursive: false,
|
22
|
+
{ base_dir: Dir.pwd,
|
23
|
+
recursive: true,
|
29
24
|
ignore_case: true,
|
30
25
|
inc_words: [],
|
31
26
|
exc_words: [],
|
32
27
|
exts: [],
|
33
|
-
non_exts: []
|
34
|
-
}
|
28
|
+
non_exts: [] }
|
35
29
|
end
|
36
30
|
end
|
37
31
|
end
|
data/lib/code_lister/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require_relative '../spec_helper'
|
2
2
|
describe CodeLister do
|
3
|
-
context
|
3
|
+
context '#files' do
|
4
4
|
it 'works with non_exts option' do
|
5
5
|
list = CodeLister::Main.run base_dir: 'spec/fixtures/',
|
6
6
|
recursive: true,
|
7
7
|
non_exts: %w(noexts1_zzz noexts2_zzz)
|
8
|
-
expect(list).to eq [
|
9
|
-
|
8
|
+
expect(list).to eq ['spec/fixtures/noexts1_zzz',
|
9
|
+
'spec/fixtures/noexts2_zzz']
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code_lister
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Burin Choomnuan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.19'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.19'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: agile_utils
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.5
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
40
|
+
version: 0.0.5
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +136,8 @@ dependencies:
|
|
122
136
|
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '1.3'
|
125
|
-
description: List/filter files similar to 'find' command in Linux/Unix based
|
139
|
+
description: List/filter files similar to 'find | grep' command in Linux/Unix based
|
140
|
+
system
|
126
141
|
email:
|
127
142
|
- agilecreativity@gmail.com
|
128
143
|
executables:
|
@@ -183,7 +198,7 @@ rubyforge_project:
|
|
183
198
|
rubygems_version: 2.2.2
|
184
199
|
signing_key:
|
185
200
|
specification_version: 4
|
186
|
-
summary:
|
201
|
+
summary: List/filter files like 'find | grep' command in Linux/Unix based system
|
187
202
|
test_files:
|
188
203
|
- spec/code_lister/code_lister_spec.rb
|
189
204
|
- spec/code_lister/main_spec.rb
|