cal4near 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/README.md +48 -28
- data/cal4near.gemspec +2 -1
- data/exe/cal4 +48 -0
- data/lib/cal4near/version.rb +1 -1
- data/lib/cal4near.rb +15 -11
- metadata +19 -18
- data/bin/cal4 +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 962a769e590ce2126052259f29cb6388e0437a3bb7710d6af2352ba9390b9ba7
|
4
|
+
data.tar.gz: e6f4a4aef668039638293302e4fa8be1d2e8774fe9640dfcb4c158fae7175999
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c410224e01c9ada37128b56e5f6535d26fafe12099edccd8c76266e706020aa82b3f4c923950e05de7abef4e02104c67294e74dd516b5bc1ee8f60abd9e9e40
|
7
|
+
data.tar.gz: a33c7228f8b45b1d9d85427a7598ad1325c1c6ce07c8c666562c1c912e38544e11033b9e7b4c6ad7e1a09f346c74152dd5637e42be7a8283823de9a276f99e1a
|
data/README.md
CHANGED
@@ -1,53 +1,73 @@
|
|
1
1
|
# Cal4near
|
2
2
|
|
3
|
-
Google
|
3
|
+
Googleカレンダーの情報をコンソールへ出力するツールです。
|
4
4
|
|
5
|
-
|
5
|
+
### 主な機能
|
6
|
+
- 空いている時間を出力する
|
7
|
+
- [WIP]予定がある時間を出力する
|
6
8
|
|
7
|
-
|
9
|
+
### 出力例
|
8
10
|
|
9
11
|
```
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
--------------
|
13
|
+
free times
|
14
|
+
--------------
|
15
|
+
2022/02/21(月)
|
16
|
+
2022/02/22(火) 12:00-17:00
|
17
|
+
2022/02/23(水) 11:00-13:00, 14:00-18:00
|
18
|
+
2022/02/24(木)
|
19
|
+
2022/02/25(金)
|
20
|
+
2022/02/26(土) 9:00-18:00
|
21
|
+
2022/02/27(日) 9:00-18:00
|
22
|
+
2022/02/28(月) 11:00-14:00, 16:00-18:00
|
23
|
+
2022/03/01(火) 12:00-17:00
|
24
|
+
2022/03/02(水) 11:00-18:00
|
25
|
+
2022/03/03(木) 12:00-14:00, 15:00-17:00
|
19
26
|
|
20
27
|
```
|
21
28
|
|
22
|
-
##
|
29
|
+
## インストール
|
23
30
|
|
24
|
-
|
25
|
-
|
26
|
-
```ruby
|
27
|
-
gem 'cal4near'
|
28
|
-
```
|
31
|
+
$ gem install cal4near
|
29
32
|
|
30
|
-
|
33
|
+
## 事前準備
|
31
34
|
|
32
|
-
|
35
|
+
GoogleClandarAPIを使えるように設定が必要です。
|
36
|
+
以下を参考にしてください。
|
33
37
|
|
34
|
-
|
38
|
+
https://qiita.com/nakamaksk/items/d1f522ecbb12aa969afc
|
35
39
|
|
36
|
-
|
40
|
+
## 使い方
|
37
41
|
|
38
|
-
|
42
|
+
### 空いている時間を取得
|
39
43
|
|
40
|
-
|
44
|
+
```
|
45
|
+
cal4 free
|
46
|
+
```
|
41
47
|
|
42
|
-
|
48
|
+
出力例
|
43
49
|
|
44
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
45
50
|
|
46
|
-
|
51
|
+
```
|
52
|
+
--------------
|
53
|
+
free times
|
54
|
+
--------------
|
55
|
+
2022/02/21(月)
|
56
|
+
2022/02/22(火) 12:00-17:00
|
57
|
+
2022/02/23(水) 11:00-13:00, 14:00-18:00
|
58
|
+
2022/02/24(木)
|
59
|
+
2022/02/25(金)
|
60
|
+
2022/02/26(土) 9:00-18:00
|
61
|
+
2022/02/27(日) 9:00-18:00
|
62
|
+
2022/02/28(月) 11:00-14:00, 16:00-18:00
|
63
|
+
2022/03/01(火) 12:00-17:00
|
64
|
+
2022/03/02(水) 11:00-18:00
|
65
|
+
2022/03/03(木) 12:00-14:00, 15:00-17:00
|
66
|
+
```
|
47
67
|
|
48
68
|
## Contributing
|
49
69
|
|
50
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
70
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/nakamaksk/cal4near.
|
51
71
|
|
52
72
|
## License
|
53
73
|
|
data/cal4near.gemspec
CHANGED
@@ -29,9 +29,10 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
30
30
|
spec.require_paths = ["lib"]
|
31
31
|
|
32
|
+
spec.add_dependency 'google-api-client'
|
33
|
+
|
32
34
|
spec.add_development_dependency "rake", "~> 13.0"
|
33
35
|
spec.add_development_dependency "rspec", "~> 3.0"
|
34
|
-
spec.add_development_dependency 'google-api-client'
|
35
36
|
spec.add_development_dependency 'dotenv'
|
36
37
|
spec.add_development_dependency "pry"
|
37
38
|
spec.add_development_dependency 'pry-byebug'
|
data/exe/cal4
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "bundler/setup"
|
3
|
+
require "cal4near"
|
4
|
+
|
5
|
+
HELP_MSG =<<-MSG
|
6
|
+
usage: cal4 [ free, f | busy, b ] [ -h ]
|
7
|
+
|
8
|
+
free, f : Stdout free times from Google Calendar api
|
9
|
+
busy, b : Stdout busy times from Google Calendar api
|
10
|
+
|
11
|
+
-h : Show help
|
12
|
+
MSG
|
13
|
+
|
14
|
+
WRONG_ARG_ERR_MSG =<<-MSG
|
15
|
+
[ERR]argument is wrong.
|
16
|
+
MSG
|
17
|
+
|
18
|
+
if ARGV.length > 0
|
19
|
+
case ARGV[0]
|
20
|
+
when '-h'
|
21
|
+
puts HELP_MSG
|
22
|
+
return
|
23
|
+
when 'free', 'f'
|
24
|
+
msg = "free times"
|
25
|
+
times_info = Cal4near.free_busy_times
|
26
|
+
is_free = true
|
27
|
+
when 'busy', 'b'
|
28
|
+
msg = "busy times"
|
29
|
+
times_info = Cal4near.free_busy_times
|
30
|
+
is_free = false
|
31
|
+
else
|
32
|
+
puts WRONG_ARG_ERR_MSG
|
33
|
+
puts HELP_MSG
|
34
|
+
return
|
35
|
+
end
|
36
|
+
else
|
37
|
+
puts WRONG_ARG_ERR_MSG
|
38
|
+
puts HELP_MSG
|
39
|
+
return
|
40
|
+
end
|
41
|
+
|
42
|
+
puts <<-MSG
|
43
|
+
----------------------------
|
44
|
+
#{msg} (9:00 - 19:00)
|
45
|
+
----------------------------
|
46
|
+
MSG
|
47
|
+
|
48
|
+
puts Cal4near.format(times_info, is_free)
|
data/lib/cal4near/version.rb
CHANGED
data/lib/cal4near.rb
CHANGED
@@ -6,8 +6,6 @@ require "googleauth"
|
|
6
6
|
require "googleauth/stores/file_token_store"
|
7
7
|
require "date"
|
8
8
|
require "fileutils"
|
9
|
-
require 'pry'
|
10
|
-
require 'pry-byebug'
|
11
9
|
|
12
10
|
module Cal4near
|
13
11
|
class Error < StandardError; end
|
@@ -22,7 +20,7 @@ module Cal4near
|
|
22
20
|
SCOPE = Google::Apis::CalendarV3::AUTH_CALENDAR_READONLY
|
23
21
|
|
24
22
|
# 空き時間を検索する日時の範囲
|
25
|
-
START_DATE = DateTime.now
|
23
|
+
START_DATE = DateTime.now.next_day(1)
|
26
24
|
END_DATE = DateTime.now.next_day(30)
|
27
25
|
|
28
26
|
# 空き時間を検索する時間の範囲
|
@@ -53,11 +51,12 @@ module Cal4near
|
|
53
51
|
# @return [Hash]
|
54
52
|
# @example 返り値のサンプルは以下
|
55
53
|
# "2022-03-21"=> {"2022-03-21 09:00"=>{:free=>true}
|
56
|
-
def self.
|
54
|
+
def self.free_busy_times(
|
57
55
|
start_date = START_DATE,
|
58
56
|
end_date = END_DATE,
|
59
57
|
start_hour = START_HOUR,
|
60
|
-
end_hour = END_HOUR
|
58
|
+
end_hour = END_HOUR,
|
59
|
+
max_date_count = 100
|
61
60
|
)
|
62
61
|
busy_list = []
|
63
62
|
events(start_date, end_date).each do |event|
|
@@ -78,7 +77,9 @@ module Cal4near
|
|
78
77
|
# puts "Free time:"
|
79
78
|
|
80
79
|
result = {}
|
81
|
-
(start_date.to_date..end_date.to_date).each do |date|
|
80
|
+
(start_date.to_date..end_date.to_date).each.with_index(1) do |date, i|
|
81
|
+
break if i > max_date_count
|
82
|
+
|
82
83
|
result[date.strftime(DATE_FORMAT)] ||= {} # YYYY-MM-DD
|
83
84
|
|
84
85
|
start_work_time = Time.new(date.year, date.month, date.day, start_hour, 0, 0)
|
@@ -107,19 +108,19 @@ module Cal4near
|
|
107
108
|
result
|
108
109
|
end
|
109
110
|
|
110
|
-
# @param [Hash]
|
111
|
-
def self.
|
111
|
+
# @param [Hash] free_busy_times
|
112
|
+
def self.format(times_info, is_free = true)
|
112
113
|
result = times_info
|
113
114
|
wdays = %w(日 月 火 水 木 金 土)
|
114
115
|
# 出力
|
115
|
-
result.
|
116
|
+
date_time_info = result.map do |date, times|
|
116
117
|
min_time = max_time = nil
|
117
118
|
spans = []
|
118
119
|
times.each do |time, info|
|
119
120
|
time = DateTime.parse(time)
|
120
121
|
min_time ||= time
|
121
122
|
max_time = time
|
122
|
-
if info[:free]
|
123
|
+
if (is_free && info[:free]) || (!is_free && !info[:free])
|
123
124
|
next
|
124
125
|
else
|
125
126
|
if min_time && max_time && min_time < max_time
|
@@ -134,8 +135,11 @@ module Cal4near
|
|
134
135
|
end
|
135
136
|
|
136
137
|
tmp_date = Date.parse(date)
|
137
|
-
|
138
|
+
spans_text = spans.empty? ? "" : " #{spans.join(", ")}"
|
139
|
+
"#{tmp_date.strftime("%Y/%m/%d")}(#{wdays[tmp_date.wday]})#{spans_text}"
|
138
140
|
end
|
141
|
+
|
142
|
+
date_time_info.join("\n")
|
139
143
|
end
|
140
144
|
|
141
145
|
##
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cal4near
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nakamaksk
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: google-api-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
20
|
-
type: :
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '3.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: dotenv
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,7 +97,8 @@ dependencies:
|
|
97
97
|
description: Fetch calendar information.
|
98
98
|
email:
|
99
99
|
- adebayanen@gmail.com
|
100
|
-
executables:
|
100
|
+
executables:
|
101
|
+
- cal4
|
101
102
|
extensions: []
|
102
103
|
extra_rdoc_files: []
|
103
104
|
files:
|
@@ -108,10 +109,10 @@ files:
|
|
108
109
|
- LICENSE.txt
|
109
110
|
- README.md
|
110
111
|
- Rakefile
|
111
|
-
- bin/cal4
|
112
112
|
- bin/console
|
113
113
|
- bin/setup
|
114
114
|
- cal4near.gemspec
|
115
|
+
- exe/cal4
|
115
116
|
- lib/cal4near.rb
|
116
117
|
- lib/cal4near/version.rb
|
117
118
|
homepage: https://github.com/nakamaksk/cal4near
|
data/bin/cal4
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require "bundler/setup"
|
3
|
-
require "cal4near"
|
4
|
-
|
5
|
-
HELP_MSG =<<-MSG
|
6
|
-
usage: cal4 [--free] [--busy]
|
7
|
-
|
8
|
-
--free : Stdout free times from calendar api
|
9
|
-
--busy : Stdout busy times from calendar api [WIP]
|
10
|
-
MSG
|
11
|
-
|
12
|
-
WRONG_ARG_ERR_MSG =<<-MSG
|
13
|
-
[ERR]argument is wrong.
|
14
|
-
MSG
|
15
|
-
|
16
|
-
if ARGV.length > 0
|
17
|
-
case ARGV[0]
|
18
|
-
when '-h'
|
19
|
-
puts HELP_MSG
|
20
|
-
return
|
21
|
-
when '--free', '-f'
|
22
|
-
msg = "free times"
|
23
|
-
times_info = Cal4near.free_times
|
24
|
-
# when '--busy', 'b'
|
25
|
-
# TODO:busy_timesの実装
|
26
|
-
# msg = "busy times"
|
27
|
-
# times_info = Cal4near.busy_times
|
28
|
-
else
|
29
|
-
puts WRONG_ARG_ERR_MSG
|
30
|
-
puts HELP_MSG
|
31
|
-
return
|
32
|
-
end
|
33
|
-
else
|
34
|
-
msg = "free times"
|
35
|
-
times_info = Cal4near.free_times
|
36
|
-
end
|
37
|
-
|
38
|
-
puts <<-MSG
|
39
|
-
--------------
|
40
|
-
#{msg}
|
41
|
-
--------------
|
42
|
-
MSG
|
43
|
-
|
44
|
-
Cal4near.stdout(times_info)
|