calendar-assistant 0.4.0 → 0.5.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
  SHA256:
3
- metadata.gz: 39a771f697de78e8be9e8189021c20f33e73cabbd6df2266d9961b030fb37f23
4
- data.tar.gz: 3237fc5462cc02428052aa17ade6b3e3d01b3e2f566583f2c1ad12ca0f47cce8
3
+ metadata.gz: ccb192eb2cc7c722082ae2fa7ed95d4e9056ba17ab79fe6767b9396ce47d47a8
4
+ data.tar.gz: ebc5ca1760f595517e0c2978041a4b2a178ec9200c4e2e6f432dfe2e101e70b2
5
5
  SHA512:
6
- metadata.gz: 769547047722afdd06a38385e2dba228879483bf4e77cff6beae29243d69ddf6b7c1c5195263a9570b5cc4c9992a228de228fb110580ae8f0745bdaaed110981
7
- data.tar.gz: d14e5743b960ebebabdf10afbbba97b5f501351f961c6327ee8971ebea7990dc65c5fccf230cb818915d9325c7e6f0869279cf3fc105161abffe9d1ef3ca0e26
6
+ metadata.gz: 81cd7d09a964dff85c023ff990dd4dafafcccc876014caa5adf30460d4c69457059a8900605450c260ad1029b537c171f10434cf8d55c541d1af7180f6ea4547
7
+ data.tar.gz: cff1f228820ca9fcb54985f483f7efaaa98bdd6a86a64d462684a2dc5d9b8a217b9919b0001f9afcf1f8e8384b54587172f8d59985435ad2a076289c4c2d7563
data/README.md CHANGED
@@ -84,10 +84,10 @@ Options:
84
84
  [--debug], [--no-debug] # how dare you suggest there are bugs
85
85
 
86
86
  Description:
87
- This command will walk you through setting up a Google Cloud Project, enabling the Google Calendar
87
+ This command will walk you through setting up a Google Cloud Project, enabling the Google Calendar
88
88
  API, and saving the credentials necessary to access the API on behalf of users.
89
89
 
90
- If you already have downloaded client credentials, you don't need to run this command. Instead,
90
+ If you already have downloaded client credentials, you don't need to run this command. Instead,
91
91
  rename the downloaded JSON file to `/home/user/.calendar-assistant.client`
92
92
  </pre>
93
93
 
@@ -103,13 +103,13 @@ Options:
103
103
  [--debug], [--no-debug] # how dare you suggest there are bugs
104
104
 
105
105
  Description:
106
- Create and authorize a named profile (e.g., "work", "home", "flastname@company.tld") to access your
107
- calendar.
106
+ Create and authorize a named profile (e.g., "work", "home", "flastname@company.tld") to access
107
+ your calendar.
108
108
 
109
- When setting up a profile, you'll be asked to visit a URL to authenticate, grant authorization, and
110
- generate and persist an access token.
109
+ When setting up a profile, you'll be asked to visit a URL to authenticate, grant authorization,
110
+ and generate and persist an access token.
111
111
 
112
- In order for this to work, you'll need to have set up your API client credentials. Run
112
+ In order for this to work, you'll need to have set up your API client credentials. Run
113
113
  `calendar-assistant help setup` for instructions.
114
114
  </pre>
115
115
 
@@ -336,8 +336,8 @@ For example:
336
336
  <b>$</b> calendar-assistant location "2018-09-24...2018-09-28"
337
337
  <i>me@example.com (all times in America/New_York)
338
338
  </i>
339
- 2018-09-24 - 2018-09-28 <b> | 🗺 Rivendell</b><i> (not-busy)</i>
340
- 2018-09-28 <b> | 🗺 Bywater</b><i> (not-busy)</i>
339
+ 2018-09-24 - 2018-09-28 <b> | 🗺 Ravenhill</b><i> (not-busy)</i>
340
+ 2018-09-28 <b> | 🗺 Ravenhill</b><i> (not-busy)</i>
341
341
  </pre>
342
342
 
343
343
 
