rescuetime 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91580bf8d38de0e666474a0997d3e0ec3c556c83
4
- data.tar.gz: b6e82c5ceaad582f0294ad7dde9e0e50aedfd38f
3
+ metadata.gz: 48104dc18af880729a3ff3c7cfb9ecda7a777368
4
+ data.tar.gz: d3f44a16cfc18c5b9ea035f1640d087df479b2d0
5
5
  SHA512:
6
- metadata.gz: 8dbb49c2e711c4f66c35a501253b3e491b933acee14f2232d147f33056cffd108856a98fa6c8b0751891649d0cb7b3332ee0577667b004d1c496783da706fed8
7
- data.tar.gz: ecbedb46b28cf5861b16b61b9006a61d88952328f77654e1b0b1db28fc3e15b279eab88639bfff8f38036876fb81d033af86c895807675edf555e71b596ddc32
6
+ metadata.gz: c9cf53762f2ca0aea6f56fecdf4a922a8e81d5e731c74e9474f99b3e7d137b1ef56131d228d7a4f0bd01286091a10162e079ffceb8871f570b27afe606dd7e12
7
+ data.tar.gz: 811ff42704eea5596939a678f4a0c1667226ed0bd01ae598a85fe4f67cf76f4024af7bc042d4c5bcd2a9548194c901c27d0c7ed0d9ba8999571322b856ce58f8
@@ -0,0 +1,310 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ This project adheres to [Semantic Versioning](http://semver.org/).
5
+
6
+ See also
7
+ - [GitHub releases](https://github.com/leesharma/rescuetime/releases)
8
+
9
+ ## [Unreleased] - current
10
+
11
+ ...
12
+
13
+ ---
14
+
15
+ ## [v1.0.0] - 2016-08-26
16
+
17
+ Bump Version and Misc Updates
18
+
19
+ ### Updates
20
+
21
+ The only update (aside from the version bump) is specifying that executables
22
+ are kept in the `bin` directory, not the `exe` directory. This version bump
23
+ is mainly to signify that the API is stable.
24
+
25
+ ## [v0.4.0] - 2016-04-26
26
+
27
+ Add Custom Formatters and Misc Updates
28
+
29
+ ### Breaking Changes
30
+
31
+ Exception classes, which were previously in the top-level Rescuetime (ex. Rescuetime::InvalidQueryError) are now under the Rescuetime::Errors module. This change was made for better code organization.
32
+
33
+ ### Updates
34
+
35
+ #### Allow Frozen String Literals
36
+
37
+ If you're using ruby 2.3, rescuetime will now work with the `# frozen_string_literals: true` option set.
38
+
39
+ #### Custom Formatters
40
+
41
+ The big change in this update is that users can now add/configure custom formatters.
42
+
43
+ Rescuetime ships with two report formats: CSV and Array. If you would like your
44
+ report in a different format, don't worry–it's easy to add a custom formatter.
45
+
46
+ Three things are required to add a custom formatter:
47
+
48
+ - Write a class within the module `Rescuetime::Formatters` that inherits from `Rescuetime::Formatters::BaseFormatter` or one of its descendants
49
+ - Define the class methods `.name` and `.format`
50
+ - Register your formatters using `Rescuetime.configure`
51
+
52
+ ##### Writing a Formatter
53
+
54
+ First, the formatters themselves. Here is a basic formatter:
55
+
56
+ ```ruby
57
+ # config/formatters/nil_formatter.rb
58
+ module Rescuetime::Formatters
59
+ # Turns a productivity report into nothing useful.
60
+ class NilFormatter < BaseFormatter
61
+ # @return [String] name of this report format
62
+ def self.name
63
+ 'nil'
64
+ end
65
+
66
+ # @param [CSV] _report the raw CSV report from Rescuetime
67
+ # @return [nil] the formatted output (in this case, nil)
68
+ def self.format(_report)
69
+ nil
70
+ end
71
+ end
72
+ end
73
+ ```
74
+
75
+ You can even inherit from an existing formatter:
76
+
77
+ ```ruby
78
+ # config/formatters/shouty_array_formatter.rb
79
+ module Rescuetime::Formatters
80
+ # Formats a rescuetime report as an array of hashes, except shouting.
81
+ class ShoutyArrayFormatter < ArrayFormatter
82
+ # @return [String] name of this report format
83
+ def self.name
84
+ 'shouty_array'
85
+ end
86
+
87
+ # @param [CSV] report the raw CSV report from Rescuetime
88
+ # @return [Array<Hash>] the formatted output (in this case, a shouty
89
+ # array of hashes)
90
+ def self.format(report)
91
+ array = super(report)
92
+ array.map do |hash|
93
+ terms = hash.map { |key, value| [key.to_s.upcase, value.to_s.upcase] }
94
+ Hash[terms]
95
+ end
96
+ end
97
+ end
98
+ end
99
+ ```
100
+
101
+ ##### Registering your Formatters
102
+
103
+ Before setting your report format, add the path to your formatter(s) to the
104
+ Rescuetime configuration using the Rescuetime.configure method. You will be
105
+ able to set, append to, or manipulate the formatter_paths setting.
106
+
107
+ ```ruby
108
+ Rescuetime.configure do |config|
109
+ path = File.expand_path('../my_custom_formatter.rb', __FILE__)
110
+ config.formatter_paths = [path]
111
+ end
112
+ ```
113
+
114
+ Now Rescuetime will look for the my_custom_formatter.rb file. Multiple paths
115
+ may be added as well.
116
+
117
+ ```ruby
118
+ Rescuetime.configure do |config|
119
+ config.formatter_paths = [
120
+ 'config/formatters/*_formatter.rb',
121
+ 'lib/formatters/**/*_formatter.rb',
122
+ ]
123
+ end
124
+ ```
125
+
126
+ ### Documentation
127
+
128
+ Increased documentation coverage/quality
129
+
130
+ ### Test Coverage
131
+
132
+ Increased
133
+
134
+ ## [v0.3.3] - 2016-05-21
135
+
136
+ Remove the dependency to Faraday
137
+
138
+ ### Refactoring
139
+
140
+ Switch from using Faraday to Net::HTTP in order to reduce production dependencies.
141
+
142
+ ---
143
+
144
+ ## [v0.3.2] - 2016-05-21
145
+
146
+ Documentation Comments and Refactoring
147
+
148
+ ### Documentation
149
+
150
+ Public methods and classes now have 100% documentation coverage, and the documentation was expanded to include descriptions, examples, links, and more.
151
+
152
+ ###Refactoring
153
+
154
+ The `Rescuetime::DateParser` class was extracted from the `Rescuetime::QueryBuilder`, keyword arguments were added in preference to the options hash, and other code readability/maintainability changes were made.
155
+
156
+ This release shouldn't affect the behavior or interface of the gem, and it adds no new features.
157
+
158
+ ---
159
+
160
+ ## [v0.3.1] - 2015-05-04
161
+
162
+ Fix gemspec description
163
+
164
+ ### Minor fix:
165
+
166
+ gemspec description used `%w(...)`, changed to string
167
+
168
+ ---
169
+
170
+ ## [v0.3.0] - 2015-05-04
171
+
172
+ ### Focus
173
+
174
+ Method Chaining and Lazy Evaluation
175
+
176
+ ### Updates
177
+
178
+ This release introduces many breaking changes to the codebase. Since the gem is still in development (v0.x.x), the major version has not increased.
179
+
180
+ The major goal of this release was refactoring and adding method chaining and lazy evaluation. Additionally, results can now be limited by overview/category/activity name as well as document name,.
181
+
182
+ Queries can now be formed with the following syntax:
183
+
184
+ ```ruby
185
+ client = Rescuetime::Client.new RESCUETIME_API_KEY
186
+ #=> <#Rescuetime::Client:...>
187
+
188
+ # Build the query
189
+ activities = client.activities.from(1.week.ago).where(name: 'github.com').format('csv')
190
+ #=> <#Rescuetime::Collection:...>
191
+
192
+ # Perform the query with #all or an enumerable method (#each, #map, #any?, etc.)
193
+ activities.all
194
+ #=> <#CSV:...>
195
+ ```
196
+
197
+ ---
198
+
199
+ ## [v0.2.0] - 2015-04-23
200
+
201
+ ### Scope
202
+
203
+ Provides nearly-full coverage of the RescueTime Analytic Data API.
204
+
205
+ ### Features
206
+
207
+ ```ruby
208
+ # Basics
209
+ @client = Rescuetime::Client.new
210
+
211
+ @client.api_key? #=> false
212
+ @client.valid_credentials? #=> false
213
+ @client.activities #=> Rescuetime::MissingCredentials
214
+
215
+ @client.api_key='invalid'
216
+ @client.api_key? #=> true
217
+ @client.valid_credentials? #=> false
218
+ @client.activities #=> Rescuetime::InvalidCredentials
219
+
220
+ @client.api_key= VALID_KEY
221
+ @client.valid_credentials? #=> true
222
+
223
+
224
+
225
+
226
+ # #productivity_levels
227
+ @client.productivity_levels #=> Hash
228
+ @client.productivity_levels[-2] #=> 'Very Unproductive'
229
+ @client.productivity_levels[0] #=> 'Neutral'
230
+
231
+
232
+
233
+
234
+ # #activities
235
+ @client.activities #=> Array<Hash>
236
+ @client.activities.first #=> Hash
237
+
238
+ # :by (report order/perspective)
239
+ @client.activities(by: 'rank') # returns ranked report by time spent per activity/category
240
+ @client.activities(by: 'time') # returns chronological report
241
+ @client.activities(by: 'member') # returns report grouped by member
242
+
243
+ # :detail (detail level of report)
244
+ @client.activities(detail: 'overview') # returns report at the 'overview' level (ie. Entertainment)
245
+ @client.activities(detail: 'category') # returns report at the 'category' level (ie. News and Opionion)
246
+ @client.activities(detail: 'activity') # returns report at the 'activity' level (ie. reddit.com)
247
+ # note: 'productivity' and 'efficiency' are options as well, but
248
+ # #productivity and #efficiency are the preferred way to
249
+ # get that information.
250
+
251
+ # :date, :from, and :to (date range of report)
252
+ @client.activities(date: '2015-04-02') # returns report for selected date
253
+ @client.activities(from: '2015-04-18') # returns report between selected and current date
254
+ @client.activities(from: Time.new(2015,04,19)) # time objects work too
255
+ @client.activities(from: '2015-04-02', to: '2015-04-02') # returns report between start and end date
256
+
257
+ # :interval (time interval of the report)
258
+ @client.activities(by: 'time', interval: 'minute') # returns report in 5-minute intervals
259
+ @client.activities(by: 'time', interval: 'hour') # returns report in 1-hour intervals
260
+ @client.activities(by: 'time', interval: 'day') # returns report in 1-day intervals
261
+ @client.activities(by: 'time', interval: 'week') # returns report in 1-week intervals
262
+ @client.activities(by: 'time', interval: 'month') # returns report in 1-month intervals
263
+
264
+ # :format (output format)
265
+ @client.activities #=> Array<Hash>
266
+ @client.activities(format: 'csv') #=> CSV
267
+
268
+
269
+
270
+
271
+ # #productivity
272
+ @client.productivity(...) # productivity takes the same options as #activities except :detail
273
+ # returns a productivity report with the given options
274
+
275
+
276
+
277
+ # #efficiency
278
+ @client.efficiency(...) # efficiency takes the same options as #activities except :detail
279
+ # returns an efficiency report with the given options
280
+
281
+
282
+
283
+ # All of this can be used together
284
+ @client.efficiency( from: '2015-03-20', # returns weekly efficiency report between March 20th and
285
+ to: '2015-04-20' , # April 20th of 2015 by member in csv format
286
+ interval: 'week',
287
+ format: 'csv' )
288
+ ```
289
+
290
+ ---
291
+
292
+ ## [v0.1.0] - 2015-04-15
293
+
294
+ Initial gem release
295
+
296
+ ### Features
297
+ - Rescuetime has a version number
298
+ - `Rescuetime::Client` exists
299
+ - `Rescuetime::Client#api_key?` returns existence of api key
300
+ - `Rescuetime::Client#api_key=` overwrites api key
301
+ - `Rescuetime::Client#activities` returns list of activities
302
+
303
+ [Unreleased]: https://github.com/leesharma/rescuetime/compare/v0.4.0...HEAD
304
+ [v0.4.0]: https://github.com/leesharma/rescuetime/compare/v0.3.3...v0.4.0
305
+ [v0.3.3]: https://github.com/leesharma/rescuetime/compare/v0.3.2...v0.3.3
306
+ [v0.3.2]: https://github.com/leesharma/rescuetime/compare/v0.3.1...v0.3.2
307
+ [v0.3.1]: https://github.com/leesharma/rescuetime/compare/v0.3.0...v0.3.1
308
+ [v0.3.0]: https://github.com/leesharma/rescuetime/compare/v0.2.0...v0.3.0
309
+ [v0.2.0]: https://github.com/leesharma/rescuetime/compare/v0.1.0...v0.2.0
310
+ [v0.1.0]: https://github.com/leesharma/rescuetime/commits/v0.1.0
data/README.md CHANGED
@@ -152,7 +152,7 @@ require 'rescuetime'
152
152
  Rescuetime ships with two report formats: CSV and Array. If you would like your
153
153
  report in a different format, don't worry–it's easy to add a custom formatter.
154
154
 
155
- Four things are required to add a custom formatter:
155
+ Three things are required to add a custom formatter:
156
156
 
157
157
  1. [Write a class](#writing-a-formatter) within the module
158
158
  `Rescuetime::Formatters` that inherits from `Rescuetime::Formatters::BaseFormatter`
@@ -234,6 +234,21 @@ Rescuetime.configure do |config|
234
234
  end
235
235
  ```
236
236
 
237
+ ##### Rails Example
238
+
239
+ For example, in a Rails app, you could add the configuration file to `config/initializers`:
240
+
241
+ ```ruby
242
+ # config/initializers/rescuetime.rb
243
+ Rescuetime.configure do |config|
244
+ path = File.expand_path('../../formatters/*_formatter.rb', __FILE__)
245
+ config.formatter_paths += [path]
246
+ end
247
+ ```
248
+
249
+ Rails can now find any formatters ending in `_formatter.rb` in the folder `config/formatters`
250
+ (ex. `config/formatters/xml_formatter.rb`).
251
+
237
252
  ### Finding Answers (Documentation)
238
253
 
239
254
  For more details, please see [official gem documentation](http://www.rubydoc.info/gems/rescuetime) or [read the wiki](https://github.com/leesharma/rescuetime/wiki).
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Rescuetime
4
4
  # rescuetime gem version number
5
- VERSION = '0.4.0'.freeze
5
+ VERSION = '1.0.0'.freeze
6
6
  end
@@ -17,8 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.files = `git ls-files -z`.split("\x0")
19
19
  .reject { |f| f.match(%r{^(test|spec|features)/}) }
20
- spec.bindir = 'exe'
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.bindir = 'bin'
22
21
  spec.require_paths = ['lib']
23
22
 
24
23
  spec.required_ruby_version = '>= 2.0.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rescuetime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Sharma
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-26 00:00:00.000000000 Z
11
+ date: 2016-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -144,6 +144,7 @@ files:
144
144
  - ".rubocop.yml"
145
145
  - ".rubocop_todo.yml"
146
146
  - ".travis.yml"
147
+ - CHANGELOG.md
147
148
  - CODE_OF_CONDUCT.md
148
149
  - CONTRIBUTING.md
149
150
  - Gemfile