tender_import 0.0.6 → 0.0.7
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.
- data/lib/tender_import/archive.rb +71 -0
- data/lib/tender_import/version.rb +1 -1
- metadata +5 -5
@@ -26,6 +26,12 @@
|
|
26
26
|
# :body => 'You have terrible taste in tacos. Good day, sir.'
|
27
27
|
# }]
|
28
28
|
#
|
29
|
+
# # To add knowledge base you'll need sections
|
30
|
+
# section = archive.add_section :name => 'Basic Help'
|
31
|
+
#
|
32
|
+
# archive.add_kb section, :title => 'How to get help',
|
33
|
+
# :body => 'This is my awesome knowledge base'
|
34
|
+
#
|
29
35
|
# # By default, files are written as you add them, so this will just
|
30
36
|
# # assemble a gzipped tar archive from those files.
|
31
37
|
# filename = archive.write_archive
|
@@ -55,6 +61,7 @@ class TenderImport::Archive
|
|
55
61
|
@stats = {}
|
56
62
|
@buffer = options.key?(:buffer) ? !!options[:buffer] : false
|
57
63
|
@category_counter = Hash.new(0)
|
64
|
+
@section_counter = Hash.new(0)
|
58
65
|
end
|
59
66
|
|
60
67
|
# Returns the params on success, nil on failure
|
@@ -68,10 +75,20 @@ class TenderImport::Archive
|
|
68
75
|
cat ? category_key(cat) : nil
|
69
76
|
end
|
70
77
|
|
78
|
+
def add_section params
|
79
|
+
section = validate_and_store :section, params
|
80
|
+
section ? section_key(section) : nil
|
81
|
+
end
|
82
|
+
|
71
83
|
def add_discussion category_key, params
|
72
84
|
raise Error, "add_discussion: missing category key" if category_key.nil?
|
73
85
|
validate_and_store :discussion, params, :key => category_key
|
74
86
|
end
|
87
|
+
|
88
|
+
def add_kb section_key, params
|
89
|
+
raise Error, "add_kb: missing section key" if section_key.nil?
|
90
|
+
validate_and_store :kb, params, :key => section_key
|
91
|
+
end
|
75
92
|
|
76
93
|
def category_key cat
|
77
94
|
"category:#{category_id cat}".downcase
|
@@ -80,16 +97,33 @@ class TenderImport::Archive
|
|
80
97
|
def category_id cat
|
81
98
|
cat[:name].gsub(/\W+/,'_').downcase
|
82
99
|
end
|
100
|
+
|
101
|
+
def section_key section
|
102
|
+
"section:#{section_id section}".downcase
|
103
|
+
end
|
104
|
+
|
105
|
+
def section_id section
|
106
|
+
section[:title].gsub(/\W+/,'_').downcase
|
107
|
+
end
|
83
108
|
|
84
109
|
def categories
|
85
110
|
@import[:category]
|
86
111
|
end
|
112
|
+
|
113
|
+
def sections
|
114
|
+
@import[:section]
|
115
|
+
end
|
87
116
|
|
88
117
|
def discussions category_key
|
89
118
|
raise Error, "discussions: missing category key" if category_key.nil?
|
90
119
|
@import[category_key] || []
|
91
120
|
end
|
92
121
|
|
122
|
+
def kbs section_key
|
123
|
+
raise Error, "kbs: missing section key" if section_key.nil?
|
124
|
+
@import[section_key] || []
|
125
|
+
end
|
126
|
+
|
93
127
|
def users
|
94
128
|
@import[:user]
|
95
129
|
end
|
@@ -97,6 +131,7 @@ class TenderImport::Archive
|
|
97
131
|
def write_archive
|
98
132
|
write_users if users
|
99
133
|
write_categories_and_discussions if categories
|
134
|
+
write_sections_and_kbs if sections
|
100
135
|
export_file = "export_#{site}.tgz"
|
101
136
|
system "tar -zcf #{export_file} -C #{export_dir} ."
|
102
137
|
system "rm -rf #{export_dir}"
|
@@ -123,6 +158,13 @@ class TenderImport::Archive
|
|
123
158
|
file.puts Yajl::Encoder.encode(c)
|
124
159
|
end
|
125
160
|
end
|
161
|
+
|
162
|
+
def write_section s
|
163
|
+
mkdir_p export_dir('sections')
|
164
|
+
File.open(File.join(export_dir('sections'), "#{section_id(s)}.json"), "w") do |file|
|
165
|
+
file.puts Yajl::Encoder.encode(s)
|
166
|
+
end
|
167
|
+
end
|
126
168
|
|
127
169
|
def write_categories_and_discussions
|
128
170
|
categories.each do |c|
|
@@ -130,6 +172,13 @@ class TenderImport::Archive
|
|
130
172
|
write_discussions c
|
131
173
|
end
|
132
174
|
end
|
175
|
+
|
176
|
+
def write_sections_and_kbs
|
177
|
+
sections.each do |s|
|
178
|
+
write_section s
|
179
|
+
write_kbs s
|
180
|
+
end
|
181
|
+
end
|
133
182
|
|
134
183
|
def write_discussion category_id, discussion
|
135
184
|
@category_counter[category_id] += 1
|
@@ -139,12 +188,27 @@ class TenderImport::Archive
|
|
139
188
|
file.puts Yajl::Encoder.encode(discussion)
|
140
189
|
end
|
141
190
|
end
|
191
|
+
|
192
|
+
def write_kb section_id, kb
|
193
|
+
@section_counter[section_id] += 1
|
194
|
+
dir = File.join(export_dir('sections'), section_id)
|
195
|
+
mkdir_p dir
|
196
|
+
File.open(File.join(dir, "#{@section_counter[section_id]}.json"), "w") do |file|
|
197
|
+
file.puts Yajl::Encoder.encode(kb)
|
198
|
+
end
|
199
|
+
end
|
142
200
|
|
143
201
|
def write_discussions category
|
144
202
|
discussions(category_key(category)).each do |d|
|
145
203
|
write_discussion category_id(category), d
|
146
204
|
end
|
147
205
|
end
|
206
|
+
|
207
|
+
def write_kbs section
|
208
|
+
kbs(section_key(section)).each do |k|
|
209
|
+
write_kb section_id(s), k
|
210
|
+
end
|
211
|
+
end
|
148
212
|
|
149
213
|
protected
|
150
214
|
|
@@ -180,6 +244,10 @@ class TenderImport::Archive
|
|
180
244
|
write_category params
|
181
245
|
when :user
|
182
246
|
write_user params
|
247
|
+
when :section
|
248
|
+
write_section params
|
249
|
+
when :kb
|
250
|
+
write_kb options[:key].split(':',2)[1], params
|
183
251
|
end
|
184
252
|
end
|
185
253
|
|
@@ -201,6 +269,9 @@ class TenderImport::Archive
|
|
201
269
|
if type == :discussion && (params[:comments].nil? || params[:comments].any? {|c| c[:author_email].nil? || c[:author_email].empty?})
|
202
270
|
problems << "Missing comments and authors in discussion data: #{params.inspect}."
|
203
271
|
end
|
272
|
+
if type == :kb && (params[:title].nil? || params[:title].empty? || params[:body].nil? || params[:body].empty?)
|
273
|
+
problems << "Missing title or body in kb: #{params.inspect}"
|
274
|
+
end
|
204
275
|
if problems.empty?
|
205
276
|
true
|
206
277
|
else
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tender_import
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Zack Hobson
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-07-30 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -81,7 +81,7 @@ files:
|
|
81
81
|
- lib/tender_import/zendesk_api_import.rb
|
82
82
|
- lib/tender_import.rb
|
83
83
|
- bin/zendesk2tender
|
84
|
-
has_rdoc:
|
84
|
+
has_rdoc: false
|
85
85
|
homepage: https://help.tenderapp.com/kb/setup-installation/importing
|
86
86
|
licenses: []
|
87
87
|
|