flycal-cli 0.7.7 → 1.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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -181
  3. data/bin/flycal +2 -2
  4. data/lib/flycal/cache_annotator.rb +83 -0
  5. data/lib/flycal/cache_key.rb +82 -0
  6. data/lib/flycal/calendar_query.rb +60 -0
  7. data/lib/{flycal_cli → flycal}/calendar_service.rb +48 -4
  8. data/lib/{flycal_cli/cli.rb → flycal/cli/app.rb} +253 -109
  9. data/lib/{flycal_cli → flycal/cli}/auth.rb +5 -3
  10. data/lib/{flycal_cli → flycal/cli}/clipboard.rb +3 -1
  11. data/lib/{flycal_cli → flycal/cli}/config.rb +4 -2
  12. data/lib/flycal/cli/file_cache.rb +44 -0
  13. data/lib/flycal/cli/locale.rb +58 -0
  14. data/lib/flycal/cli.rb +14 -0
  15. data/lib/flycal/client.rb +186 -0
  16. data/lib/flycal/credentials.rb +34 -0
  17. data/lib/{flycal_cli → flycal}/date_time_parser.rb +4 -4
  18. data/lib/{flycal_cli → flycal}/description_query.rb +3 -3
  19. data/lib/{flycal_cli → flycal}/duration_parser.rb +3 -3
  20. data/lib/flycal/error.rb +5 -0
  21. data/lib/flycal/event_mapper.rb +58 -0
  22. data/lib/{flycal_cli → flycal}/locale.rb +35 -3
  23. data/lib/{flycal_cli → flycal}/mock/calendar_service.rb +1 -1
  24. data/lib/{flycal_cli → flycal}/mock/config.rb +14 -14
  25. data/lib/{flycal_cli → flycal}/mock/event_generator.rb +2 -2
  26. data/lib/flycal/mock.rb +6 -0
  27. data/lib/{flycal_cli → flycal}/pipeline/aggregator.rb +21 -24
  28. data/lib/{flycal_cli → flycal}/pipeline/json_renderer.rb +16 -13
  29. data/lib/{flycal_cli → flycal}/pipeline/params.rb +1 -1
  30. data/lib/{flycal_cli → flycal}/pipeline/renderer.rb +4 -4
  31. data/lib/{flycal_cli → flycal}/pipeline/retriever.rb +1 -1
  32. data/lib/{flycal_cli → flycal}/pipeline/search_pipeline.rb +1 -1
  33. data/lib/{flycal_cli → flycal}/pipeline/text_renderer.rb +9 -8
  34. data/lib/flycal/pipeline.rb +6 -0
  35. data/lib/{flycal_cli → flycal}/slot_finder.rb +1 -1
  36. data/lib/flycal/slot_formatter.rb +195 -0
  37. data/lib/flycal/version.rb +11 -0
  38. data/lib/flycal.rb +12 -0
  39. data/lib/flycal_cli.rb +37 -17
  40. data/mcp/tools.json +21 -8
  41. metadata +36 -25
  42. data/lib/flycal_cli/mock.rb +0 -10
  43. data/lib/flycal_cli/pipeline.rb +0 -14
  44. data/lib/flycal_cli/slot_formatter.rb +0 -68
  45. data/lib/flycal_cli/version.rb +0 -5
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flycal-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.7
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - flycal-cli
@@ -134,31 +134,42 @@ files:
134
134
  - README.md
135
135
  - bin/flycal
136
136
  - config/defaults.yml
137
+ - lib/flycal.rb
138
+ - lib/flycal/cache_annotator.rb
139
+ - lib/flycal/cache_key.rb
140
+ - lib/flycal/calendar_query.rb
141
+ - lib/flycal/calendar_service.rb
142
+ - lib/flycal/cli.rb
143
+ - lib/flycal/cli/app.rb
144
+ - lib/flycal/cli/auth.rb
145
+ - lib/flycal/cli/clipboard.rb
146
+ - lib/flycal/cli/config.rb
147
+ - lib/flycal/cli/file_cache.rb
148
+ - lib/flycal/cli/locale.rb
149
+ - lib/flycal/client.rb
150
+ - lib/flycal/credentials.rb
151
+ - lib/flycal/date_time_parser.rb
152
+ - lib/flycal/description_query.rb
153
+ - lib/flycal/duration_parser.rb
154
+ - lib/flycal/error.rb
155
+ - lib/flycal/event_mapper.rb
156
+ - lib/flycal/locale.rb
157
+ - lib/flycal/mock.rb
158
+ - lib/flycal/mock/calendar_service.rb
159
+ - lib/flycal/mock/config.rb
160
+ - lib/flycal/mock/event_generator.rb
161
+ - lib/flycal/pipeline.rb
162
+ - lib/flycal/pipeline/aggregator.rb
163
+ - lib/flycal/pipeline/json_renderer.rb
164
+ - lib/flycal/pipeline/params.rb
165
+ - lib/flycal/pipeline/renderer.rb
166
+ - lib/flycal/pipeline/retriever.rb
167
+ - lib/flycal/pipeline/search_pipeline.rb
168
+ - lib/flycal/pipeline/text_renderer.rb
169
+ - lib/flycal/slot_finder.rb
170
+ - lib/flycal/slot_formatter.rb
171
+ - lib/flycal/version.rb
137
172
  - lib/flycal_cli.rb
