aigu 0.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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/README.md +33 -88
- data/aigu.gemspec +1 -1
- data/lib/aigu.rb +0 -5
- data/lib/aigu/cli.rb +9 -16
- data/lib/aigu/version.rb +1 -1
- data/spec/spec_helper.rb +9 -1
- metadata +8 -11
- data/SPEC.md +0 -67
- data/lib/aigu/merger.rb +0 -51
- data/lib/aigu/puller.rb +0 -49
- data/lib/aigu/pusher.rb +0 -53
- data/lib/aigu/unmerger.rb +0 -55
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f139727dc870d7af72ca5a7158f82b862ab845d0
|
4
|
+
data.tar.gz: e08a5d627d246fc8a683e10bca1b0d92c6c3255d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 408822e9bbe23a275efa973102e9ee0dbbeface4f27c9483b80632b7f367cef9a9cd1acb249de36c905bd6499fc0e5e6b9b2491d8dbbc3b96efcaf30fdaa9ac3
|
7
|
+
data.tar.gz: 93567c83ec12858ab34e243887f8b711f03d597f596d83531bcc5c8bb17b7f5d5a5e6944ad400552ed2cdcefe2f972649641167cf7a76e041c9e3c9933729cf8
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,16 +1,8 @@
|
|
1
1
|
## Introduction
|
2
2
|
|
3
|
-
Aigu is a set of utility to process localization files to
|
4
|
-
to
|
5
|
-
|
6
|
-
|
7
|
-
The following localization file formats are supported: Rails YAML, Android XML,
|
8
|
-
Java Enum Core, iOS strings and stringsdict and Ember JavaScript.
|
9
|
-
|
10
|
-
Merge and unmerge commands allows to merge different source files into a
|
11
|
-
single JSON file to send as a single Accent project.
|
12
|
-
|
13
|
-
Push and pull can be used to interact directly with Accent.
|
3
|
+
Aigu is a set of utility to process localization files to generate JSON files
|
4
|
+
to send to Accent as well as taking JSON files from Accent and convert them
|
5
|
+
back to localization files.
|
14
6
|
|
15
7
|
## Installation
|
16
8
|
|
@@ -34,24 +26,25 @@ This file will then be compatible with Accent.
|
|
34
26
|
```bash
|
35
27
|
$ aigu <export-command> --locale=fr --input-directory=config/locales --output-file=my-project.json
|
36
28
|
```
|
29
|
+
#### Commands
|
30
|
+
|
31
|
+
| Command | File format |
|
32
|
+
|--------------------|---------------------------|
|
33
|
+
| `rails-export` | Rails YAML |
|
34
|
+
| `android-export` | Android XML |
|
35
|
+
| `core-export` | Java Enum Core |
|
36
|
+
| `ios-export` | iOS strings & stringsdict |
|
37
|
+
| `ember-export` | Ember.js JavaScript |
|
38
|
+
| `ember-pod-export` | Ember.js pods JSON |
|
37
39
|
|
38
40
|
#### Options
|
39
41
|
|
40
|
-
| Option | Description
|
41
|
-
|
42
|
-
| `locale` | The locale used to find localization files.
|
43
|
-
| `input-directory` | The directory used to find localization files
|
44
|
-
| `output-file` | The path to the JSON file that will be written by `aigu`
|
45
|
-
| `ignore` | The patterns `aigu` will use to skip ignored files (eg. `routes.yml`)
|
46
|
-
|
47
|
-
| Command | File format |
|
48
|
-
|--------------------|----------------------------|
|
49
|
-
| `rails-export` | Rails YAML |
|
50
|
-
| `android-export` | Android XML |
|
51
|
-
| `core-export` | Java Enum Core |
|
52
|
-
| `ios-export` | iOS strings & stringsdict |
|
53
|
-
| `ember-export` | Ember.js JavaScript |
|
54
|
-
| `ember-pod-export` | Ember.js pods JSON |
|
42
|
+
| Option | Description |
|
43
|
+
|-------------------|-----------------------------------------------------------------------|
|
44
|
+
| `locale` | The locale used to find localization files. |
|
45
|
+
| `input-directory` | The directory used to find localization files |
|
46
|
+
| `output-file` | The path to the JSON file that will be written by `aigu` |
|
47
|
+
| `ignore` | The patterns `aigu` will use to skip ignored files (eg. `routes.yml`) |
|
55
48
|
|
56
49
|
### Importing the JSON file from Accent
|
57
50
|
|
@@ -62,72 +55,24 @@ localization files in the output directory.
|
|
62
55
|
$ aigu <import-command> --locale=fr --input-file=file-from-accent.json --output-directory=config/locales
|
63
56
|
```
|
64
57
|
|
65
|
-
####
|
66
|
-
|
67
|
-
| Option | Description |
|
68
|
-
|--------------------|---------------------------------------------------------------------------------------------------|
|
69
|
-
| `locale` | The locale used to generate localization files. Files will be generated as `<file>.<locale>.yml` |
|
70
|
-
| `input-file` | The path to the Accent-generated JSON file |
|
71
|
-
| `output-directory` | The directory where the localization YAML files will be generated |
|
72
|
-
|
73
|
-
| Command | File format |
|
74
|
-
|--------------------|----------------------------|
|
75
|
-
| `rails-import` | Rails YAML |
|
76
|
-
| `android-import` | Android XML |
|
77
|
-
| `core-import` | Java Enum Core |
|
78
|
-
| `ios-import` | iOS strings & stringsdict |
|
79
|
-
| `ember-import` | Ember.js JavaScript |
|
80
|
-
| `ember-pod-import` | Ember.js pods JSON |
|
81
|
-
|
82
|
-
### Merge
|
83
|
-
|
84
|
-
The `merge` command will combine several JSON file into a single one to send into a single Accent project. It will prefix keys with
|
85
|
-
a pattern embedding the filename to allow later unmerging. It works from an input directory, mergin all json files in it.
|
86
|
-
A file can be named `default.json` to avoid prefixes in the resulting json.
|
87
|
-
|
88
|
-
#### Options
|
89
|
-
|
90
|
-
| Option | Description |
|
91
|
-
|--------------------|---------------------------------------------------------------------------------------------------|
|
92
|
-
| `input-directory` | The directory containing json files to merge |
|
93
|
-
| `output-file` | The path to the JSON file that will be written to |
|
94
|
-
|
95
|
-
|
96
|
-
### Unmerge
|
97
|
-
|
98
|
-
The `unmerge` will split the Accent JSON file into several json files, for further processing. It will look for the prefix pattern
|
99
|
-
of the merge command and will extract the filename or use default.json if pattern is not found.
|
100
|
-
|
101
|
-
#### Options
|
102
|
-
|
103
|
-
| Option | Description |
|
104
|
-
|--------------------|---------------------------------------------------------------------------------------------------|
|
105
|
-
| `input-file` | The path to the Accent-generated JSON file |
|
106
|
-
| `output-directory` | The directory where the unmerged files will be written |
|
107
|
-
|
108
|
-
### Sending to Accent
|
109
|
-
|
110
|
-
The `push` command takes a JSON file exported by Aigu and send it to Accent
|
111
|
-
|
112
|
-
#### Options
|
113
|
-
|
114
|
-
| Option | Description |
|
115
|
-
|--------------------|-------------------------------------------------------------------|
|
116
|
-
| `input-file` | The path to the Aigu-generated JSON file |
|
117
|
-
| `accent-api-key` | The API key of the Accent project. (See project config in Accent) |
|
118
|
-
| `accent-url` | The URL to the instance of Accent to use |
|
119
|
-
|
120
|
-
### Pulling from Accent
|
58
|
+
#### Commands
|
121
59
|
|
122
|
-
|
60
|
+
| Command | File format |
|
61
|
+
|--------------------|---------------------------|
|
62
|
+
| `rails-import` | Rails YAML |
|
63
|
+
| `android-import` | Android XML |
|
64
|
+
| `core-import` | Java Enum Core |
|
65
|
+
| `ios-import` | iOS strings & stringsdict |
|
66
|
+
| `ember-import` | Ember.js JavaScript |
|
67
|
+
| `ember-pod-import` | Ember.js pods JSON |
|
123
68
|
|
124
69
|
#### Options
|
125
70
|
|
126
|
-
| Option | Description
|
127
|
-
|
128
|
-
| `
|
129
|
-
| `
|
130
|
-
| `
|
71
|
+
| Option | Description |
|
72
|
+
|--------------------|--------------------------------------------------------------------------------------------------|
|
73
|
+
| `locale` | The locale used to generate localization files. Files will be generated as `<file>.<locale>.yml` |
|
74
|
+
| `input-file` | The path to the Accent-generated JSON file |
|
75
|
+
| `output-directory` | The directory where the localization YAML files will be generated |
|
131
76
|
|
132
77
|
### Using `.aigu.yml`
|
133
78
|
|
data/aigu.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Aigu::VERSION
|
9
9
|
spec.authors = ['Rémi Prévost', 'William Jobin']
|
10
10
|
spec.email = ['rprevost@mirego.com', 'wjobin@mirego.com']
|
11
|
-
spec.description = 'Aigu
|
11
|
+
spec.description = 'Aigu is a set of utility to process localization files to generate JSON files to send to Accent as well as taking JSON files from Accent and convert them back to localization files.'
|
12
12
|
spec.summary = spec.description
|
13
13
|
spec.homepage = 'https://github.com/mirego/aigu'
|
14
14
|
spec.license = 'BSD 3-Clause'
|
data/lib/aigu.rb
CHANGED
data/lib/aigu/cli.rb
CHANGED
@@ -12,11 +12,7 @@ module Aigu
|
|
12
12
|
'ember-import' => 'EmberImporter',
|
13
13
|
'ember-export' => 'EmberExporter',
|
14
14
|
'ember-pod-import' => 'EmberPodImporter',
|
15
|
-
'ember-pod-export' => 'EmberPodExporter'
|
16
|
-
'merge' => 'Merger',
|
17
|
-
'unmerge' => 'Unmerger',
|
18
|
-
'pull' => 'Puller',
|
19
|
-
'push' => 'Pusher'
|
15
|
+
'ember-pod-export' => 'EmberPodExporter'
|
20
16
|
}.freeze
|
21
17
|
|
22
18
|
def initialize(env, argv)
|
@@ -69,23 +65,23 @@ Commands:
|
|
69
65
|
Options:
|
70
66
|
DOC
|
71
67
|
|
72
|
-
opts.on('--input-directory=', 'The directory in which the Rails YAML localization files are stored
|
68
|
+
opts.on('--input-directory=', 'The directory in which the Rails YAML localization files are stored') do |directory|
|
73
69
|
options[:'input-directory'] = directory
|
74
70
|
end
|
75
71
|
|
76
|
-
opts.on('--output-directory=', 'The directory in which the Rails YAML localization files will be generated
|
72
|
+
opts.on('--output-directory=', 'The directory in which the Rails YAML localization files will be generated') do |directory|
|
77
73
|
options[:'output-directory'] = directory
|
78
74
|
end
|
79
75
|
|
80
|
-
opts.on('--input-file=', 'The JSON file generated by Accent
|
76
|
+
opts.on('--input-file=', 'The JSON file generated by Accent') do |file|
|
81
77
|
options[:'input-file'] = file
|
82
78
|
end
|
83
79
|
|
84
|
-
opts.on('--output-file=', 'The JSON file that will be generated for Accent
|
80
|
+
opts.on('--output-file=', 'The JSON file that will be generated for Accent') do |file|
|
85
81
|
options[:'output-file'] = file
|
86
82
|
end
|
87
83
|
|
88
|
-
opts.on('--locale=', 'The locale to use.
|
84
|
+
opts.on('--locale=', 'The locale to use. Importers and exporters may need it to process files') do |locale|
|
89
85
|
options[:locale] = locale
|
90
86
|
end
|
91
87
|
|
@@ -93,12 +89,9 @@ DOC
|
|
93
89
|
options[:ignore] = ignore.split(',')
|
94
90
|
end
|
95
91
|
|
96
|
-
opts.
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
opts.on('--accent-url=', 'Accent URL (ex: http://accent.mirego.com)') do |url|
|
101
|
-
options[:'accent-url'] = url
|
92
|
+
opts.on_tail('-v', '--version', 'Output Aigu’s version') do
|
93
|
+
puts "aigu-v#{Aigu::VERSION}"
|
94
|
+
exit
|
102
95
|
end
|
103
96
|
|
104
97
|
opts.on_tail('-h', '--help', 'Show this message') do
|
data/lib/aigu/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -3,7 +3,15 @@ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
|
3
3
|
require 'rspec'
|
4
4
|
require 'aigu'
|
5
5
|
|
6
|
-
RSpec.configure do
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.before(:suite) do
|
8
|
+
module Kernel
|
9
|
+
def puts(*)
|
10
|
+
# Silence “puts” calls — we don’t want to write anything to STDOUT when
|
11
|
+
# running the test suite.
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
7
15
|
end
|
8
16
|
|
9
17
|
class String
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aigu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0
|
4
|
+
version: '1.0'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Prévost
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-04-
|
12
|
+
date: 2017-04-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -95,8 +95,9 @@ dependencies:
|
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '1.6'
|
98
|
-
description: Aigu
|
99
|
-
|
98
|
+
description: Aigu is a set of utility to process localization files to generate JSON
|
99
|
+
files to send to Accent as well as taking JSON files from Accent and convert them
|
100
|
+
back to localization files.
|
100
101
|
email:
|
101
102
|
- rprevost@mirego.com
|
102
103
|
- wjobin@mirego.com
|
@@ -113,7 +114,6 @@ files:
|
|
113
114
|
- LICENSE.md
|
114
115
|
- README.md
|
115
116
|
- Rakefile
|
116
|
-
- SPEC.md
|
117
117
|
- aigu.gemspec
|
118
118
|
- bin/aigu
|
119
119
|
- bin/phare
|
@@ -132,12 +132,8 @@ files:
|
|
132
132
|
- lib/aigu/importer.rb
|
133
133
|
- lib/aigu/ios_exporter.rb
|
134
134
|
- lib/aigu/ios_importer.rb
|
135
|
-
- lib/aigu/merger.rb
|
136
|
-
- lib/aigu/puller.rb
|
137
|
-
- lib/aigu/pusher.rb
|
138
135
|
- lib/aigu/rails_exporter.rb
|
139
136
|
- lib/aigu/rails_importer.rb
|
140
|
-
- lib/aigu/unmerger.rb
|
141
137
|
- lib/aigu/version.rb
|
142
138
|
- spec/aigu/android_exporter_spec.rb
|
143
139
|
- spec/aigu/android_importer_spec.rb
|
@@ -183,8 +179,9 @@ rubyforge_project:
|
|
183
179
|
rubygems_version: 2.6.8
|
184
180
|
signing_key:
|
185
181
|
specification_version: 4
|
186
|
-
summary: Aigu
|
187
|
-
|
182
|
+
summary: Aigu is a set of utility to process localization files to generate JSON files
|
183
|
+
to send to Accent as well as taking JSON files from Accent and convert them back
|
184
|
+
to localization files.
|
188
185
|
test_files:
|
189
186
|
- spec/aigu/android_exporter_spec.rb
|
190
187
|
- spec/aigu/android_importer_spec.rb
|
data/SPEC.md
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# Specification
|
2
|
-
|
3
|
-
## Keys
|
4
|
-
|
5
|
-
Keys are generated based on the localization file path and the YAML key.
|
6
|
-
|
7
|
-
```json
|
8
|
-
{
|
9
|
-
"<path>|<key>": "<value>"
|
10
|
-
}
|
11
|
-
```
|
12
|
-
|
13
|
-
Where:
|
14
|
-
|
15
|
-
| Item | Description |
|
16
|
-
|-----------|-----------------------------------------------------------------------|
|
17
|
-
| `<path>` | The path of the YAML localization file (with `/` used as a separator) |
|
18
|
-
| `<key> ` | The full YAML key with `:` used as a separator between levels |
|
19
|
-
| `<value>` | The localized string |
|
20
|
-
|
21
|
-
## Examples
|
22
|
-
|
23
|
-
### Input
|
24
|
-
|
25
|
-
```yaml
|
26
|
-
# config/locales/app/users.fr.yml
|
27
|
-
fr:
|
28
|
-
app:
|
29
|
-
users:
|
30
|
-
index:
|
31
|
-
new: 'Nouvel utilisateur'
|
32
|
-
edit: 'Modifier l’utilisateur %{user}'
|
33
|
-
|
34
|
-
# config/locales/app/shared/comments.fr.yml
|
35
|
-
fr:
|
36
|
-
app:
|
37
|
-
shared:
|
38
|
-
comments:
|
39
|
-
title: 'Tous les commentaires'
|
40
|
-
|
41
|
-
# config/locales/admin/shared.fr.yml
|
42
|
-
fr:
|
43
|
-
admin:
|
44
|
-
shared:
|
45
|
-
footer:
|
46
|
-
copyright: 'Copyright © %{year}'
|
47
|
-
|
48
|
-
# config/locales/layouts.fr.yml
|
49
|
-
fr:
|
50
|
-
layouts:
|
51
|
-
application:
|
52
|
-
title: 'Mon Application'
|
53
|
-
```
|
54
|
-
|
55
|
-
### Output
|
56
|
-
|
57
|
-
With `--locale=fr` option.
|
58
|
-
|
59
|
-
```json
|
60
|
-
{
|
61
|
-
"app/users|app.users.index.new": "Nouvel utilisateur",
|
62
|
-
"app/users|app.users.index.edit": "Modifier l’utilisateur %{user}",
|
63
|
-
"app/shared/comments|app.shared.comments.title": "Tous les commentaires",
|
64
|
-
"admin/shared|admin.shared.footer.copyright": "Copyright © %{year}",
|
65
|
-
"layouts|layouts.application.title": "Mon Application"
|
66
|
-
}
|
67
|
-
```
|
data/lib/aigu/merger.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
module Aigu
|
2
|
-
class Merger
|
3
|
-
def initialize(opts = {})
|
4
|
-
@output_file = opts[:'output-file']
|
5
|
-
@input_directory = opts[:'input-directory']
|
6
|
-
end
|
7
|
-
|
8
|
-
def process!
|
9
|
-
puts "Generating flat Accent JSON file `#{@output_file}` merging json files in `#{@input_directory}` directory"
|
10
|
-
|
11
|
-
puts '---'
|
12
|
-
|
13
|
-
build_output
|
14
|
-
write_json_file
|
15
|
-
|
16
|
-
puts '---'
|
17
|
-
puts 'Done'
|
18
|
-
end
|
19
|
-
|
20
|
-
protected
|
21
|
-
|
22
|
-
def build_output
|
23
|
-
@output = {}
|
24
|
-
|
25
|
-
pattern = File.join(@input_directory, '*.json')
|
26
|
-
Dir[pattern].each do |filepath|
|
27
|
-
puts "Processing #{filepath}"
|
28
|
-
|
29
|
-
file_name = filepath.rpartition(File::SEPARATOR).last.split('.', 2).first
|
30
|
-
prefix = file_name == 'default' ? '' : "@#{file_name.upcase}@__"
|
31
|
-
|
32
|
-
json = JSON.parse(File.read(filepath))
|
33
|
-
json.each_pair do |key, value|
|
34
|
-
@output[prefix + key] = value
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
@output
|
39
|
-
end
|
40
|
-
|
41
|
-
def write_json_file
|
42
|
-
file_path = @output_file
|
43
|
-
puts "Generating #{file_path}"
|
44
|
-
FileUtils.mkdir_p(File.dirname(file_path))
|
45
|
-
|
46
|
-
File.open(file_path, 'w+') do |file|
|
47
|
-
file << JSON.pretty_generate(JSON.parse(@output.to_json))
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
data/lib/aigu/puller.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
module Aigu
|
2
|
-
class Puller
|
3
|
-
PULL_PATH = '/public_api/latest_revision?language=%s&render_format=json&render_filename=aigu.json'
|
4
|
-
|
5
|
-
def initialize(opts = {})
|
6
|
-
@output_file = opts[:'output-file']
|
7
|
-
@accent_api_key = opts[:'accent-api-key']
|
8
|
-
@accent_url = opts[:'accent-url']
|
9
|
-
@locale = opts[:'locale']
|
10
|
-
end
|
11
|
-
|
12
|
-
def process!
|
13
|
-
puts "Pulling JSON file `#{@output_file}` from Accent"
|
14
|
-
|
15
|
-
puts '---'
|
16
|
-
|
17
|
-
pull
|
18
|
-
|
19
|
-
puts '---'
|
20
|
-
puts 'Done'
|
21
|
-
end
|
22
|
-
|
23
|
-
protected
|
24
|
-
|
25
|
-
def pull
|
26
|
-
uri = URI(@accent_url + format(PULL_PATH, @locale))
|
27
|
-
|
28
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
29
|
-
uri.scheme == 'https' && http.use_ssl = true
|
30
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
31
|
-
request = Net::HTTP::Get.new(uri)
|
32
|
-
request.add_field('Authorization', @accent_api_key)
|
33
|
-
|
34
|
-
response = http.request(request)
|
35
|
-
puts 'Response code: ' + response.code
|
36
|
-
|
37
|
-
if response.code != '200'
|
38
|
-
puts 'Error pulling string revision from Accent'
|
39
|
-
exit 1
|
40
|
-
end
|
41
|
-
|
42
|
-
puts "Generating #{@output_file}"
|
43
|
-
|
44
|
-
File.open(@output_file, 'w+') do |file|
|
45
|
-
file << response.body
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
data/lib/aigu/pusher.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
module Aigu
|
2
|
-
class Pusher
|
3
|
-
PUSH_PATH = '/public_api/revisions'
|
4
|
-
|
5
|
-
HTTP_ALREADY_UP_TO_DATE = '200'.freeze
|
6
|
-
HTTP_UPDATED = '201'.freeze
|
7
|
-
HTTP_SUCCESS_CODES = [HTTP_ALREADY_UP_TO_DATE, HTTP_UPDATED].freeze
|
8
|
-
|
9
|
-
def initialize(opts = {})
|
10
|
-
@input_file = opts[:'input-file']
|
11
|
-
@accent_api_key = opts[:'accent-api-key']
|
12
|
-
@accent_url = opts[:'accent-url']
|
13
|
-
end
|
14
|
-
|
15
|
-
def process!
|
16
|
-
puts "Sending JSON file `#{@input_file}` to Accent"
|
17
|
-
|
18
|
-
puts '---'
|
19
|
-
|
20
|
-
send
|
21
|
-
|
22
|
-
puts '---'
|
23
|
-
puts 'Done'
|
24
|
-
end
|
25
|
-
|
26
|
-
protected
|
27
|
-
|
28
|
-
def send
|
29
|
-
payload = File.read(@input_file)
|
30
|
-
file_name = @input_file.rpartition(File::SEPARATOR).last
|
31
|
-
|
32
|
-
uri = URI(@accent_url + PUSH_PATH)
|
33
|
-
|
34
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
35
|
-
uri.scheme == 'https' && http.use_ssl = true
|
36
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
37
|
-
request = Net::HTTP::Post.new(uri)
|
38
|
-
request.add_field('Authorization', @accent_api_key)
|
39
|
-
request.add_field('Content-Type', 'application/json')
|
40
|
-
|
41
|
-
request.body = JSON.pretty_generate(JSON.parse({ revision: { file: payload, filename: file_name } }.to_json))
|
42
|
-
|
43
|
-
response = http.request(request)
|
44
|
-
|
45
|
-
puts 'Response: ' + response.code
|
46
|
-
|
47
|
-
unless HTTP_SUCCESS_CODES.include? response.code
|
48
|
-
puts 'Error pushing string update to Accent'
|
49
|
-
exit 1
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
data/lib/aigu/unmerger.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
module Aigu
|
2
|
-
class Unmerger
|
3
|
-
UNMERGE_REGEX = /^@(?<file_name>\w+)@__(?<key>.+)$/
|
4
|
-
|
5
|
-
def initialize(opts = {})
|
6
|
-
@output_directory = opts[:'output-directory']
|
7
|
-
@input_file = opts[:'input-file']
|
8
|
-
end
|
9
|
-
|
10
|
-
def process!
|
11
|
-
puts "Unmerging Accent json file `#{@input_file}` to `#{@output_directory}` directory"
|
12
|
-
|
13
|
-
puts '---'
|
14
|
-
|
15
|
-
parse_json
|
16
|
-
write_json_files
|
17
|
-
|
18
|
-
puts '---'
|
19
|
-
puts 'Done'
|
20
|
-
end
|
21
|
-
|
22
|
-
protected
|
23
|
-
|
24
|
-
def parse_json
|
25
|
-
@object = {}
|
26
|
-
|
27
|
-
json = JSON.parse(File.read(@input_file))
|
28
|
-
|
29
|
-
json.each_pair do |key, value|
|
30
|
-
match_data = key.match(UNMERGE_REGEX)
|
31
|
-
if match_data
|
32
|
-
@object[match_data[:file_name]] ||= {}
|
33
|
-
@object[match_data[:file_name]][match_data[:key]] = value
|
34
|
-
else
|
35
|
-
@object['DEFAULT'] ||= {}
|
36
|
-
@object['DEFAULT'][key] = value
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
@object
|
41
|
-
end
|
42
|
-
|
43
|
-
def write_json_files
|
44
|
-
@object.each_pair do |file_name, json|
|
45
|
-
file_path = File.join(@output_directory, "#{file_name.downcase}.json")
|
46
|
-
puts "Generating #{file_path}"
|
47
|
-
FileUtils.mkdir_p(File.dirname(file_path))
|
48
|
-
|
49
|
-
File.open(file_path, 'w+') do |file|
|
50
|
-
file << JSON.pretty_generate(JSON.parse(json.to_json))
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|