@@ -364,28 +364,28 @@ For example: display all events scheduled for tomorrow:
364
364
  <b>$</b> calendar-assistant show 2018-10-01
365
365
  <i>me@example.com (all times in America/New_York)
366
366
  </i>
367
- <strike>2018-10-01 03:30 - 05:00 | Maximize open-source markets</strike>
368
- <strike>2018-10-01 07:30 - 08:30 | Incentivize innovative web services</strike>
369
- <strike>2018-10-01 07:30 - 08:30 | Reinvent 24/7 niches</strike>
370
- 2018-10-01 10:30 - 10:55<b> | Engineer collaborative roi</b><i> (1:1, recurring)</i>
371
- 2018-10-01 11:00 - 11:30<b> | Implement one-to-one schemas</b><i> (recurring)</i>
372
- 2018-10-01 11:30 - 12:00<b> | Empower extensible vortals</b><i> (1:1, recurring)</i>
373
- <strike>2018-10-01 11:50 - 12:00 | Synthesize web-enabled niches</strike>
374
- 2018-10-01 12:00 - 12:30<b> | Facilitate open-source infomediaries</b><i> (self)</i>
375
- <strike>2018-10-01 12:15 - 12:30 | Iterate scalable partnerships</strike>
376
- <strike>2018-10-01 12:30 - 13:30 | Unleash web-enabled content</strike>
377
- 2018-10-01 12:30 - 13:30<b> | Exploit collaborative web services</b><i> (recurring)</i>
378
- 2018-10-01 13:30 - 14:50<b> | Streamline back-end deliverables</b><i> (self)</i>
379
- <strike>2018-10-01 13:30 - 14:30 | Innovate dot-com architectures</strike>
380
- 2018-10-01 15:00 - 15:30<b> | Optimize robust paradigms</b><i> (1:1)</i>
381
- 2018-10-01 16:00 - 17:00<b> | Brand 24/365 web services</b><i> (1:1, recurring)</i>
382
- 2018-10-01 16:45 - 17:00<b> | Extend vertical applications</b><i> (recurring)</i>
383
- 2018-10-01 17:00 - 17:30<b> | Monetize one-to-one roi</b><i> (recurring)</i>
384
- 2018-10-01 17:30 - 17:55<b> | Target transparent e-tailers</b><i> (1:1, recurring)</i>
385
- <strike>2018-10-01 18:00 - 20:30 | Maximize value-added vortals</strike>
386
- <strike>2018-10-01 18:30 - 19:00 | Whiteboard rich applications</strike>
387
- <strike>2018-10-01 19:00 - 19:30 | Scale cross-platform portals</strike>
388
- 2018-10-01 <b> | 🗺 Wilderland</b><i> (not-busy)</i>
367
+ <strike>2018-10-01 03:30 - 05:00 | Incubate front-end bandwidth</strike>
368
+ <strike>2018-10-01 07:30 - 08:30 | Cultivate dot-com vortals</strike>
369
+ <strike>2018-10-01 07:30 - 08:30 | Monetize next-generation eyeballs</strike>
370
+ 2018-10-01 10:30 - 10:55<b> | Facilitate out-of-the-box deliverables</b><i> (1:1, recurring)</i>
371
+ 2018-10-01 11:00 - 11:30<b> | Syndicate plug-and-play systems</b><i> (recurring)</i>
372
+ 2018-10-01 11:30 - 12:00<b> | Facilitate bricks-and-clicks methodologies</b><i> (1:1, recurring)</i>
373
+ <strike>2018-10-01 11:50 - 12:00 | Deliver back-end experiences</strike>
374
+ 2018-10-01 12:00 - 12:30<b> | Unleash impactful models</b><i> (self)</i>
375
+ <strike>2018-10-01 12:15 - 12:30 | Iterate magnetic supply-chains</strike>
376
+ <strike>2018-10-01 12:30 - 13:30 | Recontextualize collaborative solutions</strike>
377
+ 2018-10-01 12:30 - 13:30<b> | Harness wireless deliverables</b><i> (recurring)</i>
378
+ 2018-10-01 13:30 - 14:50<b> | Repurpose virtual channels</b><i> (self)</i>
379
+ <strike>2018-10-01 13:30 - 14:30 | Harness front-end infrastructures</strike>
380
+ 2018-10-01 15:00 - 15:30<b> | Incentivize best-of-breed e-business</b><i> (1:1)</i>
381
+ 2018-10-01 16:00 - 17:00<b> | Expedite cross-media users</b><i> (1:1, recurring)</i>
382
+ 2018-10-01 16:45 - 17:00<b> | Leverage proactive channels</b><i> (recurring)</i>
383
+ 2018-10-01 17:00 - 17:30<b> | Empower back-end mindshare</b><i> (recurring)</i>
384
+ 2018-10-01 17:30 - 17:55<b> | Drive user-centric markets</b><i> (1:1, recurring)</i>
385
+ <strike>2018-10-01 18:00 - 20:30 | Generate bleeding-edge supply-chains</strike>
386
+ <strike>2018-10-01 18:30 - 19:00 | Redefine bricks-and-clicks e-services</strike>
387
+ <strike>2018-10-01 19:00 - 19:30 | Implement enterprise infrastructures</strike>
388
+ 2018-10-01 <b> | 🗺 High Pass</b><i> (not-busy)</i>
389
389
  </pre>
390
390
 
391
391
  Display _only_ the commitments I have to other people using the `-c` option:
@@ -394,16 +394,15 @@ Display _only_ the commitments I have to other people using the `-c` option:
394
394
  <b>$</b> calendar-assistant show -c 2018-10-01
395
395
  <i>me@example.com (all times in America/New_York)
396
396
  </i>
397
- 2018-10-01 10:30 - 10:55<b> | Engineer collaborative roi</b><i> (1:1, recurring)</i>
398
- 2018-10-01 11:00 - 11:30<b> | Implement one-to-one schemas</b><i> (recurring)</i>
399
- 2018-10-01 11:30 - 12:00<b> | Empower extensible vortals</b><i> (1:1, recurring)</i>
400
- 2018-10-01 12:30 - 13:30<b> | Exploit collaborative web services</b><i> (recurring)</i>
401
- 2018-10-01 15:00 - 15:30<b> | Optimize robust paradigms</b><i> (1:1)</i>
402
- 2018-10-01 16:00 - 17:00<b> | Brand 24/365 web services</b><i> (1:1, recurring)</i>
403
- 2018-10-01 16:45 - 17:00<b> | Extend vertical applications</b><i> (recurring)</i>
404
- 2018-10-01 17:00 - 17:30<b> | Monetize one-to-one roi</b><i> (recurring)</i>
405
- 2018-10-01 17:30 - 17:55<b> | Target transparent e-tailers</b><i> (1:1, recurring)</i>
406
- 2018-10-01 <b> | 🗺 Wilderland</b><i> (not-busy)</i>
397
+ 2018-10-01 10:30 - 10:55<b> | Facilitate out-of-the-box deliverables</b><i> (1:1, recurring)</i>
398
+ 2018-10-01 11:00 - 11:30<b> | Syndicate plug-and-play systems</b><i> (recurring)</i>
399
+ 2018-10-01 11:30 - 12:00<b> | Facilitate bricks-and-clicks methodologies</b><i> (1:1, recurring)</i>
400
+ 2018-10-01 12:30 - 13:30<b> | Harness wireless deliverables</b><i> (recurring)</i>
401
+ 2018-10-01 15:00 - 15:30<b> | Incentivize best-of-breed e-business</b><i> (1:1)</i>
402
+ 2018-10-01 16:00 - 17:00<b> | Expedite cross-media users</b><i> (1:1, recurring)</i>
403
+ 2018-10-01 16:45 - 17:00<b> | Leverage proactive channels</b><i> (recurring)</i>
404
+ 2018-10-01 17:00 - 17:30<b> | Empower back-end mindshare</b><i> (recurring)</i>
405
+ 2018-10-01 17:30 - 17:55<b> | Drive user-centric markets</b><i> (1:1, recurring)</i>
407
406
  </pre>
