icalPal 3.2.0 → 3.4.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 +23 -12
- data/bin/icalPal +51 -90
- data/bin/icalpal +322 -0
- data/icalPal.gemspec +32 -2
- data/lib/ToICalPal.rb +24 -27
- data/lib/defaults.rb +8 -6
- data/lib/event.rb +101 -80
- data/lib/icalPal.rb +18 -43
- data/lib/options.rb +52 -9
- data/lib/rdt.rb +22 -4
- data/lib/utils.rb +38 -0
- data/lib/version.rb +1 -1
- metadata +36 -6
data/lib/rdt.rb
CHANGED
@@ -1,9 +1,22 @@
|
|
1
|
-
require 'date'
|
2
|
-
|
3
1
|
module ICalPal
|
4
2
|
# Child class of DateTime that adds support for relative dates (<em><b>R</b>elative<b>D</b>ate<b>T</b>ime</em>).
|
5
3
|
class RDT < DateTime
|
6
4
|
|
5
|
+
# Create a new RDT from a Time object
|
6
|
+
def self.from_time(t)
|
7
|
+
new(*t.to_a[0..5].reverse)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Create a new RDT from seconds since epoch
|
11
|
+
def self.from_epoch(s)
|
12
|
+
from_time(Time.at(s))
|
13
|
+
end
|
14
|
+
|
15
|
+
# Create a new RDT from seconds since iCal epoch
|
16
|
+
def self.from_itime(s)
|
17
|
+
from_epoch(s + ITIME)
|
18
|
+
end
|
19
|
+
|
7
20
|
# Convert a String to an RDT
|
8
21
|
#
|
9
22
|
# @param str [String] can be +yesterday+, +today+, +tomorrow+,
|
@@ -28,7 +41,7 @@ module ICalPal
|
|
28
41
|
# @return [String] A string representation of self relative to
|
29
42
|
# today.
|
30
43
|
def to_s
|
31
|
-
return strftime($opts[:df]) if $opts[:nrd] && $opts[:df]
|
44
|
+
return strftime($opts[:df]) if $opts && $opts[:nrd] && $opts[:df]
|
32
45
|
|
33
46
|
case Integer(RDT.new(year, month, day) - $today)
|
34
47
|
when -2 then 'day before yesterday'
|
@@ -36,7 +49,7 @@ module ICalPal
|
|
36
49
|
when 0 then 'today'
|
37
50
|
when 1 then 'tomorrow'
|
38
51
|
when 2 then 'day after tomorrow'
|
39
|
-
else strftime($opts[:df]) if $opts[:df]
|
52
|
+
else strftime($opts[:df]) if $opts && $opts[:df]
|
40
53
|
end
|
41
54
|
end
|
42
55
|
|
@@ -54,6 +67,11 @@ module ICalPal
|
|
54
67
|
to_time.to_i
|
55
68
|
end
|
56
69
|
|
70
|
+
# @return [Array] Only the year, month and day of self
|
71
|
+
def ymd
|
72
|
+
[ year, month, day ]
|
73
|
+
end
|
74
|
+
|
57
75
|
# @see ICalPal::RDT.to_s
|
58
76
|
#
|
59
77
|
# @return [Boolean]
|
data/lib/utils.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Convert a key/value pair to XML. The value should be +nil+, +String+,
|
2
|
+
# +Integer+, +Array+, or +ICalPal::RDT+
|
3
|
+
#
|
4
|
+
# @param key The key
|
5
|
+
# @param value The value
|
6
|
+
# @return [String] The key/value pair in a simple XML format
|
7
|
+
def xmlify(key, value)
|
8
|
+
case value
|
9
|
+
# Nil
|
10
|
+
when NilClass then "<#{key}/>"
|
11
|
+
|
12
|
+
# Array
|
13
|
+
when Array
|
14
|
+
# Treat empty arrays as nil values
|
15
|
+
xmlify(key, nil) if value[0].nil?
|
16
|
+
|
17
|
+
retval = ''
|
18
|
+
value.each { |x| retval += xmlify("#{key}0", x) }
|
19
|
+
"<#{key}>#{retval}</#{key}>"
|
20
|
+
|
21
|
+
# Unknown
|
22
|
+
else "<#{key}>#{value}</#{key}>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Get the application icalPal is most likely running in
|
27
|
+
#
|
28
|
+
# @return [Integer] The basename of the program whose parent process id is 1 (launchd)
|
29
|
+
def ancestor
|
30
|
+
ppid = Process.ppid
|
31
|
+
|
32
|
+
while (ppid != 1)
|
33
|
+
ps = `ps -p #{ppid} -o ppid,command | tail -1`
|
34
|
+
ppid = ps[/^[0-9 ]+ /].to_i
|
35
|
+
end
|
36
|
+
|
37
|
+
ps[ps.rindex('/') + 1..].chop
|
38
|
+
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: icalPal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Rosen
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-04-08 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: nokogiri-plist
|
@@ -29,14 +29,34 @@ dependencies:
|
|
29
29
|
requirements:
|
30
30
|
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 2.6.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 2.6.0
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: timezone
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.99'
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 1.3.0
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.99'
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 1.3.0
|
40
60
|
description: |
|
41
61
|
Inspired by icalBuddy and maintains close compatability. Includes
|
42
62
|
many additional features for querying, filtering, and formatting.
|
@@ -49,6 +69,7 @@ extra_rdoc_files:
|
|
49
69
|
files:
|
50
70
|
- README.md
|
51
71
|
- bin/icalPal
|
72
|
+
- bin/icalpal
|
52
73
|
- icalPal.gemspec
|
53
74
|
- lib/EventKit.rb
|
54
75
|
- lib/ToICalPal.rb
|
@@ -60,11 +81,19 @@ files:
|
|
60
81
|
- lib/rdt.rb
|
61
82
|
- lib/reminder.rb
|
62
83
|
- lib/store.rb
|
84
|
+
- lib/utils.rb
|
63
85
|
- lib/version.rb
|
64
86
|
homepage: https://github.com/ajrosen/icalPal
|
65
87
|
licenses:
|
66
88
|
- GPL-3.0-or-later
|
67
|
-
metadata:
|
89
|
+
metadata:
|
90
|
+
bug_tracker_uri: https://github.com/ajrosen/icalPal/issues
|
91
|
+
rubygems_mfa_required: 'true'
|
92
|
+
post_install_message: |2+
|
93
|
+
|
94
|
+
Note: icalPal requires "Full Disk Access" in System Settings to access your calendar.
|
95
|
+
Make sure the program that runs icalPal, not icalPal itself, has these permissions.
|
96
|
+
|
68
97
|
rdoc_options: []
|
69
98
|
require_paths:
|
70
99
|
- lib
|
@@ -79,7 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
108
|
- !ruby/object:Gem::Version
|
80
109
|
version: '0'
|
81
110
|
requirements: []
|
82
|
-
rubygems_version: 3.6.
|
111
|
+
rubygems_version: 3.6.6
|
83
112
|
specification_version: 4
|
84
113
|
summary: Command-line tool to query the macOS Calendar
|
85
114
|
test_files: []
|
115
|
+
...
|