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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 872a62fa1f557fdf85235824334bdff98fa6d2b64205f846a3d803024d0f11fc
4
- data.tar.gz: e8ebfc5bc675c8116288f23d89c7517946aca6be1c87d9f4441e4888ea1d52fe
3
+ metadata.gz: 962a769e590ce2126052259f29cb6388e0437a3bb7710d6af2352ba9390b9ba7
4
+ data.tar.gz: e6f4a4aef668039638293302e4fa8be1d2e8774fe9640dfcb4c158fae7175999
5
5
  SHA512:
6
- metadata.gz: 9fbcc0c20819f60918457dc4592e547e794edb49b398127a20ac8de1409c80d74be82d77dc4e4b9b241dd9575b1394ebc76bb63459c1ec864a4dd77b25f62e55
7
- data.tar.gz: 410751d59e27aee97f4634d8043e4d152d2743b826b5c5bafe97c46df7c9ef250aeeb104226277cd16365a672c5091d3f7060e2fe56ac1c104a4b195c986bf10
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
- $bin/cal4
11
- 2021/10/28(木) 16:00-17:00, 18:00-19:00
12
- 2021/10/29(金) 11:00-16:00, 17:00-19:00
13
- 2021/10/30() 9:00-19:00
14
- 2021/10/31() 9:00-19:00
15
- 2021/11/01() 12:00-14:00, 17:00-19:00
16
- 2021/11/02() 11:00-16:00
17
- 2021/11/03() 12:00-19:00
18
- 2021/11/04() 11:00-19:00
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
- ## Installation
29
+ ## インストール
23
30
 
24
- Add this line to your application's Gemfile:
25
-
26
- ```ruby
27
- gem 'cal4near'
28
- ```
31
+ $ gem install cal4near
29
32
 
30
- And then execute:
33
+ ## 事前準備
31
34
 
32
- $ bundle install
35
+ GoogleClandarAPIを使えるように設定が必要です。
36
+ 以下を参考にしてください。
33
37
 
34
- Or install it yourself as:
38
+ https://qiita.com/nakamaksk/items/d1f522ecbb12aa969afc
35
39
 
36
- $ gem install cal4near
40
+ ## 使い方
37
41
 
38
- ## Usage
42
+ ### 空いている時間を取得
39
43
 
40
- TODO: Write usage instructions here
44
+ ```
45
+ cal4 free
46
+ ```
41
47
 
42
- ## Development
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
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
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/[USERNAME]/cal4near.
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)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Cal4near
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
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.free_times(
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] free_times
111
- def self.stdout(times_info)
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.each do |date, times|
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
- puts "#{tmp_date.strftime("%Y/%m/%d")}(#{wdays[tmp_date.wday]}) #{spans.join(", ")}"
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.1.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-21 00:00:00.000000000 Z
11
+ date: 2022-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
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: '13.0'
20
- type: :development
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: '13.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
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: '3.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: google-api-client
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)