hanreki 2.0.0 → 4.3.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 +5 -5
- data/README.md +22 -0
- data/hanreki.gemspec +3 -3
- data/lib/hanreki/cli.rb +2 -2
- data/lib/hanreki/event.rb +12 -0
- data/lib/hanreki/schedule.rb +4 -12
- data/lib/hanreki/version.rb +1 -1
- metadata +15 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4087d3e4cc1c029750b320de3458e2d844bcdb94bb99847a9f16a675a775ebe9
|
4
|
+
data.tar.gz: e52bcbc070d523ce3809586b5fb83d08a3d9af46be2405b1f3758b73a8a82d75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a822ec03978588e36c3c9008115d917202764a4ee3d6e7669ecdf13e3f5333d0f4304acb23729807d6f57162236c0c65c548090a054668a504e4b96335dbb46a
|
7
|
+
data.tar.gz: 6c8d428c6c26b581f922f32d094ba5168e84fd68c42a123aa11973ac4973ed65ff5b35c8fea140cf45c5ff1198bfaa6277b962a879cd93ad84c64a243b9aa031
|
data/README.md
CHANGED
@@ -5,6 +5,11 @@
|
|
5
5
|
|
6
6
|
Simple schedule manager for [CAMPHOR-](https://camph.net/)
|
7
7
|
|
8
|
+
## Features
|
9
|
+
- Manage public & private schedules
|
10
|
+
- Manage events using simple CSV master files
|
11
|
+
- Convert master files to iCal and JSON files
|
12
|
+
|
8
13
|
## Installation
|
9
14
|
### Gem
|
10
15
|
Install hanreki with gem command:
|
@@ -27,6 +32,23 @@ And then execute:
|
|
27
32
|
## Usage
|
28
33
|
Run `hanreki help` or `bundle exec hanreki help`.
|
29
34
|
|
35
|
+
### Create a master file
|
36
|
+
`hanreki blank` generates a master file for the next month.
|
37
|
+
|
38
|
+
### Sync
|
39
|
+
`hanreki sync` generates iCal and JSON files from master files.
|
40
|
+
|
41
|
+
### Edit
|
42
|
+
`hanreki edit` opens a editor and validates master files.
|
43
|
+
Hanreki chooses the editor in the following order:
|
44
|
+
|
45
|
+
1. Editor specified by the environment variable: `CAMPHOR_SCHEDULE_EDITOR`
|
46
|
+
2. Editor specified by the environment variable: `EDITOR`
|
47
|
+
3. `vi`
|
48
|
+
|
49
|
+
### Validation
|
50
|
+
`hanreki validate` validates master files.
|
51
|
+
|
30
52
|
## Development
|
31
53
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bundle exec rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
32
54
|
|
data/hanreki.gemspec
CHANGED
@@ -26,11 +26,11 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.required_ruby_version = '>= 2.2.0'
|
28
28
|
|
29
|
-
spec.add_dependency 'thor', '
|
29
|
+
spec.add_dependency 'thor', '>= 0.19', '< 2.0'
|
30
30
|
spec.add_dependency 'icalendar', '~> 2.3'
|
31
31
|
spec.add_dependency 'json-schema', '~> 2.7'
|
32
32
|
|
33
|
-
spec.add_development_dependency 'bundler', '~> 1
|
34
|
-
spec.add_development_dependency 'rake', '~>
|
33
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
34
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
35
35
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
36
36
|
end
|
data/lib/hanreki/cli.rb
CHANGED
@@ -30,12 +30,12 @@ module Hanreki
|
|
30
30
|
validate
|
31
31
|
end
|
32
32
|
|
33
|
-
desc 'sync', 'Sync iCal
|
33
|
+
desc 'sync', 'Sync iCal and JSON'
|
34
34
|
def sync
|
35
35
|
schedule = load_schedule
|
36
|
+
schedule.sort_by_date!
|
36
37
|
schedule.out_ical
|
37
38
|
schedule.out_json
|
38
|
-
schedule.out_jsonp
|
39
39
|
end
|
40
40
|
|
41
41
|
desc 'validate', 'Validate master files'
|
data/lib/hanreki/event.rb
CHANGED
@@ -101,6 +101,18 @@ class Event
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
if @public_summary == 'Make'
|
105
|
+
if @start == @end
|
106
|
+
raise ValidationError.new(self), '"make" event should have duration'
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
if @public_summary == 'Online Open'
|
111
|
+
if @start == @end
|
112
|
+
raise ValidationError.new(self), '"online open" event should have duration'
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
104
116
|
if @private_summary == 'Closed'
|
105
117
|
if not @public_summary.nil?
|
106
118
|
raise ValidationError.new(self), 'invalid public summary for a closed event'
|
data/lib/hanreki/schedule.rb
CHANGED
@@ -13,8 +13,6 @@ class Schedule
|
|
13
13
|
ICAL_PRIVATE_PATH = 'ical/camphor_private_events.ics'
|
14
14
|
JSON_PUBLIC_PATH = 'json/camphor_public_events.json'
|
15
15
|
JSON_PRIVATE_PATH = 'json/camphor_private_events.json'
|
16
|
-
JSONP_PUBLIC_PATH = 'jsonp/camphor_public_events.js'
|
17
|
-
JSONP_PRIVATE_PATH = 'jsonp/camphor_private_events.js'
|
18
16
|
JSON_SCHEMA_PATH = File.expand_path('../schema.json', __FILE__)
|
19
17
|
|
20
18
|
def initialize
|
@@ -64,16 +62,6 @@ class Schedule
|
|
64
62
|
end
|
65
63
|
end
|
66
64
|
|
67
|
-
# Output private and public JSONP calendar files
|
68
|
-
def out_jsonp(callback = 'callback')
|
69
|
-
File.open(JSONP_PUBLIC_PATH, 'w') do |f|
|
70
|
-
f.write("#{callback}(#{events_to_json(public_events, :public)});")
|
71
|
-
end
|
72
|
-
File.open(JSONP_PRIVATE_PATH, 'w') do |f|
|
73
|
-
f.write("#{callback}(#{events_to_json(private_events, :private)});")
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
65
|
# Output master file
|
78
66
|
def out_master
|
79
67
|
CSV.open(
|
@@ -88,6 +76,10 @@ class Schedule
|
|
88
76
|
File.exists? file_path
|
89
77
|
end
|
90
78
|
|
79
|
+
def sort_by_date!
|
80
|
+
@events.sort_by! { |e| [e.start, e.end] }
|
81
|
+
end
|
82
|
+
|
91
83
|
private
|
92
84
|
|
93
85
|
def file_path
|
data/lib/hanreki/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanreki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- CAMPHOR-
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.19'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0.19'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: icalendar
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,28 +64,28 @@ dependencies:
|
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1
|
67
|
+
version: '2.1'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1
|
74
|
+
version: '2.1'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
76
|
name: rake
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
81
|
+
version: '13.0'
|
76
82
|
type: :development
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
88
|
+
version: '13.0'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: rspec
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,8 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
141
|
- !ruby/object:Gem::Version
|
136
142
|
version: '0'
|
137
143
|
requirements: []
|
138
|
-
|
139
|
-
rubygems_version: 2.6.8
|
144
|
+
rubygems_version: 3.0.3
|
140
145
|
signing_key:
|
141
146
|
specification_version: 4
|
142
147
|
summary: Simple schedule manager for CAMPHOR-
|