wloger 0.0.4 → 0.1.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.
- checksums.yaml +4 -4
- data/lib/wloger.rb +2 -1
- data/lib/wloger/base/log_file.rb +19 -0
- data/lib/wloger/command.rb +33 -2
- data/lib/wloger/interface/search.rb +33 -0
- data/lib/wloger/past_log_file.rb +6 -1
- data/lib/wloger/today_log_file.rb +1 -1
- data/lib/wloger/version.rb +1 -1
- metadata +20 -18
- data/lib/wloger/log_file.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 171a50a811e6c93ba8564e42459b7a40b5590a2d
|
4
|
+
data.tar.gz: 790ee630ccdd142dd08fd449a02b69ed1ff8d8a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c72e27c1ef07b56d5b97889b384fd2fef8133c12e74ccceaf0f704b7009e0a3322b8e709299bbd17da716bc7f7c8586863ac66cab8a1e92fe05ad88b608d630e
|
7
|
+
data.tar.gz: 8df8feeef16154a9424412b5e36b21d86549a0551a25a0c2d6a120bef75d766bb4202bbee1c35d2bbc8c13725aa9d23f4517e6a04326f88c5109774bab07d0e0
|
data/lib/wloger.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Wloger
|
2
|
+
module Base
|
3
|
+
# base class for today and past logs
|
4
|
+
class LogFile
|
5
|
+
PARENT_DIR_NAME = File.expand_path('~/Documents').freeze
|
6
|
+
DIR_NAME = 'work_log'.freeze
|
7
|
+
LOG_DIR_NAME = "#{PARENT_DIR_NAME}/#{DIR_NAME}".freeze
|
8
|
+
LOG_NAME = 'log'.freeze
|
9
|
+
LOG_EXTENTION = 'md'.freeze
|
10
|
+
EDITOR_NAME = 'vim'.freeze
|
11
|
+
|
12
|
+
def initialize(date)
|
13
|
+
@date = date
|
14
|
+
@log_dir = "#{PARENT_DIR_NAME}/#{DIR_NAME}/#{date.strftime('%Y_%m/%d')}"
|
15
|
+
@log_path = "#{@log_dir}/#{LOG_NAME}.#{LOG_EXTENTION}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/wloger/command.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require 'date'
|
2
1
|
require 'thor'
|
2
|
+
require 'date'
|
3
|
+
require 'find'
|
3
4
|
|
4
5
|
module Wloger
|
5
6
|
# Command line parse class
|
@@ -11,14 +12,21 @@ module Wloger
|
|
11
12
|
date = Date.today
|
12
13
|
@today_log = Wloger::TodayLogFile.new(date)
|
13
14
|
@today_log.edit
|
15
|
+
end
|
14
16
|
|
17
|
+
desc 'search', 'Grep in all log files'
|
18
|
+
def search(key)
|
19
|
+
dates = find_all_log_dates
|
20
|
+
grep_results = get_all_grep_results(dates, key)
|
21
|
+
|
22
|
+
Wloger::Interface::Search.new(grep_results)
|
15
23
|
end
|
16
24
|
|
17
25
|
desc 'version', 'Show the version of Wloger'
|
18
26
|
def version
|
19
27
|
puts Wloger::VERSION
|
20
28
|
end
|
21
|
-
map %w
|
29
|
+
map %w(-v --version) => :version
|
22
30
|
|
23
31
|
desc '[DATE]', 'Open the work-log file assigned DATE'
|
24
32
|
def method_missing(method)
|
@@ -31,5 +39,28 @@ module Wloger
|
|
31
39
|
@past_log = Wloger::PastLogFile.new(date)
|
32
40
|
@past_log.view
|
33
41
|
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def find_all_log_dates
|
46
|
+
results = []
|
47
|
+
regexp = /\d{4}_\d{2}\/\d{2}/
|
48
|
+
Find.find(Wloger::Base::LogFile::LOG_DIR_NAME) do |f|
|
49
|
+
next unless f =~ /#{regexp}\/log\.md/
|
50
|
+
date = Date.parse(f[regexp])
|
51
|
+
results << date
|
52
|
+
end
|
53
|
+
results
|
54
|
+
end
|
55
|
+
|
56
|
+
def get_all_grep_results(dates, key)
|
57
|
+
results = []
|
58
|
+
dates.each do |d|
|
59
|
+
log = Wloger::PastLogFile.new(d)
|
60
|
+
grep_result = log.grep(key)
|
61
|
+
results += grep_result unless grep_result.empty?
|
62
|
+
end
|
63
|
+
results
|
64
|
+
end
|
34
65
|
end
|
35
66
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Wloger
|
2
|
+
module Interface
|
3
|
+
# command line user interface for search function class
|
4
|
+
class Search
|
5
|
+
def initialize(results)
|
6
|
+
@results = results
|
7
|
+
output_results
|
8
|
+
interact_with_user
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def output_results
|
14
|
+
digit = @results.count.to_s.length
|
15
|
+
@results.each_with_index do |r, i|
|
16
|
+
puts "{#{i.to_s.rjust(digit, '0')}}[#{r[0]}]:#{r[1]}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def interact_with_user
|
21
|
+
print "\nPlease input a number of log file to open[q]: "
|
22
|
+
assign = input_parse(STDIN.gets.chomp)
|
23
|
+
|
24
|
+
Wloger::PastLogFile.new(@results[assign][0]).view
|
25
|
+
end
|
26
|
+
|
27
|
+
def input_parse(str)
|
28
|
+
exit if str == 'q'
|
29
|
+
str.to_i
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/wloger/past_log_file.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
module Wloger
|
2
2
|
# past log file class
|
3
3
|
## In case, this class operate today log file.
|
4
|
-
class PastLogFile < LogFile
|
4
|
+
class PastLogFile < Base::LogFile
|
5
5
|
def view
|
6
6
|
Wloger::Error.no_log_file(@date) unless File.exist?(@log_path)
|
7
7
|
system("#{EDITOR_NAME} #{@log_path}")
|
8
8
|
end
|
9
|
+
|
10
|
+
def grep(key)
|
11
|
+
array = File.readlines(@log_path).grep(/#{key}/)
|
12
|
+
[@date].product(array)
|
13
|
+
end
|
9
14
|
end
|
10
15
|
end
|
@@ -3,7 +3,7 @@ require 'fileutils'
|
|
3
3
|
module Wloger
|
4
4
|
# today log file class
|
5
5
|
## If don't exist today dir, this class make the dir.
|
6
|
-
class TodayLogFile < LogFile
|
6
|
+
class TodayLogFile < Base::LogFile
|
7
7
|
def edit
|
8
8
|
make_dir unless File.exist?(@log_dir)
|
9
9
|
system("#{EDITOR_NAME} #{@log_path}")
|
data/lib/wloger/version.rb
CHANGED
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wloger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- huyu398
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-11 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
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.6'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description: Wloger manages the directory control of work-logs and automatically select
|
@@ -89,8 +89,8 @@ executables:
|
|
89
89
|
extensions: []
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
92
|
-
- .gitignore
|
93
|
-
- .rspec
|
92
|
+
- ".gitignore"
|
93
|
+
- ".rspec"
|
94
94
|
- Gemfile
|
95
95
|
- Guardfile
|
96
96
|
- LICENSE.txt
|
@@ -98,9 +98,10 @@ files:
|
|
98
98
|
- Rakefile
|
99
99
|
- bin/wloger
|
100
100
|
- lib/wloger.rb
|
101
|
+
- lib/wloger/base/log_file.rb
|
101
102
|
- lib/wloger/command.rb
|
102
103
|
- lib/wloger/error.rb
|
103
|
-
- lib/wloger/
|
104
|
+
- lib/wloger/interface/search.rb
|
104
105
|
- lib/wloger/past_log_file.rb
|
105
106
|
- lib/wloger/today_log_file.rb
|
106
107
|
- lib/wloger/version.rb
|
@@ -118,17 +119,17 @@ require_paths:
|
|
118
119
|
- lib
|
119
120
|
required_ruby_version: !ruby/object:Gem::Requirement
|
120
121
|
requirements:
|
121
|
-
- -
|
122
|
+
- - ">="
|
122
123
|
- !ruby/object:Gem::Version
|
123
124
|
version: '0'
|
124
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
126
|
requirements:
|
126
|
-
- -
|
127
|
+
- - ">="
|
127
128
|
- !ruby/object:Gem::Version
|
128
129
|
version: '0'
|
129
130
|
requirements: []
|
130
131
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.
|
132
|
+
rubygems_version: 2.2.0
|
132
133
|
signing_key:
|
133
134
|
specification_version: 4
|
134
135
|
summary: Wloger help to manage your daily work-logs.
|
@@ -136,3 +137,4 @@ test_files:
|
|
136
137
|
- spec/lib/wloger/directory_spec.rb
|
137
138
|
- spec/lib/wloger_spec.rb
|
138
139
|
- spec/spec_helper.rb
|
140
|
+
has_rdoc:
|
data/lib/wloger/log_file.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module Wloger
|
2
|
-
# base object for today and past logs
|
3
|
-
class LogFile
|
4
|
-
PARENT_DIR_NAME = File.expand_path('~/Documents').freeze
|
5
|
-
DIR_NAME = 'work_log'.freeze
|
6
|
-
LOG_NAME = 'log'.freeze
|
7
|
-
LOG_EXTENTION = 'md'.freeze
|
8
|
-
EDITOR_NAME = 'vim'.freeze
|
9
|
-
|
10
|
-
def initialize(date)
|
11
|
-
@date = date
|
12
|
-
@log_dir = "#{PARENT_DIR_NAME}/#{DIR_NAME}/#{date.strftime('%Y_%m/%d')}"
|
13
|
-
@log_path = "#{@log_dir}/#{LOG_NAME}.#{LOG_EXTENTION}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|