408
407
 
409
408
 
@@ -17,6 +17,7 @@ autoload :Launchy, "launchy"
17
17
  autoload :TOML, "toml"
18
18
  autoload :Thor, "thor"
19
19
  require "calendar_assistant/extensions/rainbow_extensions" # Rainbow() doesn't trigger autoload
20
+ require "active_support/time" # Time doesn't trigger autoload
20
21
 
21
22
  #
22
23
  # CalendarAssistant and associated classes
@@ -66,7 +66,7 @@ class CalendarAssistant
66
66
  def find_events time_range
67
67
  calendar_ids = config.attendees
68
68
  if calendar_ids.length > 1
69
- raise "CalendarAssistant#find_events only supports one person (for now)"
69
+ raise BaseException, "CalendarAssistant#find_events only supports one person (for now)"
70
70
  end
71
71
  event_repository(calendar_ids.first).find(time_range)
72
72
  end
@@ -1,16 +1,18 @@
1
1
  # coding: utf-8
2
2
  class CalendarAssistant
3
3
  module CLIHelpers
4
+ class ChronicParseException < CalendarAssistant::BaseException ; end
5
+
4
6
  def self.parse_datespec userspec
5
7
  start_userspec, end_userspec = userspec.split(/ ?\.\.\.? ?/)
6
8
 
7
9
  if end_userspec.nil?
8
- time = Chronic.parse(userspec) || raise("could not parse #{userspec}")
10
+ time = Chronic.parse(userspec) || raise(ChronicParseException, "could not parse '#{userspec}'")
9
11
  return time.beginning_of_day..time.end_of_day
10
12
  end
11
13
 
12
- start_time = Chronic.parse(start_userspec) || raise("could not parse #{start_userspec}")
13
- end_time = Chronic.parse(end_userspec) || raise("could not parse #{end_userspec}")
14
+ start_time = Chronic.parse(start_userspec) || raise(ChronicParseException, "could not parse '#{start_userspec}'")
15
+ end_time = Chronic.parse(end_userspec) || raise(ChronicParseException, "could not parse '#{end_userspec}'")
14
16
 
15
17
  if start_time.to_date == end_time.to_date
16
18
  start_time..end_time
@@ -87,6 +87,8 @@ class CalendarAssistant
87
87
  response_status == CalendarAssistant::Event::Response::NEEDS_ACTION
88
88
  end
89
89
 
90
+ alias_method :needs_action?, :awaiting?
91
+
90
92
  def tentative?
91
93
  response_status == CalendarAssistant::Event::Response::TENTATIVE
92
94
  end
@@ -8,7 +8,7 @@ class CalendarAssistant
8
8
  def self.select_busy_events event_set
9
9
  dates_events = Hash.new
10
10
  event_set.events.each do |event|
11
- if event.private? || event.accepted? || event.self?
11
+ if event.private? || event.accepted? || event.self? || (event.all_day? && event.busy?)
12
12
  date = event.start_date
13
13
  dates_events[date] ||= []
14
14
  dates_events[date] << event
@@ -1,3 +1,3 @@
1
1
  class CalendarAssistant
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calendar-assistant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-11-30 00:00:00.000000000 Z
12
+ date: 2018-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: google-api-client
@@ -123,6 +123,20 @@ dependencies:
123
123
  - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: 0.2.0
126
+ - !ruby/object:Gem::Dependency
127
+ name: activesupport
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: 5.2.1
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 5.2.1
126
140
  - !ruby/object:Gem::Dependency
127
141
  name: concourse
128
142
  requirement: !ruby/object:Gem::Requirement
@@ -274,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
288
  version: '0'
275
289
  requirements: []
276
290
  rubyforge_project:
277
- rubygems_version: 2.7.7
291
+ rubygems_version: 2.7.8
278
292
  signing_key:
279
293
  specification_version: 4
280
294
  summary: A command-line tool to help manage your Google Calendar.