waddup 0.1.0 → 0.2.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/CHANGELOG.md +4 -0
- data/README.md +9 -0
- data/bin/sup +0 -3
- data/bin/waddup +0 -3
- data/lib/waddup.rb +1 -1
- data/lib/waddup/cli.rb +69 -42
- data/lib/waddup/event.rb +9 -0
- data/lib/waddup/metadata.rb +7 -0
- data/waddup.gemspec +5 -4
- metadata +17 -3
- data/lib/waddup/version.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41d84aaf796c2b8557e948350c43c4e451833217
|
4
|
+
data.tar.gz: 3acf2d4a01290ffbbec9382bdc42294226df4738
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4555eb4f6aa5572113ad4e24064140b59af2d9442e6a48dcb9e9d555105d8fd6ca5304c936f447e461f12f6517b01060911dd38cf0b038f623cbc20a005f2c8
|
7
|
+
data.tar.gz: 109ba65acf536fe8324fb4af8bd498b732a0d098212e7391ac3bd45aaa3c80981d243d9810154a4850568121dcb701501ada8fc69d08996e99fdf4f94ca6a6dd
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
### v0.2.0 - November 29, 2013
|
4
|
+
- Proper CLI implementation supporting `--version` and `--help`.
|
5
|
+
- Visual and JSON output support using `--format`.
|
6
|
+
|
3
7
|
### v0.1.0 - November 29, 2013
|
4
8
|
- Drop support for 1.8.7 and 1.9.2.
|
5
9
|
- From/to arguments are treated as past by default.
|
data/README.md
CHANGED
@@ -81,3 +81,12 @@ To specify an end date, use one of `to`, `until`, `uptil`, `upto` or `through`:
|
|
81
81
|
waddup through yesterday
|
82
82
|
|
83
83
|
Defaults to right now if an end date is ommitted.
|
84
|
+
|
85
|
+
|
86
|
+
### Formats
|
87
|
+
|
88
|
+
At present, Waddup supports two formats: visual (see screenshot) and JSON.
|
89
|
+
|
90
|
+
Use the `--format` flag to indicate the desired output format:
|
91
|
+
|
92
|
+
waddup since yesterday --format json
|
data/bin/sup
CHANGED
data/bin/waddup
CHANGED
data/lib/waddup.rb
CHANGED
data/lib/waddup/cli.rb
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
require 'chronic'
|
2
2
|
|
3
|
+
require 'waddup'
|
4
|
+
|
3
5
|
module Waddup
|
4
6
|
|
5
7
|
class CLI
|
8
|
+
require 'commander/import'
|
6
9
|
|
7
|
-
|
10
|
+
program :name, Waddup::NAME
|
11
|
+
program :version, Waddup::VERSION
|
12
|
+
program :description, Waddup::SUMMARY
|
8
13
|
|
9
14
|
KEYWORDS = {
|
10
15
|
sources: %w[with],
|
@@ -14,61 +19,83 @@ module Waddup
|
|
14
19
|
|
15
20
|
KEYWORD_BOUNDARY = "(?:\\s#{KEYWORDS.values.flatten.join('|\\s')}|\\Z)"
|
16
21
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
+
class << self
|
23
|
+
|
24
|
+
attr_accessor :sources, :from, :to
|
25
|
+
|
26
|
+
def parse!(arguments)
|
27
|
+
@arguments = arguments.join ' '
|
28
|
+
|
29
|
+
parse_keyword :sources do |match|
|
30
|
+
sources = match[1]
|
31
|
+
@sources = Waddup::Source.usable.select do |source|
|
32
|
+
sources.include? source::ALIAS
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
parse_keyword :from do |match|
|
37
|
+
@from = Chronic.parse match[1], context: :past
|
22
38
|
end
|
23
|
-
end
|
24
39
|
|
25
|
-
|
26
|
-
|
40
|
+
parse_keyword :to do |match|
|
41
|
+
@to = Chronic.parse match[1], context: :past
|
42
|
+
end
|
27
43
|
end
|
28
44
|
|
29
|
-
parse_keyword
|
30
|
-
@
|
45
|
+
def parse_keyword(keyword, &block)
|
46
|
+
@arguments.match /(?:#{KEYWORDS[keyword].join('|')})\s(.+?)#{KEYWORD_BOUNDARY}/i, &block
|
31
47
|
end
|
32
|
-
end
|
33
48
|
|
34
|
-
def parse_keyword(keyword, &block)
|
35
|
-
@arguments.match /(?:#{KEYWORDS[keyword].join('|')})\s(.+?)#{KEYWORD_BOUNDARY}/i, &block
|
36
49
|
end
|
37
50
|
|
38
|
-
|
39
|
-
def run!(arguments)
|
40
|
-
@arguments = arguments.join ' '
|
41
|
-
|
42
|
-
parse!
|
51
|
+
default_command :timesheet
|
43
52
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
events = sources.map do |source|
|
51
|
-
source.new.events from, to
|
52
|
-
end
|
53
|
+
command :timesheet do |c|
|
54
|
+
c.syntax = 'waddup with git and mail since last monday 9:00 until yesterday morning'
|
55
|
+
c.description = 'Aggregates events and generates timesheet between from and to range'
|
56
|
+
c.option '--format visual | json', String, 'Provides timesheet in specified format'
|
57
|
+
c.action do |args, options|
|
58
|
+
parse! args
|
53
59
|
|
54
|
-
|
55
|
-
|
56
|
-
|
60
|
+
# Sanity checking
|
61
|
+
@sources ||= Waddup::Source.usable
|
62
|
+
@from ||= Time.now
|
63
|
+
@to ||= Time.now
|
57
64
|
|
58
|
-
|
59
|
-
|
65
|
+
# Aggregate events from all sources
|
66
|
+
events = sources.map do |source|
|
67
|
+
source.new.events from, to
|
68
|
+
end
|
60
69
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
events.
|
67
|
-
|
70
|
+
# Sort events
|
71
|
+
events.flatten!
|
72
|
+
events.sort_by! &:at
|
73
|
+
|
74
|
+
# Group daily
|
75
|
+
days = events.group_by { |event| event.at.to_date }
|
76
|
+
|
77
|
+
# Generate timesheet in requested format
|
78
|
+
case options.format
|
79
|
+
when 'json'
|
80
|
+
require 'json'
|
81
|
+
puts JSON.generate days
|
82
|
+
when 'visual'
|
83
|
+
days.each_pair do |day, events|
|
84
|
+
puts
|
85
|
+
puts day.strftime('%A, %-d %B %Y')
|
86
|
+
puts
|
87
|
+
|
88
|
+
events.each do |event|
|
89
|
+
puts " #{event.at.strftime('%H:%M')} #{event.source.class::ICON} #{event.label}"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
puts
|
94
|
+
else
|
95
|
+
raise 'Format needs to be either visual or json'
|
68
96
|
end
|
69
|
-
end
|
70
97
|
|
71
|
-
|
98
|
+
end
|
72
99
|
end
|
73
100
|
|
74
101
|
end
|
data/lib/waddup/event.rb
CHANGED
data/waddup.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
$:.push File.expand_path('../lib', __FILE__)
|
4
4
|
|
5
|
-
require 'waddup/
|
5
|
+
require 'waddup/metadata'
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = 'waddup'
|
@@ -10,8 +10,8 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.authors = ['Tim Kurvers']
|
11
11
|
s.email = ['tim@moonsphere.net']
|
12
12
|
s.homepage = 'https://github.com/timkurvers/waddup'
|
13
|
-
s.summary =
|
14
|
-
s.description =
|
13
|
+
s.summary = Waddup::SUMMARY
|
14
|
+
s.description = "#{Waddup::SUMMARY} - and displays them in a neat chronological overview"
|
15
15
|
|
16
16
|
s.rubyforge_project = 'waddup'
|
17
17
|
|
@@ -20,7 +20,8 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
21
|
s.require_paths = ['lib']
|
22
22
|
|
23
|
-
s.add_dependency 'chronic',
|
23
|
+
s.add_dependency 'chronic', '~> 0.10.2'
|
24
|
+
s.add_dependency 'commander', '~> 4.1.5'
|
24
25
|
|
25
26
|
s.add_development_dependency 'rake'
|
26
27
|
s.add_development_dependency 'rspec'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waddup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Kurvers
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.10.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: commander
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.1.5
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.1.5
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,7 +136,7 @@ dependencies:
|
|
122
136
|
- - '>='
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: '0'
|
125
|
-
description: Waddup retraces your activities from arbitrary sources
|
139
|
+
description: Waddup retraces your activities from arbitrary sources such as version
|
126
140
|
control, issue tracking software and mail clients - and displays them in a neat
|
127
141
|
chronological overview
|
128
142
|
email:
|
@@ -151,6 +165,7 @@ files:
|
|
151
165
|
- lib/waddup/extensions/applescript.rb
|
152
166
|
- lib/waddup/extensions/file_system.rb
|
153
167
|
- lib/waddup/extensions/system.rb
|
168
|
+
- lib/waddup/metadata.rb
|
154
169
|
- lib/waddup/registry.rb
|
155
170
|
- lib/waddup/source.rb
|
156
171
|
- lib/waddup/sources/apple_calendar.rb
|
@@ -158,7 +173,6 @@ files:
|
|
158
173
|
- lib/waddup/sources/apple_mail.rb
|
159
174
|
- lib/waddup/sources/apple_mail/sent_mail.applescript
|
160
175
|
- lib/waddup/sources/git.rb
|
161
|
-
- lib/waddup/version.rb
|
162
176
|
- spec/fixtures/sources/apple_calendar.results
|
163
177
|
- spec/fixtures/sources/apple_mail.results
|
164
178
|
- spec/fixtures/sources/git.log
|