fci 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f358abc6af346556ae042946ba6677a43c17323a
4
- data.tar.gz: 43940e9e2707254c66745a8f8b06eeeb3156452a
3
+ metadata.gz: 63e52509bac34e31f3b77df1785037f32bab9124
4
+ data.tar.gz: 5290ee3ebf5ec6b60ce1373afa709cfc0ddada52
5
5
  SHA512:
6
- metadata.gz: 34b6e4f68cec0550dd52c3204a3f8f01cc39ff00c066fb17cb43b1e840adcba5331b7eebbd59b582c545a2f04c9ba28d7d48191eccc16a467365922bd0554689
7
- data.tar.gz: 5e7706624f504603c0178549177f73262a92ff8d62bc183514129d9ebb0cc0fc6bfd552bc6fe07e9954fa86493fb8c7913caef51532a17e718eb55147b50aff4
6
+ metadata.gz: c5d27104d14292fc5e3fae45240de84c3f2f723ed2efbf1c08375e0373fad4bdb3d3d5eb946b9a37a916dc6fcfd1bfcff03155f971df13b128e8630273a56903
7
+ data.tar.gz: 79652a8c2fe666f43bce024295b0c43d3dc15803f4d1e248a898c6abd494ab9bef117092eb4664e288602aefc5ea1bff5b19a0bbebb4a1d1e701fd51596caa6a
data/README.md CHANGED
@@ -29,7 +29,7 @@ The simplest way to get started is to create a scaffold project:
29
29
  > fci init todo
30
30
  ```
31
31
 
32
- A new ./todo directory is created containing the sample config `fci.yml`. View the basic output of the scaffold with:
32
+ A new ./todo directory is created with sample config `fci.yml`. View the basic output of the scaffold with:
33
33
 
34
34
  ```
35
35
  > cd todo
@@ -58,7 +58,7 @@ COMMANDS
58
58
  help - Shows a list of commands or help for one command
59
59
  init:project - Create a new FCI-based project
60
60
  import:sources - Read folders/articles from Freshdesk and upload resource files to Crowdin
61
- download:translations - Build and download last exported translation resources from Crowdin
61
+ download:translations - Build and download translation resources from Crowdin
62
62
  export:translations - Add or update localized resource files(folders and articles) in Freshdesk
63
63
  ```
64
64
 
@@ -52,7 +52,7 @@ command :'import:sources' do |c|
52
52
  end
53
53
 
54
54
  # Get category's folders in Freshdesk
55
- puts "[Freshdesk] Get folders for Category with id #{source_category_id}"
55
+ puts "[Freshdesk] Get folders for Category\##{source_category_id}"
56
56
  folders = @freshdesk.solution_folders(category_id: source_category_id).all!
57
57
 
58
58
  folders_builder = []
@@ -76,7 +76,7 @@ command :'import:sources' do |c|
76
76
  # Get articles for each folder
77
77
  articles_builder = []
78
78
  folders.each do |folder|
79
- puts "[Freshdesk] Get articles for Folder with id #{folder.id}"
79
+ puts "[Freshdesk] Get articles for Folder\##{folder.id}"
80
80
  articles = @freshdesk.solution_articles(category_id: source_category_id, folder_id: folder.id).all!
81
81
 
82
82
  articles.each do |article|
@@ -167,7 +167,7 @@ command :'import:sources' do |c|
167
167
  end
168
168
 
169
169
  # Write resources config file
170
- puts "Write config file for Category with id `#{source_category_id}`"
170
+ puts "[INFO] Write config file for Category\##{source_category_id}"
171
171
  File.open(resources_config_file, 'w') do |f|
172
172
  f.write resources_config.to_yaml
173
173
  end
@@ -1,4 +1,4 @@
1
- desc 'Build and download last exported translation resources from Crowdin'
1
+ desc 'Build and download translation resources from Crowdin'
2
2
  command :'download:translations' do |c|
3
3
  c.desc 'Directory of resource files'
4
4
  c.long_desc <<-EOS.strip_heredoc
@@ -22,7 +22,7 @@ command :'export:translations' do |c|
22
22
 
23
23
  # for store information about folders/articles ids
24
24
  unless File.exists?(resources_config_file)
25
- raise "Error! Config file does not exist. First run `push` command."
25
+ raise "Error! Config file does not exist. First run `import:sources` command."
26
26
  end
27
27
 
28
28
  resources_config = YAML.load(File.open(resources_config_file))
@@ -33,11 +33,17 @@ command :'export:translations' do |c|
33
33
 
34
34
  @cli_config['categories'].each do |category|
35
35
  category['translations'].each do |lang|
36
+ unless freshdesk_category = FreshdeskAPI::SolutionCategory.find(@freshdesk, id: lang['freshdesk_category_id'].to_i)
37
+ puts "[WARNING] Not such Category\##{lang['freshdesk_category_id']} for language `#{lang['crowdin_language_code']}` in Freshdesk. Please create new one and set `:freshdesk_category_id` in config file."
38
+ next
39
+ end
40
+
36
41
  folder_xml_files = Dir["#{resources_dir}/#{lang['crowdin_language_code']}/#{category['freshdesk_category']}/folder_*.xml"]
37
42
  article_xml_files = Dir["#{resources_dir}/#{lang['crowdin_language_code']}/#{category['freshdesk_category']}/article_*.xml"]
38
43
 
