calendar-assistant 0.10.0 → 0.15.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/README.md +9 -9
- data/Rakefile +9 -9
- data/bin/calendar-assistant +1 -0
- data/lib/calendar_assistant.rb +1 -3
- data/lib/calendar_assistant/cli/commands.rb +2 -1
- data/lib/calendar_assistant/cli/config.rb +3 -3
- data/lib/calendar_assistant/event.rb +4 -0
- data/lib/calendar_assistant/event_repository.rb +2 -2
- data/lib/calendar_assistant/extensions/launchy_extensions.rb +5 -2
- data/lib/calendar_assistant/version.rb +1 -1
- metadata +29 -49
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e569594cdc40d761ee7eca41c960efc4d435508e7fa22571497f9693914a6c0
|
4
|
+
data.tar.gz: f8488f08e8db4e2b1e1a037a307781faf5c3dad73242fe206e9b70670ee16298
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
[](https://badge.fury.io/rb/calendar-assistant)
|
13
|
-
[](https://github.com/flavorjones/calendar-assistant/actions/workflows/test-suite.yml)
|
14
14
|
[](https://codeclimate.com/github/flavorjones/calendar-assistant/maintainability)
|
15
15
|
[](https://codeclimate.com/github/flavorjones/calendar-assistant/test_coverage)
|
16
|
+
[](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
|
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
|
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
|
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
|
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
|
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
|
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" => [
|
78
|
+
task "default" => [
|
79
|
+
"spec",
|
80
|
+
"readme:check",
|
81
|
+
"license_finder", # last because it modifies bundle env
|
82
|
+
]
|
data/bin/calendar-assistant
CHANGED
@@ -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
|
data/lib/calendar_assistant.rb
CHANGED
@@ -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 :
|
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
|
-
|
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
|
-
|
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 =
|
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
|
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!
|
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
|
-
|
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
|
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
|
+
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:
|
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:
|
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:
|
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.
|
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.
|
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-
|
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
|
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
|
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:
|
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:
|
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:
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
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
|
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: '
|
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: '
|
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: '
|
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: '
|
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.
|
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.
|
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.
|
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.
|