calendar-assistant 0.10.0 → 0.15.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: 9acd200de6edb4b52d97c1994e25d657195e595c1042ef676c552ff6904d6c88
4
- data.tar.gz: 59926908cc71682f6480d561323eebdc29aec95fdf351c8a73a6dddefed9f9fc
3
+ metadata.gz: 8e569594cdc40d761ee7eca41c960efc4d435508e7fa22571497f9693914a6c0
4
+ data.tar.gz: f8488f08e8db4e2b1e1a037a307781faf5c3dad73242fe206e9b70670ee16298
5
5
  SHA512:
6
- metadata.gz: 9756ccc795a449ac0fde9707b5b87f6d03457b7ba22a7c802a9073e592c1c758d561223b873e7c2c6b71a336d80329998a0556545183a1ad536d3fab1f25b703
7
- data.tar.gz: eb497928c8fd6ae16fad8ee0d2b093cd3417338457367c99a8c8efb94c3a8a48d467215e1f93eddfe0f0e4f147312defc7649d3431f8e0fe4f9e24f0e481d3d8
6
+ metadata.gz: 1a0c5da7676bca3b1f21f8793f42c75007f38f108e5f3a85145074d28e9eb3f508cdea487857ed239e8cdeb378cf0f94c9e7f26d9304b650d9bb482b185241cb
7
+ data.tar.gz: ac39130b3c7be61f0b6718cee82441deb9ffb00fefc7adb7db7c24ff0a303cb13466946a1656c3e6bb4a03d332e15f1733bfe8a5f4ecb0c5eed3b3b52c7a0876
data/README.md CHANGED
@@ -10,9 +10,10 @@
10
10
  - book (and re-book) one-on-ones and other meetings automatically
11
11
 