39
- unless freshdesk_category = FreshdeskAPI::SolutionCategory.find(@freshdesk, id: lang['freshdesk_category_id'].to_i)
40
- raise "Not such Category\##{lang['freshdesk_category_id']} for language `#{lang['crowdin_language_code']}` in Freshdesk. Please create new one and set `:freshdesk_category_id` in config file."
44
+ if folder_xml_files.empty? && article_xml_files.empty?
45
+ puts "[WARNING] There are no translations for language `#{lang['crowdin_language_code']}`. First run `download:translations` command."
46
+ next
41
47
  end
42
48
 
43
49
  all_folders = []
@@ -46,18 +52,14 @@ command :'export:translations' do |c|
46
52
  # Read folders from XML files
47
53
  folder_xml_files.each do |file|
48
54
  folder_xml_file = File.read(file)
49
-
50
55
  folder = parse_folder_xml(folder_xml_file)
51
-
52
56
  all_folders << folder
53
57
  end
54
58
 
55
59
  # Read articles from XML filse
56
60
  article_xml_files.each do |file|
57
61
  article_xml_file = File.read(file)
58
-
59
62
  article = parse_article_xml(article_xml_file)
60
-
61
63
  all_articles << article
62
64
  end
63
65
 
@@ -81,10 +83,10 @@ command :'export:translations' do |c|
81
83
 
82
84
  # Remove Folder translation from config it it not found in Freshdesk
83
85
  if freshdesk_folder.nil?
84
- puts "Remove undefined Folder from config."
86
+ puts "[INFO] Removing undefined Folder from config."
85
87
  folder_config[:translations].delete_if { |tr| tr[:lang] == lang['crowdin_language_code'] }
86
88
 
87
- puts "[Freshdesk] Create new Folder."
89
+ puts "[Freshdesk] Create new Folder `#{folder[:name]}` for language `#{lang['crowdin_language_code']}`."
88
90
  freshdesk_folder = FreshdeskAPI::SolutionFolder.create!(
89
91
  @freshdesk,
90
92
  category_id: lang['freshdesk_category_id'].to_i,
@@ -100,11 +102,11 @@ command :'export:translations' do |c|
100
102
  puts "[Freshdesk] Update existing Folder."
101
103
  freshdesk_folder.update!(name: folder[:name], description: folder[:description])
102
104
  else
103
- puts "[Freshdesk] Nothing to update. An existing Folder still the same."
105
+ puts "[Freshdesk] Nothing to update. An existing Folder\##{folder[:id]} still the same."
104
106
  end
105
107
  else
106
108
  # create new folder in Freshdesk and save id to config file
107
- puts "[Freshdesk] Create new Folder."
109
+ puts "[Freshdesk] Create new Folder `#{folder[:name]}` for language `#{lang['crowdin_language_code']}`."
108
110
  freshdesk_folder = FreshdeskAPI::SolutionFolder.create!(
109
111
  @freshdesk,
110
112
  category_id: lang['freshdesk_category_id'].to_i,
@@ -120,7 +122,7 @@ command :'export:translations' do |c|
120
122
  end
121
123
  end # all_folders.each
122
124
 
123
- puts "Write info about Folders localization for Category `#{freshdesk_category.id}` to config."
125
+ puts "[INFO] Write info about Folders localization for language `#{lang['crowdin_language_code']}` for Category\##{freshdesk_category.id} to config."
124
126
  File.open(resources_config_file, 'w') do |f|
125
127
  f.write resources_config.to_yaml
126
128
  end
@@ -148,7 +150,7 @@ command :'export:translations' do |c|
148
150
 
149
151
  # Remove Article translation from config if it not found in Freshdesk
150
152
  if freshdesk_article.nil?
151
- puts "Remove undefined Article from config."
153
+ puts "[INFO] Removing undefined Article from config."
152
154
  article_config[:translations].delete_if { |tr| tr[:lang] == lang['crowdin_language_code'] }
153
155
 
154
156
  puts "[Freshdesk] Create new Article."
@@ -164,14 +166,14 @@ command :'export:translations' do |c|
164
166
  end
165
167
 
166
168
  if freshdesk_article.attributes[:title] != article[:title] || freshdesk_article.attributes[:description] != article[:description]
167
- puts "[Freshdesk] Update existing Article."
169
+ puts "[Freshdesk] Update existing Article\##{article[:id]}."
168
170
 
169
171
  freshdesk_article.update!(
170
172
  title: article[:title],
171
173
  description: article[:description]
172
174
  )
173
175
  else
174
- puts "[Freshdesk] Nothing to update. An existing Article still the same."
176
+ puts "[Freshdesk] Nothing to update. An existing Article\##{article[:id]} still the same."
175
177
  end
176
178
 
177
179
  else
@@ -200,7 +202,7 @@ command :'export:translations' do |c|
200
202
  end
201
203
  end # all_articles.each
202
204
 
203
- puts "Write info about Articles localization for Category `#{freshdesk_category.id}` to config."
205
+ puts "[INFO] Write info about Articles localization for language `#{lang['crowdin_language_code']}` for Category\##{freshdesk_category.id} to config."
204
206
  File.open(resources_config_file, 'w') do |f|
205
207
  f.write resources_config.to_yaml
206
208
  end
data/lib/fci/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module FCI
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fci
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Maminov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-03 00:00:00.000000000 Z
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri