parsefiles 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0b06a9a7c1730baddc47203dd32b17432f42bc48
4
+ data.tar.gz: 21d776d817820a84c9480966a2f35e32f17a57cf
5
+ SHA512:
6
+ metadata.gz: 7cf2a276067b81ac8663f5af2378dd958718d31a801993d101b14e7cd5956539aa8ad71f90e256aeb6d230c8d129d6b92a2f4e09fddefcc9de892dc25cf84fa7
7
+ data.tar.gz: 7d60c3a5640c6d2274dee16e3cbafee37b921edc7cafb0b8e2b96894b2202eeccf0a5fa16077aaa78f7f302f117fc505f85fae77faea86cbf9dde66557e480d2
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ tags
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in parsefiles.gemspec
4
+ gemspec
5
+
6
+
7
+ gem 'guard-rspec'
8
+ gem 'rb-fsevent', '~> 0.9.4'
data/Guardfile ADDED
@@ -0,0 +1,24 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+
9
+ # Rails example
10
+ watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
11
+ watch(%r{^app/(.*)(\.erb|\.haml|\.slim)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
12
+ watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
13
+ watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
14
+ watch('config/routes.rb') { "spec/routing" }
15
+ watch('app/controllers/application_controller.rb') { "spec/controllers" }
16
+
17
+ # Capybara features specs
18
+ watch(%r{^app/views/(.+)/.*\.(erb|haml|slim)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
19
+
20
+ # Turnip features and steps
21
+ watch(%r{^spec/acceptance/(.+)\.feature$})
22
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
23
+ end
24
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Chris Simpson
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Parsefiles
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'parsefiles'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install parsefiles
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/parsefiles ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
+
5
+ require 'parsefiles'
6
+ require 'cli'
7
+
8
+ Parsefiles::CLI::Main.start
9
+
data/lib/.DS_Store ADDED
Binary file
data/lib/cli.rb ADDED
@@ -0,0 +1,52 @@
1
+ require 'date'
2
+ require 'thor'
3
+ require 'thor/runner'
4
+
5
+ module Parsefiles
6
+ module CLI
7
+ class Main < Thor
8
+
9
+ desc 'version', 'Version of the Merge utility'
10
+ def version
11
+ require 'parsefiles/version'
12
+ say Parsefiles::VERSION
13
+ end
14
+
15
+ desc 'find', 'Find expression within specified text files'
16
+ long_desc <<-LONGDESC
17
+ Examples:
18
+ \x5 parsefiles find -d 2 -p simpson ./
19
+ \x5 => Search the current folder starting 2 days back for simpson.
20
+ \x5\x5 parsefiles find -s 08-01-2014 -e 08-03-2014 -p simpson ./
21
+ \x5 => Search between the 2 given dates for simpson
22
+ \x5\x5 parsefiles find -p simpson ./ /tmp/
23
+ \x5=> Search the current folder and tmp folder for simpson with today's date.
24
+ LONGDESC
25
+ method_option :days_back, aliases: '-d', type: 'string', default: '1', desc: 'number of days back to search'
26
+ method_option :start_date, aliases: '-s', type: 'string', default: Date.today.strftime('%m-%d-%Y'), desc: 'start date to begin file search from'
27
+ method_option :end_date, aliases: '-e', type: 'string', default: Date.today.strftime('%m-%d-%Y'), desc: 'end date to finish file search from'
28
+ method_option :pattern, aliases: '-p', type: 'string', default: ' ', desc: 'pattern to search for', :required => true
29
+
30
+ def find(*folders)
31
+ begin
32
+ folders = folders.split unless folders.class == Array
33
+ folders.each do |folder|
34
+ f = Parsefiles::Folders.new(folder,options)
35
+ files = f.get_files_in_range
36
+ files.each do |file|
37
+ puts "================================================"
38
+ puts "Reading : #{file}"
39
+ puts "================================================"
40
+ parse = Parsefiles::FileOps.new(file,options[:pattern])
41
+ parse.parse_file
42
+ end
43
+ end
44
+ rescue Exception => e
45
+ say e.message, :red
46
+ end
47
+ end
48
+
49
+ end
50
+ end
51
+
52
+ end
@@ -0,0 +1,41 @@
1
+ require_relative 'parse'
2
+
3
+ module Parsefiles
4
+ class FileOps
5
+
6
+ include Parse
7
+
8
+ attr_accessor :file,:pattern
9
+
10
+ def initialize(file,pattern)
11
+ @file = file
12
+ @pattern = pattern
13
+ end
14
+
15
+ def get_file_type
16
+ File.extname(@file).gsub!(/\./,'')
17
+ end
18
+
19
+ def parse_file
20
+ method_name = "parse_#{get_file_type}"
21
+ self.send method_name.to_sym
22
+ end
23
+
24
+ def match_line(line)
25
+ line = encode_string(line)
26
+ p line if line.match(@pattern)
27
+ end
28
+
29
+ def encode_string(input)
30
+ encode_it(input)
31
+ end
32
+
33
+ private
34
+
35
+ def encode_it(input)
36
+ input.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace, :replace => '').encode('UTF-8')
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,85 @@
1
+ require 'date'
2
+ require_relative 'utils'
3
+
4
+ module Parsefiles
5
+ class Folders
6
+
7
+ include Utils
8
+
9
+ attr_accessor :folder, :files
10
+
11
+ VALID_TYPES = "{txt,log,gz}"
12
+
13
+ def initialize(folder,options={})
14
+ @folder = check_location(folder)
15
+ @files = get_files_with_date
16
+ @options = options
17
+ end
18
+
19
+ def check_location(folder)
20
+ if folder.match(/.*\.log$|txt$|gz$/i)
21
+ "./#{folder}"
22
+ else
23
+ folder = remove_trailing_slash(folder)
24
+ "#{folder}/*."+VALID_TYPES
25
+ end
26
+ end
27
+
28
+ def remove_trailing_slash(folder)
29
+ folder.gsub(/(.*)\/$/,'\1')
30
+ end
31
+
32
+ def get_files_in_range
33
+ start_date = get_start_date
34
+ end_date = get_end_date
35
+
36
+ result = []
37
+ @files.each_with_index do |file,index|
38
+ result << file[0] if Folders.date_in_range(file[1],start_date,end_date)
39
+ end
40
+ result
41
+ end
42
+
43
+ def get_start_date
44
+ if @options["days_back"].to_i > 1
45
+ days_back
46
+ else
47
+ start_date
48
+ end
49
+ end
50
+
51
+ def get_end_date
52
+ Folders.validate_date_format(@options["end_date"])
53
+ @options["end_date"] if @options["end_date"]
54
+ end
55
+
56
+ def calc_start_date(days_back)
57
+ date = Date.today - days_back
58
+ date.strftime('%m-%d-%Y')
59
+ end
60
+
61
+ private
62
+
63
+ def days_back
64
+ calc_start_date(@options[:days_back].to_i)
65
+ end
66
+
67
+ def start_date
68
+ Folders.validate_date_format(@options["start_date"])
69
+ @options["start_date"] if @options["start_date"]
70
+ end
71
+
72
+ # Returns an array with file and date in unix time format ['file.txt','40001245']
73
+ def get_files_with_date
74
+ file_list = Dir.glob(@folder)
75
+ result = []
76
+ file_list.reduce([]) do |file_stats,file|
77
+ file_stats = Array.new
78
+ file_stats << file
79
+ file_stats << Folders.unix_ts(file)
80
+ result << file_stats
81
+ end
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,33 @@
1
+ require 'zlib'
2
+
3
+ module Parsefiles
4
+ module Parse
5
+
6
+
7
+ #Handles tar.gz and zip
8
+
9
+ def parse_gz
10
+ File.open(file, "r") do |f|
11
+ gz = Zlib::GzipReader.new(f)
12
+ gz.each_line do |line|
13
+ match_line(line.chomp)
14
+ end
15
+ end
16
+ end
17
+
18
+ def parse_zip
19
+ #TODO
20
+ end
21
+
22
+ def parse_log
23
+ File.open(@file, "r") do |open_file|
24
+ open_file.each do |line|
25
+ match_line(line.chomp)
26
+ end
27
+ end
28
+ end
29
+
30
+ alias_method :parse_txt, :parse_log
31
+
32
+ end
33
+ end
@@ -0,0 +1,32 @@
1
+ module Parsefiles
2
+ module Utils
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def unix_ts(file)
11
+ File.mtime(file).to_i
12
+ end
13
+
14
+ def strDate_to_unix_timestamp(strDate)
15
+ Date.strptime(strDate, '%m-%d-%Y').to_time.to_i
16
+ end
17
+
18
+ def validate_date_format(strDate)
19
+ Date.strptime(strDate,'%m-%d-%Y')
20
+ rescue ArgumentError
21
+ raise "Invalid date format. Correct format : m-d-y."
22
+ end
23
+
24
+ def date_in_range(date,start_date,end_date)
25
+ start = strDate_to_unix_timestamp(start_date)
26
+ finish = strDate_to_unix_timestamp(end_date) + 86399
27
+ range = start..finish
28
+ range === date
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ module Parsefiles
2
+ VERSION = "0.0.8"
3
+ end
data/lib/parsefiles.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'parsefiles/file_ops.rb'
2
+ require 'parsefiles/folders.rb'
3
+ require 'parsefiles/parse.rb'
4
+ require 'parsefiles/version.rb'
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'parsefiles/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "parsefiles"
8
+ spec.version = Parsefiles::VERSION
9
+ spec.authors = ["Chris Simpson"]
10
+ spec.email = ["ctsimpson@gmail.com"]
11
+ spec.description = "Utility for parsing log files"
12
+ spec.summary = "Parse using regex with support for compressed files"
13
+ spec.homepage = "http://www.ctsimpson.com"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec", "~> 2.1"
24
+ spec.add_development_dependency "guard-rspec", "~> 4.2"
25
+ spec.add_development_dependency "rubyzip"
26
+ spec.add_dependency "thor"
27
+ end
data/spec/.DS_Store ADDED
Binary file
Binary file
Binary file
@@ -0,0 +1,2 @@
1
+
2
+
File without changes
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+ require 'cli'
3
+
4
+ module Parsefiles
5
+ module CLI
6
+
7
+ describe Main do
8
+
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ module Parsefiles
4
+
5
+ describe FileOps do
6
+
7
+
8
+ let(:filename) { File.join('spec', 'fixtures', 'compressed.tar.gz')}
9
+ let(:file) {FileOps.new(filename,"test")}
10
+
11
+
12
+ context "when working with files" do
13
+
14
+ it "identifies the file type" do
15
+ expect(file.get_file_type).to eq "gz"
16
+ end
17
+
18
+ it "force UTF-8 encoding" do
19
+ string = "a\xFAb"
20
+ expect(file.encode_string(string)).to eq "ab"
21
+ end
22
+
23
+ it "calls parse method name based on file type" do
24
+ allow(file).to receive(:parse_gz).and_return ''
25
+ allow(file.parse_file).to receive(:parse_gz)
26
+ end
27
+ end
28
+
29
+ context 'when checking for matches' do
30
+
31
+ it "output the line when pattern is matched" do
32
+ line = "this do be a test"
33
+ expect(file.match_line(line)).to eq line
34
+ end
35
+ end
36
+
37
+ context 'when parsing zip files' do
38
+ let(:zip_file) { File.join('spec', 'fixtures', 'compressed.zip')}
39
+ let(:file) {FileOps.new(zip_file,"ctsimpso$")}
40
+
41
+ it "outputs matched content from a compressed zip file" do
42
+ skip "Zip files not yet implemented"
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ module Parsefiles
4
+
5
+ describe Folders do
6
+
7
+ context "when testing folder locations" do
8
+
9
+ let(:options) {{'start_date' => '06-27-2014', 'end_date' => '06-29-2014'}}
10
+
11
+ it "returns the folder location properly when a trailing slash is missing" do
12
+ test = Folders.new '/var/log', options
13
+ expect(test.folder).to eq '/var/log/*.{txt,log,gz}'
14
+ end
15
+
16
+ it "returns the folder location properly when their is a trailing slash" do
17
+ test = Folders.new '/var/log/', options
18
+ expect(test.folder).to eq '/var/log/*.{txt,log,gz}'
19
+ end
20
+
21
+ it "returns a single file name when a file name is passed in" do
22
+ test = Folders.new 'test.log', options
23
+ expect(test.folder).to eq './test.log'
24
+ end
25
+ end
26
+
27
+ context "when testing with start_date and end_date passed in" do
28
+
29
+ let(:options) {{'start_date' => '06-27-2014', 'end_date' => '06-29-2014'}}
30
+ let(:folder) {Folders.new './spec/fixtures/', options}
31
+
32
+ it "returns a list of files with date given a parent folder" do
33
+ output = [["./spec/fixtures/testfile.txt", 1406615852], ["./spec/fixtures/testfile2.txt", 1404000016], ["./spec/fixtures/compressed.tar.gz", 1407343892]]
34
+ expect(folder.files).to eq output
35
+ end
36
+
37
+ it "returns a list of files within a given date range" do
38
+ output = ['./spec/fixtures/testfile2.txt']
39
+ files = folder.get_files_in_range
40
+ expect(files).to eq output
41
+ end
42
+
43
+ it "calculates the start date based on days back attribute" do
44
+ allow(Date).to receive(:today).and_return(Date.parse('2014-07-20'))
45
+ expect(folder.calc_start_date 2).to eq '07-18-2014'
46
+ end
47
+
48
+ it "returns the start date from options if days back option is nil" do
49
+ expect(folder.get_start_date).to eq '06-27-2014'
50
+ end
51
+
52
+ end
53
+
54
+ context "when testing with days_back passed in" do
55
+
56
+ let(:options) {{"days_back"=>2}}
57
+ let(:folder) {Folders.new './spec/fixtures/', options}
58
+
59
+ it "returns the caculated start date if days_back is set" do
60
+ allow(folder).to receive(:days_back).and_return("07-14-2014")
61
+ expect(folder.get_start_date).to eq '07-14-2014'
62
+ end
63
+
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require 'parsefiles/utils'
3
+
4
+ module Parsefiles
5
+
6
+ describe Utils do
7
+
8
+
9
+ before(:all) do
10
+ class Test
11
+ include Utils
12
+ end
13
+ end
14
+
15
+ it "converts a Date string to unix timestamp" do
16
+ expect(Test.strDate_to_unix_timestamp('01-01-2014')).to eq 1388563200
17
+ end
18
+
19
+ it "checks for a valid date format and raises an error if the date format is wrong" do
20
+ skip "Don't know why this test isn't working"
21
+ # expect(Test.validate_date_format('01-01d-2014')).to raise_error
22
+ end
23
+
24
+ it "checks for a valid date format and doesn't return nil for a valid date format" do
25
+ expect(Test.validate_date_format('01-01-2014')).to eq Date.parse('2014-01-01')
26
+ end
27
+
28
+ it "verifies that a date is within range of the start date and end date" do
29
+ skip "TODO"
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+
3
+ require 'rspec'
4
+ require 'parsefiles'
5
+
6
+ RSpec.configure do |config|
7
+ config.treat_symbols_as_metadata_keys_with_true_values = true
8
+ config.run_all_when_everything_filtered = true
9
+ config.filter_run :focus
10
+
11
+ # Run specs in random order to surface order dependencies. If you find an
12
+ # order dependency and want to debug it, you can fix the order by providing
13
+ # the seed, which is printed after each run.
14
+ # --seed 1234
15
+ config.order = 'random'
16
+ end
data/tasks.TODO ADDED
@@ -0,0 +1,7 @@
1
+ Planning:
2
+ ☐ Put together flow
3
+ ✘ Design user interface from cli @cancelled (12-06-13 10:35)
4
+
5
+
6
+ Integration:
7
+
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: parsefiles
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
5
+ platform: ruby
6
+ authors:
7
+ - Chris Simpson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubyzip
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: thor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Utility for parsing log files
98
+ email:
99
+ - ctsimpson@gmail.com
100
+ executables:
101
+ - parsefiles
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - ".DS_Store"
106
+ - ".gitignore"
107
+ - ".rspec"
108
+ - Gemfile
109
+ - Guardfile
110
+ - LICENSE.txt
111
+ - README.md
112
+ - Rakefile
113
+ - bin/parsefiles
114
+ - lib/.DS_Store
115
+ - lib/cli.rb
116
+ - lib/parsefiles.rb
117
+ - lib/parsefiles/file_ops.rb
118
+ - lib/parsefiles/folders.rb
119
+ - lib/parsefiles/parse.rb
120
+ - lib/parsefiles/utils.rb
121
+ - lib/parsefiles/version.rb
122
+ - parsefiles.gemspec
123
+ - spec/.DS_Store
124
+ - spec/fixtures/compressed.tar.gz
125
+ - spec/fixtures/compressed.zip
126
+ - spec/fixtures/testfile.txt
127
+ - spec/fixtures/testfile2.txt
128
+ - spec/lib/cli_spec.rb
129
+ - spec/lib/parsefiles/file_spec.rb
130
+ - spec/lib/parsefiles/folders_spec.rb
131
+ - spec/lib/parsefiles/utils_spec.rb
132
+ - spec/spec_helper.rb
133
+ - tasks.TODO
134
+ homepage: http://www.ctsimpson.com
135
+ licenses:
136
+ - MIT
137
+ metadata: {}
138
+ post_install_message:
139
+ rdoc_options: []
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ requirements: []
153
+ rubyforge_project:
154
+ rubygems_version: 2.2.2
155
+ signing_key:
156
+ specification_version: 4
157
+ summary: Parse using regex with support for compressed files
158
+ test_files:
159
+ - spec/.DS_Store
160
+ - spec/fixtures/compressed.tar.gz
161
+ - spec/fixtures/compressed.zip
162
+ - spec/fixtures/testfile.txt
163
+ - spec/fixtures/testfile2.txt
164
+ - spec/lib/cli_spec.rb
165
+ - spec/lib/parsefiles/file_spec.rb
166
+ - spec/lib/parsefiles/folders_spec.rb
167
+ - spec/lib/parsefiles/utils_spec.rb
168
+ - spec/spec_helper.rb