12
12
  [![Gem Version](https://badge.fury.io/rb/calendar-assistant.svg)](https://badge.fury.io/rb/calendar-assistant)
13
- [![Concourse CI](https://ci.nokogiri.org/api/v1/teams/calendar-assistants/pipelines/calendar-assistant/jobs/rake-spec/badge)](https://ci.nokogiri.org/teams/calendar-assistants/pipelines/calendar-assistant)
13
+ [![Test suite](https://github.com/flavorjones/calendar-assistant/actions/workflows/test-suite.yml/badge.svg)](https://github.com/flavorjones/calendar-assistant/actions/workflows/test-suite.yml)
14
14
  [![Maintainability](https://api.codeclimate.com/v1/badges/3525792e1feeccfd8875/maintainability)](https://codeclimate.com/github/flavorjones/calendar-assistant/maintainability)
15
15
  [![Test Coverage](https://api.codeclimate.com/v1/badges/3525792e1feeccfd8875/test_coverage)](https://codeclimate.com/github/flavorjones/calendar-assistant/test_coverage)
16
+ [![Join the chat at https://gitter.im/flavorjones/calendar-assistant](https://badges.gitter.im/flavorjones/calendar-assistant.svg)](https://gitter.im/flavorjones/calendar-assistant?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
16
17
 
17
18
  ## Contents
18
19
 
@@ -161,8 +162,8 @@ Options:
161
162
  # Default: true
162
163
 
163
164
  Description:
164
- This command will walk you through setting up a Google Cloud Project, enabling the Google Calendar API, and saving the
165
- credentials necessary to access the API on behalf of users.
165
+ This command will walk you through setting up a Google Cloud Project, enabling the Google Calendar API, and saving
166
+ the credentials necessary to access the API on behalf of users.
166
167
 
167
168
  If you already have downloaded client credentials, you don't need to run this command. Instead, rename the downloaded
168
169
  JSON file to `/home/user/.calendar-assistant.client`
@@ -184,11 +185,11 @@ Options:
184
185
  Description:
185
186
  Create and authorize a named profile (e.g., "work", "home", "flastname@company.tld") to access your calendar.
186
187
 
187
- When setting up a profile, you'll be asked to visit a URL to authenticate, grant authorization, and generate and persist
188
- an access token.
188
+ When setting up a profile, you'll be asked to visit a URL to authenticate, grant authorization, and generate and
189
+ persist an access token.
189
190
 
190
- In order for this to work, you'll need to have set up your API client credentials. Run `calendar-assistant help setup`
191
- for instructions.
191
+ In order for this to work, you'll need to have set up your API client credentials. Run `calendar-assistant help
192
+ setup` for instructions.
192
193
  </pre>
193
194
 
194
195
 
@@ -571,7 +572,6 @@ The output is TOML, which is suitable for dumping into `~/.calendar-assistant` a
571
572
 
572
573
  <pre>
573
574
  <b>$</b> calendar-assistant config
574
-
575
575
  [settings]
576
576
  end-of-day = "6pm"
577
577
  location-icon = "🌎"
@@ -619,7 +619,7 @@ bundle exec rake # Default task runs both feature and non feature tests
619
619
 
620
620
  ### Continuous Integration
621
621
 
622
- CI is running in a [Concourse](https://concourse-ci.org) pipeline at [https://ci.nokogiri.org](https://ci.nokogiri.org/teams/calendar-assistants/pipelines/calendar-assistant).
622
+ CI is running in [Github Actions](https://github.com/flavorjones/calendar-assistant/actions/workflows/test-suite.yml).
623
623
 
624
624
 
625
625
  ### Code Quality
data/Rakefile CHANGED
@@ -1,15 +1,9 @@
1
1
  #require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
- require "concourse"
4
3
  require "license_finder"
5
4
  require "tempfile"
6
5
  require "rainbow"
7
6
 
8
- #
9
- # concourse
10
- #
11
- Concourse.new("calendar-assistant", fly_target: "calendar-assistants").create_tasks!
12
-
13
7
  #
14
8
  # spec tasks
15
9
  #
@@ -53,15 +47,17 @@ end
53
47
 
54
48
  #
55
49
  # docker docker docker
50
+ # keep in mind that we have a Github Action to generate this weekly
56
51
  #
52
+ CALENDAR_ASSISTANT_TEST_IMAGE = "ghcr.io/flavorjones/calendar-assistant-test"
57
53
  desc "Build a docker image for testing"
58
54
  task "docker:build" do
59
- sh "docker build -t flavorjones/calendar-assistant-test -f concourse/images/Dockerfile ."
55
+ sh "docker build -t #{CALENDAR_ASSISTANT_TEST_IMAGE} -f ci/Dockerfile ."
60
56
  end
61
57
 
62
58
  desc "Push a docker image for testing"
63
59
  task "docker:push" do
64
- sh "docker push flavorjones/calendar-assistant-test"
60
+ sh "docker push #{CALENDAR_ASSISTANT_TEST_IMAGE}"
65
61
  end
66
62
 
67
63
  desc "Build and push a docker image for testing"
@@ -79,4 +75,8 @@ end
79
75
  # default
80
76
  #
81
77
  desc "Run unit specs, feature specs, license finder, and check the README"
82
- task "default" => ["spec", "license_finder", "readme:check"]
78
+ task "default" => [
79
+ "spec",
80
+ "readme:check",
81
+ "license_finder", # last because it modifies bundle env
82
+ ]
@@ -8,6 +8,7 @@ Encoding.default_internal = Encoding::UTF_8
8
8
  Rainbow.enabled = true
9
9
 
10
10
  begin
11
+ require "calendar_assistant/cli"
11
12
  CalendarAssistant::CLI::Commands.start ARGV
12
13
  rescue Google::Apis::AuthorizationError, CalendarAssistant::BaseException => e
13
14
  printf "ERROR: %s\n", e
@@ -14,7 +14,7 @@ autoload :Chronic, "chronic"
14
14
  autoload :ChronicDuration, "chronic_duration"
15
15
  autoload :Google, "calendar_assistant/extensions/google_apis_extensions"
16
16
  autoload :Launchy, "calendar_assistant/extensions/launchy_extensions"
17
- autoload :TOML, "toml"
17
+ autoload :TomlRB, "toml-rb"
18
18
  autoload :Thor, "thor"
19
19
  require "calendar_assistant/extensions/rainbow_extensions" # Rainbow() doesn't trigger autoload
20
20
  require "active_support/time" # Time doesn't trigger autoload
@@ -42,5 +42,3 @@ class CalendarAssistant
42
42
  autoload :PredicateCollection, "calendar_assistant/predicate_collection"
43
43
  autoload :LocationConfigValidator, "calendar_assistant/location_config_validator"
44
44
  end
45
-
46
- require "calendar_assistant/cli"
@@ -66,7 +66,8 @@ class CalendarAssistant
66
66
  def config
67
67
  return if handle_help_args
68
68
  settings = CalendarAssistant::CLI::Config.new.settings
69
- command_service.out.puts TOML::Generator.new({ CalendarAssistant::Config::Keys::SETTINGS => settings }).body
69
+ filtered_settings = settings.reject { |k, v| v.nil? }
70
+ command_service.out.puts TomlRB.dump({ CalendarAssistant::Config::Keys::SETTINGS => filtered_settings })
70
71
  end
71
72
 
72
73
  desc "setup",
@@ -18,9 +18,9 @@ class CalendarAssistant
18
18
  user_config = if File.exist? config_file_path
19
19
  begin
20
20
  FileUtils.chmod 0600, config_file_path
21
- TOML.load_file config_file_path
21
+ TomlRB.load_file config_file_path
22
22
  rescue Exception => e
23
- raise TomlParseFailure, "could not parse #{config_file_path}: #{e}"
23
+ raise TomlParseFailure, "could not parse TOML file '#{config_file_path}': #{e}"
24
24
  end
25
25
  else
26
26
  Hash.new
@@ -39,7 +39,7 @@ class CalendarAssistant
39
39
  raise NoConfigFileToPersist, "Cannot persist config when there's no config file"
40
40
  end
41
41
 
42
- content = TOML::Generator.new(user_config).body
42
+ content = TomlRB.dump(user_config)
43
43
 
44
44
  File.open(config_file_path, "w") do |f|
45
45
  f.write content
@@ -192,6 +192,10 @@ class CalendarAssistant
192
192
 
193
193
  def av_uri
194
194
  @av_uri ||= begin
195
+ if conference_data && conference_data.conference_solution.name == "Zoom Meeting"
196
+ return conference_data.entry_points.detect{|d| d.entry_point_type == "video" }.uri
197
+ end
198
+
195
199
  description_link = CalendarAssistant::StringHelpers.find_uri_for_domain(description, "zoom.us")
196
200
  return description_link if description_link
197
201
 
@@ -35,7 +35,7 @@ class CalendarAssistant
35
35
  end
36
36
 
37
37
  def new(event_attributes)
38
- event = Google::Apis::CalendarV3::Event.new DateHelpers.cast_dates(event_attributes)
38
+ event = Google::Apis::CalendarV3::Event.new(**DateHelpers.cast_dates(event_attributes))
39
39
  event.visibility ||= config.event_visibility
40
40
  CalendarAssistant::Event.new(event, config: config)
41
41
  end
@@ -52,7 +52,7 @@ class CalendarAssistant
52
52
  end
53
53
 
54
54
  def update(event, attributes)
55
- event.update! DateHelpers.cast_dates(attributes)
55
+ event.update!(**DateHelpers.cast_dates(attributes))
56
56
  updated_event = @service.update_event @calendar_id, event.id, event
57
57
  CalendarAssistant::Event.new(updated_event, config: config)
58
58
  end
@@ -12,7 +12,7 @@ require "launchy"
12
12
  #
13
13
  class CalendarAssistant
14
14
  class ZoomLaunchy < Launchy::Application::Browser
15
- ZOOM_URI_REGEXP = %r(https?://\w+.zoom.us/j/(\d+))
15
+ ZOOM_URI_REGEXP = %r(https?://\w+.zoom.us/j/(\d+)(\?(.*))?)
16
16
 
17
17
  def self.handles?(uri)
18
18
  return true if ZOOM_URI_REGEXP.match(uri)
@@ -31,8 +31,11 @@ class CalendarAssistant
31
31
  if command.nil?
32
32
  super uri, options
33
33
  else
34
- confno = ZOOM_URI_REGEXP.match(uri)[1]
34
+ matches = ZOOM_URI_REGEXP.match(uri)
35
+ confno = matches[1]
36
+ params = matches[3]
35
37
  url = "zoommtg://zoom.us/join?confno=#{confno}"
38
+ url += "&#{params}" if params
36
39
  run command, [url]
37
40
  end
38
41
  end
@@ -1,3 +1,3 @@
1
1
  class CalendarAssistant
2
- VERSION = "0.10.0"
2
+ VERSION = "0.15.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.10.0
4
+ version: 0.15.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: 2019-02-26 00:00:00.000000000 Z
12
+ date: 2021-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -17,28 +17,28 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 5.2.1
20
+ version: '6.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 5.2.1
27
+ version: '6.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: business_time
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.9.0
34
+ version: '0.10'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.9.0
41
+ version: '0.10'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: chronic
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -68,25 +68,19 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: 0.10.0
70
70
  - !ruby/object:Gem::Dependency
71
- name: google-api-client
71
+ name: google-apis-calendar_v3
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: '0.24'
77
- - - "<"
78
- - !ruby/object:Gem::Version
79
- version: '0.29'
76
+ version: '0'
80
77
  type: :runtime
81
78
  prerelease: false
82
79
  version_requirements: !ruby/object:Gem::Requirement
83
80
  requirements:
84
81
  - - ">="
85
82
  - !ruby/object:Gem::Version
86
- version: '0.24'
87
- - - "<"
88
- - !ruby/object:Gem::Version
89
- version: '0.29'
83
+ version: '0'
90
84
  - !ruby/object:Gem::Dependency
91
85
  name: launchy
92
86
  requirement: !ruby/object:Gem::Requirement
@@ -121,126 +115,112 @@ dependencies:
121
115
  requirements:
122
116
  - - "~>"
123
117
  - !ruby/object:Gem::Version
124
- version: 0.20.0
118
+ version: 1.1.0
125
119
  type: :runtime
126
120
  prerelease: false
127
121
  version_requirements: !ruby/object:Gem::Requirement
128
122
  requirements:
129
123
  - - "~>"
130
124
  - !ruby/object:Gem::Version
131
- version: 0.20.0
125
+ version: 1.1.0
132
126
  - !ruby/object:Gem::Dependency
133
- name: toml
127
+ name: toml-rb
134
128
  requirement: !ruby/object:Gem::Requirement
135
129
  requirements:
136
130
  - - "~>"
137
131
  - !ruby/object:Gem::Version
138
- version: 0.2.0
132
+ version: 2.0.1
139
133
  type: :runtime
140
134
  prerelease: false
141
135
  version_requirements: !ruby/object:Gem::Requirement
142
136
  requirements:
143
137
  - - "~>"
144
138
  - !ruby/object:Gem::Version
145
- version: 0.2.0
139
+ version: 2.0.1
146
140
  - !ruby/object:Gem::Dependency
147
141
  name: thor_repl
148
142
  requirement: !ruby/object:Gem::Requirement
149
143
  requirements:
150
144
  - - "~>"
151
145
  - !ruby/object:Gem::Version
152
- version: 0.1.1
146
+ version: 0.1.4
153
147
  type: :runtime
154
148
  prerelease: false
155
149
  version_requirements: !ruby/object:Gem::Requirement
156
150
  requirements:
157
151
  - - "~>"
158
152
  - !ruby/object:Gem::Version
159
- version: 0.1.1
153
+ version: 0.1.4
160
154
  - !ruby/object:Gem::Dependency
161
155
  name: aruba
162
156
  requirement: !ruby/object:Gem::Requirement
163
157
  requirements:
164
158
  - - "~>"
165
159
  - !ruby/object:Gem::Version
166
- version: 0.14.8
160
+ version: 1.0.0
167
161
  type: :development
168
162
  prerelease: false
169
163
  version_requirements: !ruby/object:Gem::Requirement
170
164
  requirements:
171
165
  - - "~>"
172
166
  - !ruby/object:Gem::Version
173
- version: 0.14.8
167
+ version: 1.0.0
174
168
  - !ruby/object:Gem::Dependency
175
169
  name: bundler
176
170
  requirement: !ruby/object:Gem::Requirement
177
171
  requirements:
178
172
  - - "~>"
179
173
  - !ruby/object:Gem::Version
180
- version: 2.0.0
174
+ version: '2.2'
181
175
  type: :development
182
176
  prerelease: false
183
177
  version_requirements: !ruby/object:Gem::Requirement
184
178
  requirements:
185
179
  - - "~>"
186
180
  - !ruby/object:Gem::Version
187
- version: 2.0.0
188
- - !ruby/object:Gem::Dependency
189
- name: concourse
190
- requirement: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
194
- version: '0'
195
- type: :development
196
- prerelease: false
197
- version_requirements: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - ">="
200
- - !ruby/object:Gem::Version
201
- version: '0'
181
+ version: '2.2'
202
182
  - !ruby/object:Gem::Dependency
203
183
  name: faker
204
184
  requirement: !ruby/object:Gem::Requirement
205
185
  requirements:
206
186
  - - "~>"
207
187
  - !ruby/object:Gem::Version
208
- version: '1.9'
188
+ version: '2.1'
209
189
  type: :development
210
190
  prerelease: false
211
191
  version_requirements: !ruby/object:Gem::Requirement
212
192
  requirements:
213
193
  - - "~>"
214
194
  - !ruby/object:Gem::Version
215
- version: '1.9'
195
+ version: '2.1'
216
196
  - !ruby/object:Gem::Dependency
217
197
  name: license_finder
218
198
  requirement: !ruby/object:Gem::Requirement
219
199
  requirements:
220
200
  - - "~>"
221
201
  - !ruby/object:Gem::Version
222
- version: '5.5'
202
+ version: '6.0'
223
203
  type: :development
224
204
  prerelease: false
225
205
  version_requirements: !ruby/object:Gem::Requirement
226
206
  requirements:
227
207
  - - "~>"
228
208
  - !ruby/object:Gem::Version
229
- version: '5.5'
209
+ version: '6.0'
230
210
  - !ruby/object:Gem::Dependency
231
211
  name: rake
232
212
  requirement: !ruby/object:Gem::Requirement
233
213
  requirements:
234
214
  - - "~>"
235
215
  - !ruby/object:Gem::Version
236
- version: '12.3'
216
+ version: '13.0'
237
217
  type: :development
238
218
  prerelease: false
239
219
  version_requirements: !ruby/object:Gem::Requirement
240
220
  requirements:
241
221
  - - "~>"
242
222
  - !ruby/object:Gem::Version
243
- version: '12.3'
223
+ version: '13.0'
244
224
  - !ruby/object:Gem::Dependency
245
225
  name: rspec
246
226
  requirement: !ruby/object:Gem::Requirement
@@ -275,14 +255,14 @@ dependencies:
275
255
  requirements:
276
256
  - - "~>"
277
257
  - !ruby/object:Gem::Version
278
- version: '0.16'
258
+ version: '0.21'
279
259
  type: :development
280
260
  prerelease: false
281
261
  version_requirements: !ruby/object:Gem::Requirement
282
262
  requirements:
283
263
  - - "~>"
284
264
  - !ruby/object:Gem::Version
285
- version: '0.16'
265
+ version: '0.21'
286
266
  description: A command-line tool to help manage your Google Calendar.
287
267
  email:
288
268
  - mike.dalessio@gmail.com
@@ -350,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
350
330
  - !ruby/object:Gem::Version
351
331
  version: '0'
352
332
  requirements: []
353
- rubygems_version: 3.0.1
333
+ rubygems_version: 3.1.4
354
334
  signing_key:
355
335
  specification_version: 4
356
336
  summary: A command-line tool to help manage your Google Calendar.