kamome 0.9.0 → 1.0.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/.rubocop.yml +3 -0
- data/CHANGELOG.md +9 -1
- data/Gemfile.lock +3 -1
- data/README.md +16 -0
- data/exe/kamome +8 -0
- data/kamome.gemspec +1 -0
- data/lib/kamome.rb +4 -4
- data/lib/kamome/cli.rb +101 -0
- data/lib/kamome/downloader.rb +1 -1
- data/lib/kamome/operation.rb +1 -1
- data/lib/kamome/version.rb +1 -1
- metadata +20 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 543759c4f572e9af3e2d98b374bfda5b71b048a873850ae13be1fe2915a783f4
|
4
|
+
data.tar.gz: cf3ccc4d1dd1e416f52df2376b5fae4337effa18426344fa7f35856d034a3997
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c91d7646c2bc4f5aaad10382dde10d93a694eaf32d8af543648d48ebd1ea4528cbdc65ea846c705206661e88414cc5d7bdde17a513959dce1c83cafc4e5ad8c7
|
7
|
+
data.tar.gz: 268e34ed33d3dddca66a184385d5d1dd07803e34f862b8ba82a45557dd38ee2a0822bcbeaa6ad2bf62c7dbae725e9126911fd194efccf105a4754851b2247644
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
# Changelogs
|
2
2
|
|
3
|
-
##
|
3
|
+
## 1.0.0
|
4
|
+
|
5
|
+
* Add executable command: `kamome`
|
6
|
+
* kamome generate_csv
|
7
|
+
* kamome generate_diff_csv [--date=1810]
|
8
|
+
* kamome generate_json
|
9
|
+
* kamome generate_diff_json [--date=1810]
|
10
|
+
|
11
|
+
## 0.9.0
|
4
12
|
|
5
13
|
* Fixed [Unexpected town value](https://github.com/kengos/kamome/issues/1)
|
6
14
|
* Skip `block.call` in the case of `#ambisous_town` is true and is not a first appearance model
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
kamome (0.
|
4
|
+
kamome (1.0.0)
|
5
5
|
rubyzip (~> 1.2)
|
6
|
+
thor (~> 0.19)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: https://rubygems.org/
|
@@ -48,6 +49,7 @@ GEM
|
|
48
49
|
ruby-progressbar (1.10.0)
|
49
50
|
rubyzip (1.2.2)
|
50
51
|
safe_yaml (1.0.4)
|
52
|
+
thor (0.20.3)
|
51
53
|
unicode-display_width (1.4.0)
|
52
54
|
vcr (4.0.0)
|
53
55
|
webmock (3.4.2)
|
data/README.md
CHANGED
@@ -81,6 +81,22 @@ Kamome.import_jigyosho_diff(date: date) do |model, lineno|
|
|
81
81
|
end
|
82
82
|
```
|
83
83
|
|
84
|
+
## Cli commands
|
85
|
+
|
86
|
+
```bash
|
87
|
+
$ kamome generate_csv all.csv
|
88
|
+
$ kamome generate_diff_csv diff.csv --date=1810
|
89
|
+
$ kamome generate_json all.json
|
90
|
+
$ kamome generate_diff_json diff.json
|
91
|
+
```
|
92
|
+
|
93
|
+
For more informations:
|
94
|
+
|
95
|
+
```bash
|
96
|
+
$ kamome -h
|
97
|
+
$ kamome help [command]
|
98
|
+
```
|
99
|
+
|
84
100
|
## FAQ
|
85
101
|
|
86
102
|
### `Kamome.import_xxx` の model の型を変換したい
|
data/exe/kamome
ADDED
data/kamome.gemspec
CHANGED
data/lib/kamome.rb
CHANGED
@@ -61,14 +61,14 @@ module Kamome
|
|
61
61
|
loader.call(operation: operation, &block)
|
62
62
|
end
|
63
63
|
|
64
|
+
def loader
|
65
|
+
Kamome::Loader.new(config: configuration)
|
66
|
+
end
|
67
|
+
|
64
68
|
private
|
65
69
|
|
66
70
|
def configuration
|
67
71
|
@configuration ||= Kamome::Configuration.new
|
68
72
|
end
|
69
|
-
|
70
|
-
def loader
|
71
|
-
Kamome::Loader.new(config: configuration)
|
72
|
-
end
|
73
73
|
end
|
74
74
|
end
|
data/lib/kamome/cli.rb
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
require 'kamome'
|
5
|
+
require 'pathname'
|
6
|
+
|
7
|
+
module Kamome
|
8
|
+
class Cli < ::Thor
|
9
|
+
option :header, type: :boolean, default: true, desc: 'Include headers'
|
10
|
+
desc 'generate_csv', 'Genrate CSV from KEN_ALL.CSV and JIGYOSHO.CSV'
|
11
|
+
def generate_csv(filepath)
|
12
|
+
path = ::Pathname.new(filepath)
|
13
|
+
do_generate_csv(operation_all, path, options[:header])
|
14
|
+
$stdout.puts "Generated csv: #{path}"
|
15
|
+
rescue StandardError => e
|
16
|
+
path.delete if path&.exist?
|
17
|
+
raise e
|
18
|
+
end
|
19
|
+
|
20
|
+
option :header, type: :boolean, default: true, desc: 'Include headers'
|
21
|
+
option :date, type: :string, default: nil, desc: 'Target date'
|
22
|
+
desc 'generate_diff_csv', 'Genrate diff CSV from ADD_YYMM.CSV/DEL_YYMM.CSV/JADDYYMM.CSV/JDELYYMM.CSV'
|
23
|
+
def generate_diff_csv(filepath)
|
24
|
+
path = ::Pathname.new(filepath)
|
25
|
+
do_generate_csv(operation_diff(options[:date]), path, options[:header])
|
26
|
+
$stdout.puts "Generated diff csv: #{path}"
|
27
|
+
rescue StandardError => e
|
28
|
+
path.delete if path&.exist?
|
29
|
+
raise e
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'generate_json', 'Genrate JSON from KEN_ALL.CSV and JIGYOSHO.CSV'
|
33
|
+
def generate_json(filepath)
|
34
|
+
path = ::Pathname.new(filepath)
|
35
|
+
do_generate_json(operation_all, path)
|
36
|
+
$stdout.puts "Generated json: #{path}"
|
37
|
+
end
|
38
|
+
|
39
|
+
option :date, type: :string, default: nil, desc: 'Target date'
|
40
|
+
desc 'generate_diff_json', 'Genrate diff JSON from ADD_YYMM.CSV/DEL_YYMM.CSV/JADDYYMM.CSV/JDELYYMM.CSV'
|
41
|
+
def generate_diff_json(filepath)
|
42
|
+
path = ::Pathname.new(filepath)
|
43
|
+
do_generate_json(operation_diff(options[:date]), path)
|
44
|
+
$stdout.puts "Generated diff json: #{path}"
|
45
|
+
rescue StandardError => e
|
46
|
+
path.delete if path&.exist?
|
47
|
+
raise e
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def operation_all
|
53
|
+
[
|
54
|
+
::Kamome::Operation.general_all,
|
55
|
+
::Kamome::Operation.jigyosho_all
|
56
|
+
]
|
57
|
+
end
|
58
|
+
|
59
|
+
def operation_diff(date)
|
60
|
+
require 'date'
|
61
|
+
date ||= Date.today << 1
|
62
|
+
[
|
63
|
+
::Kamome::Operation.general_diff(date: date),
|
64
|
+
::Kamome::Operation.jigyosho_diff(date: date)
|
65
|
+
]
|
66
|
+
end
|
67
|
+
|
68
|
+
def do_generate_csv(operations, path, header)
|
69
|
+
require 'csv'
|
70
|
+
::CSV.open(path, 'w') do |csv|
|
71
|
+
csv << csv_headers if header
|
72
|
+
operations.each do |operation|
|
73
|
+
Kamome.loader.call(operation: operation) do |model|
|
74
|
+
csv << build_pretty_attributes(model).values
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def do_generate_json(operations, path)
|
81
|
+
require 'json'
|
82
|
+
json = {}
|
83
|
+
operations.each do |operation|
|
84
|
+
Kamome.loader.call(operation: operation) do |model|
|
85
|
+
json[model.zipcode] ||= []
|
86
|
+
json[model.zipcode] << build_pretty_attributes(model)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
::File.write(path, ::JSON.pretty_generate(json))
|
90
|
+
end
|
91
|
+
|
92
|
+
REJECT_KEYS = [:ambiguous_town].freeze
|
93
|
+
def csv_headers
|
94
|
+
Kamome::Models::Address.new.attributes.keys.reject { |o| REJECT_KEYS.include?(o) }
|
95
|
+
end
|
96
|
+
|
97
|
+
def build_pretty_attributes(model)
|
98
|
+
model.attributes.reject { |key, _| REJECT_KEYS.include?(key) }
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
data/lib/kamome/downloader.rb
CHANGED
data/lib/kamome/operation.rb
CHANGED
@@ -36,7 +36,7 @@ module Kamome
|
|
36
36
|
|
37
37
|
private
|
38
38
|
|
39
|
-
YYMM_FORMAT = /\d{2}(0[1-9]|1[0-2])/.freeze
|
39
|
+
YYMM_FORMAT = /\A\d{2}(0[1-9]|1[0-2])\z/.freeze
|
40
40
|
def format_yymm(date)
|
41
41
|
yymm = date.respond_to?(:strftime) ? date.strftime('%y%m') : date.to_s
|
42
42
|
return yymm if yymm =~ YYMM_FORMAT
|
data/lib/kamome/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kamome
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kengos
|
@@ -122,10 +122,25 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '1.2'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: thor
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0.19'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.19'
|
125
139
|
description: the Japanese postcode loading interface
|
126
140
|
email:
|
127
141
|
- kengo@kengos.jp
|
128
|
-
executables:
|
142
|
+
executables:
|
143
|
+
- kamome
|
129
144
|
extensions: []
|
130
145
|
extra_rdoc_files: []
|
131
146
|
files:
|
@@ -143,8 +158,10 @@ files:
|
|
143
158
|
- Rakefile
|
144
159
|
- bin/console
|
145
160
|
- bin/setup
|
161
|
+
- exe/kamome
|
146
162
|
- kamome.gemspec
|
147
163
|
- lib/kamome.rb
|
164
|
+
- lib/kamome/cli.rb
|
148
165
|
- lib/kamome/configuration.rb
|
149
166
|
- lib/kamome/csv_handler.rb
|
150
167
|
- lib/kamome/downloader.rb
|
@@ -184,5 +201,5 @@ rubyforge_project:
|
|
184
201
|
rubygems_version: 2.7.6
|
185
202
|
signing_key:
|
186
203
|
specification_version: 4
|
187
|
-
summary: kamome-0.
|
204
|
+
summary: kamome-1.0.0
|
188
205
|
test_files: []
|