138
- - lib/flycal_cli/auth.rb
139
- - lib/flycal_cli/calendar_service.rb
140
- - lib/flycal_cli/cli.rb
141
- - lib/flycal_cli/clipboard.rb
142
- - lib/flycal_cli/config.rb
143
- - lib/flycal_cli/date_time_parser.rb
144
- - lib/flycal_cli/description_query.rb
145
- - lib/flycal_cli/duration_parser.rb
146
- - lib/flycal_cli/locale.rb
147
- - lib/flycal_cli/mock.rb
148
- - lib/flycal_cli/mock/calendar_service.rb
149
- - lib/flycal_cli/mock/config.rb
150
- - lib/flycal_cli/mock/event_generator.rb
151
- - lib/flycal_cli/pipeline.rb
152
- - lib/flycal_cli/pipeline/aggregator.rb
153
- - lib/flycal_cli/pipeline/json_renderer.rb
154
- - lib/flycal_cli/pipeline/params.rb
155
- - lib/flycal_cli/pipeline/renderer.rb
156
- - lib/flycal_cli/pipeline/retriever.rb
157
- - lib/flycal_cli/pipeline/search_pipeline.rb
158
- - lib/flycal_cli/pipeline/text_renderer.rb
159
- - lib/flycal_cli/slot_finder.rb
160
- - lib/flycal_cli/slot_formatter.rb
161
- - lib/flycal_cli/version.rb
162
173
  - locales/en.json
163
174
  - locales/it.json
164
175
  - mcp/README.md
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "flycal_cli/mock/config"
4
- require "flycal_cli/mock/event_generator"
5
- require "flycal_cli/mock/calendar_service"
6
-
7
- module FlycalCli
8
- module Mock
9
- end
10
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "flycal_cli/pipeline/params"
4
- require "flycal_cli/pipeline/retriever"
5
- require "flycal_cli/pipeline/aggregator"
6
- require "flycal_cli/pipeline/renderer"
7
- require "flycal_cli/pipeline/text_renderer"
8
- require "flycal_cli/pipeline/json_renderer"
9
- require "flycal_cli/pipeline/search_pipeline"
10
-
11
- module FlycalCli
12
- module Pipeline
13
- end
14
- end
@@ -1,68 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FlycalCli
4
- class SlotFormatter
5
- class << self
6
- def format_header(from:, to:, duration:, calendars:, count:, template: nil)
7
- lines = []
8
- lines << Locale.t(
9
- "slots.header",
10
- count: underline(count),
11
- from: underline(Locale.format_long_date(from)),
12
- to: underline(Locale.format_long_date(to)),
13
- duration: underline(duration),
14
- template: underline(template.to_s)
15
- )
16
- calendars.each do |cal|
17
- lines << "- #{cal[:name]}"
18
- end
19
- lines << "link: #{google_calendar_day_url(from)}"
20
- lines.join("\n")
21
- end
22
-
23
- def format_output(slots_by_day)
24
- lines = []
25
-
26
- slots_by_day.sort_by(&:first).each do |date, slots|
27
- lines << "" unless lines.empty?
28
- lines << underline(day_header(date))
29
- slots.each do |start_at, end_at|
30
- lines << slot_range(start_at, end_at)
31
- end
32
- end
33
-
34
- lines.join("\n")
35
- end
36
-
37
- def strip_ansi(text)
38
- text.to_s.gsub(/\e\[[0-9;]*m/, "")
39
- end
40
-
41
- private
42
-
43
- def underline(str)
44
- "\e[4m#{str}\e[0m"
45
- end
46
-
47
- def google_calendar_day_url(from)
48
- t = from.respond_to?(:to_time) ? from.to_time : from
49
- "https://calendar.google.com/calendar/r/day/#{t.year}/#{t.month}/#{t.day}"
50
- end
51
-
52
- def day_header(date)
53
- "#{Locale.day_name(date)} #{date.day}/#{date.month}"
54
- end
55
-
56
- def slot_range(start_at, end_at)
57
- "#{format_time(start_at)} - #{format_time(end_at)}"
58
- end
59
-
60
- def format_time(time)
61
- return time.strftime("%-H") if time.min.zero?
62
-
63
- minutes = sprintf("%02d", time.min)
64
- "#{time.hour}.#{minutes}"
65
- end
66
- end
67
- end
68
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module FlycalCli
4
- VERSION = '0.7.7'
5
- end