docraptor-cli 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8057932a008393a2af5ede0830d893c2154c8847
4
+ data.tar.gz: 2aba90e1ffaedc4675035b02494987158ae3c9b9
5
+ SHA512:
6
+ metadata.gz: 21520e48134b3a3966a075fcb2e5e1217f292fa05c09241740f2e414ce3b72c179adeedc037ff4bcbedd2b378359fddaad7d80215cc83616313c47b0be0c84dd
7
+ data.tar.gz: 6486ce5522ed2d1ea91a8515f6fd2e7aac34642322207d93860d7e00d5677ff52914a99e013b567757d4b55c94e2f012e6328dd060414fcaba7a1d86ea30629c
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ Thumbs.db
3
+ Gemfile.lock
@@ -0,0 +1,2 @@
1
+ ### 0.0.1 [May 19, 2016]
2
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2016 Expected Behavior
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,84 @@
1
+ # DocRaptor CLI
2
+
3
+ **WARNING: This is a beta client and subject to serious change**
4
+
5
+ This is a command line interface for using [DocRaptor API](https://docraptor.com/documentation) to convert [HTML to PDF and XLSX](https://docraptor.com).
6
+
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ gem install docraptor-cli
12
+ ```
13
+
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ docraptor local_file.html # local files
19
+ docraptor https://docraptor.com/examples/invoice.html # URLs are detected by prefix
20
+ ```
21
+
22
+ The full DocRaptor API is available, see:
23
+
24
+ ```
25
+ Usage: docraptor [options] <url/file>
26
+
27
+ Server options:
28
+ -k, --key KEY The API Key to use when calling the service. Defaults to YOUR_API_KEY_HERE or ENV[DOCRAPTOR_API_KEY].
29
+ -s, --server SERVER Make API requests against SERVER, scheme not required. Defaults to https://docraptor.com
30
+
31
+ Document options:
32
+ --async Create document asynchronously(10 min limit). Defaults to synchronous(1 min limit).
33
+ -d, --debug Enable debug logging.
34
+ --no-ignore-resource-errors Error when a resource cannot be downloaded.
35
+ -j, --javascript Enable DocRaptor JavaScript parsing. Defaults to no javascript.
36
+ --name NAME Give a name to this document. Defaults to a randomized string. Does not affect output filename.
37
+ --referrer URL Set HTTP REFERRER when rendering. Defaults to localhost for file rendering or render url.
38
+ --strict STRICTNESS Set HTML strictness. Defaults to none.
39
+ --test Create this as a test document. Defaults to non-test.
40
+ -t, --type TYPE Type of document to make, can be pdf, xls, xlsx. Defaults to pdf.
41
+
42
+ Prince options:
43
+ --prince-baseurl URL Set base url when rendering. Defaults to nothing for file rendering or render url.
44
+ --prince-css-dpi DPI Set a base CSS DPI. Defaults value used by Prince is 96.
45
+
46
+ ...
47
+ ```
48
+
49
+
50
+
51
+ We have guides for doing some of the common things:
52
+
53
+ * [Headers and Footers](https://docraptor.com/documentation/style#pdf-headers-footers) including page skipping
54
+ * [CSS Media Selector](https://docraptor.com/documentation/api#api_basic_pdf) to make the page look exactly as it does in your browser
55
+ * Protect content with [HTTP authentication](https://docraptor.com/documentation/api#api_http_user) or [proxies](https://docraptor.com/documentation/api#api_http_proxy) so only DocRaptor can access them
56
+
57
+
58
+ ## More Help
59
+
60
+ DocRaptor has a lot of more [styling](https://docraptor.com/documentation/style) and [implementation options](https://docraptor.com/documentation/api).
61
+
62
+ Stuck? We're experts at using DocRaptor so please [email us](mailto:support@docraptor.com) if you run into trouble.
63
+
64
+
65
+ ## Development
66
+
67
+ This code is a thin wrapper around the [docraptor gem](https://github.com/docraptor/docraptor-ruby) to make it suitable for command line users.
68
+
69
+
70
+ ## Release Process
71
+
72
+ 1. Pull latest master
73
+ 2. Merge feature branch(es) into master
74
+ 3. `script/test`
75
+ 4. Increment version in code:
76
+ - ...
77
+ 5. Update [CHANGELOG.md](CHANGELOG.md)
78
+ 6. Commit "Release version vX.Y.Z"
79
+ 7. `rake release`
80
+
81
+
82
+ ## Version Policy
83
+
84
+ This library follows [Semantic Versioning 2.0.0](http://semver.org).
@@ -0,0 +1,2 @@
1
+ require "bundler/setup"
2
+ require "bundler/gem_tasks"
@@ -0,0 +1,328 @@
1
+ #!/usr/bin/env ruby
2
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", __FILE__)
3
+ require "bundler"
4
+ Bundler.require
5
+ require "optparse"
6
+
7
+ TYPES = %w(pdf xls xlsx)
8
+ PRINT_STATUS_EVERY = 30
9
+
10
+ def log(message)
11
+ STDERR.puts(message)
12
+ end
13
+
14
+ options = {
15
+ # Server Options
16
+ key: ENV["DOCRAPTOR_API_KEY"] || "YOUR_API_KEY_HERE",
17
+ server: "https://docraptor.com",
18
+
19
+ # Document Options
20
+ javascript: false,
21
+ test: false,
22
+ type: "pdf",
23
+ strict: "none",
24
+ async: false,
25
+
26
+ # Script Options
27
+ open: true,
28
+ }
29
+
30
+ opt_parser = OptionParser.new do |opts|
31
+ opts.banner = "Usage: #{$0} [options] <url/file>"
32
+
33
+
34
+ opts.separator ""
35
+ opts.separator "Server options:"
36
+
37
+ opts.on("-kKEY", "--key KEY", "The API Key to use when calling the service. Defaults to YOUR_API_KEY_HERE or ENV[DOCRAPTOR_API_KEY].") do |key|
38
+ options[:key] = key
39
+ end
40
+
41
+ opts.on("-sSERVER", "--server SERVER",
42
+ "Make API requests against SERVER, scheme not required. Defaults to #{options[:server]}") do |server|
43
+ if !server.include?("://")
44
+ scheme = server =~ /\Alocalhost/ ? "http" : "https"
45
+ server = "#{scheme}://#{server}"
46
+ end
47
+ options[:server] = server
48
+ end
49
+
50
+
51
+ opts.separator ""
52
+ opts.separator "Document options:"
53
+
54
+ opts.on("--async", "Create document asynchronously(10 min limit). Defaults to synchronous(1 min limit).") do |async|
55
+ options[:async] = async
56
+ end
57
+
58
+ opts.on("-d", "--debug", "Enable debug logging.") do
59
+ options[:debug] = true
60
+ end
61
+
62
+ opts.on("--no-ignore-resource-errors",
63
+ "Error when a resource cannot be downloaded.") do |ignore_resource_errors|
64
+ options[:ignore_resource_errors] = true
65
+ end
66
+
67
+ opts.on("-j", "--javascript", "Enable DocRaptor JavaScript parsing. Defaults to no javascript.") do |javascript|
68
+ options[:javascript] = javascript
69
+ end
70
+
71
+ opts.on("--name NAME", "Give a name to this document. Defaults to a randomized string. Does not affect output filename.") do |name|
72
+ options[:name] = name
73
+ end
74
+
75
+ opts.on("--referrer URL", "Set HTTP REFERRER when rendering. Defaults to localhost for file rendering or render url.") do |url|
76
+ options[:referrer] = url
77
+ end
78
+
79
+ opts.on("--strict STRICTNESS", "Set HTML strictness. Defaults to none.") do |strict|
80
+ options[:strict] = strict
81
+ end
82
+
83
+ opts.on("--test", "Create this as a test document. Defaults to non-test.") do |test|
84
+ options[:test] = test
85
+ end
86
+
87
+ opts.on("-t", "--type TYPE", TYPES, "Type of document to make, can be #{TYPES.join(', ')}. Defaults to pdf.") do |type|
88
+ options[:type] = type
89
+ end
90
+
91
+ opts.separator ""
92
+ opts.separator "Prince options:"
93
+
94
+ opts.on("--prince-baseurl URL", "Set base url when rendering. Defaults to nothing for file rendering or render url.") do |url|
95
+ options[:prince_baseurl] = url
96
+ end
97
+
98
+ opts.on("--prince-css-dpi DPI", "Set a base CSS DPI. Defaults value used by Prince is 96.") do |dpi|
99
+ options[:prince_css_dpi] = dpi
100
+ end
101
+
102
+ opts.on("--prince-disallow-annotate", "Disallow annotating the final PDF.") do |disallow|
103
+ options[:prince_disallow_annotate] = disallow
104
+ end
105
+
106
+ opts.on("--prince-disallow-copy", "Disallow copying the final PDF.") do |disallow|
107
+ options[:prince_disallow_copy] = disallow
108
+ end
109
+
110
+ opts.on("--prince-disallow-modify", "Disallow modifying the final PDF.") do |disallow|
111
+ options[:prince_disallow_modify] = disallow
112
+ end
113
+
114
+ opts.on("--prince-disallow-print", "Disallow printing the final PDF.") do |disallow|
115
+ options[:prince_disallow_print] = disallow
116
+ end
117
+
118
+ opts.on("--prince-encrypt", "Encrypt the output PDF.") do |encrypt|
119
+ options[:prince_encrypt] = encrypt
120
+ end
121
+
122
+ opts.on("--prince-key-bits BITS", "Set the encryption key size, must be used with --prince-encrypt.") do |key_bits|
123
+ options[:prince_key_bits] = key_bits
124
+ end
125
+
126
+ opts.on("--prince-input INPUT", "Set the input type for PDF: xml, html, auto.") do |input|
127
+ options[:prince_input] = input
128
+ end
129
+
130
+ opts.on("--prince-no-compress", "Disable PDF compression.") do |no_compress|
131
+ options[:prince_no_compress] = no_compress
132
+ end
133
+
134
+ opts.on("--prince-user-password PASS", "Set the user password for decrypting an encrypted PDF.") do |password|
135
+ options[:prince_user_password] = password
136
+ end
137
+
138
+ opts.on("--prince-owner-password PASS", "Set the owner password for decrypting an encrypted PDF.") do |password|
139
+ options[:prince_owner_password] = password
140
+ end
141
+
142
+ opts.on("--prince-insecure", "Set the insecure flag") do |insecure|
143
+ options[:prince_insecure] = insecure
144
+ end
145
+
146
+ opts.on("--prince-http-timeout SECS", "Set the timeout for HTTP connections made by prince") do |timeout_seconds|
147
+ options[:prince_http_timeout] = timeout_seconds
148
+ end
149
+
150
+ opts.on("--prince-http-user USER", "Set the user for setting basic auth credentials. Defaults to nothing for file rendering or render url.") do |user|
151
+ options[:prince_http_user] = user
152
+ end
153
+
154
+ opts.on("--prince-http-password PASS", "Set the password for setting basic auth credentials. Defaults to nothing for file rendering or render url.") do |password|
155
+ options[:prince_http_password] = password
156
+ end
157
+
158
+ opts.on("--prince-http-proxy PROXY", "Set the proxy server.") do |proxy|
159
+ options[:prince_http_proxy] = proxy
160
+ end
161
+
162
+ opts.on("--prince-javascript", "Enable PrinceXML JavaScript parsing. Defaults to false.") do |prince_javascript|
163
+ options[:prince_javascript] = prince_javascript
164
+ end
165
+
166
+ opts.on("--prince-media MEDIA", "Create this with a specific CSS media selector. Defaults to print.") do |prince_media|
167
+ options[:prince_media] = prince_media.to_s
168
+ end
169
+
170
+ opts.on("--prince-profile PROFILE", "Set the PDF Profile. PDF/A-1b PDF/X-3:2003 PDF/X-4") do |prince_profile|
171
+ options[:prince_profile] = prince_profile.to_s
172
+ end
173
+
174
+ opts.on("--prince-debug", "Enable PrinceXML debug logging.") do |prince_debug|
175
+ options[:prince_debug] = prince_debug
176
+ end
177
+
178
+ opts.on("--prince-version VERSION", "Create this with a specific PrinceXML version. Defaults to user setting.") do |prince_version|
179
+ options[:prince_version] = prince_version.to_s
180
+ end
181
+
182
+ opts.on("--prince-no-embed-fonts", "Disable font embelistiteming in PDF output.") do |no_embed_fonts|
183
+ options[:no_embed_fonts] = no_embed_fonts
184
+ end
185
+
186
+ opts.on("--prince-no-subset-fonts", "Disable font subsetting in PDF output.") do |no_subset_fonts|
187
+ options[:no_subset_fonts] = no_subset_fonts
188
+ end
189
+
190
+ opts.separator ""
191
+ opts.separator "Script options:"
192
+
193
+ opts.on("-o", "--[no-]open", "Automatically open output files. Defaults to true.") do |open|
194
+ options[:open] = open
195
+ end
196
+
197
+ opts.separator ""
198
+ opts.separator "Common options:"
199
+
200
+ opts.on("-c", "--common", "Set common development options: open, test, javascript enabled") do
201
+ options[:open] = true
202
+ options[:test] = true
203
+ options[:javascript] = true
204
+ end
205
+
206
+ opts.on_tail("-h", "--help", "Show this message") do
207
+ log opts
208
+ exit
209
+ end
210
+ end
211
+
212
+ opt_parser.parse!(ARGV)
213
+
214
+ file_or_url = ARGV.shift
215
+
216
+ if !file_or_url
217
+ log opt_parser
218
+ abort
219
+ end
220
+
221
+ DocRaptor.configure do |dr|
222
+ dr.username = options[:key]
223
+ server = URI.parse(options[:server])
224
+ dr.host = "#{server.host}:#{server.port}"
225
+ dr.scheme = server.scheme
226
+ dr.debugging = options[:debug]
227
+ end
228
+
229
+ $docraptor = DocRaptor::DocApi.new
230
+
231
+ all_doc_attributes = {
232
+ strict: options[:strict],
233
+ test: options[:test],
234
+ javascript: options[:javascript],
235
+ document_type: options[:type],
236
+ prince_options: {},
237
+ async: options[:async],
238
+ ignore_resource_errors: options[:ignore_resource_errors],
239
+ }
240
+
241
+ all_doc_attributes[:prince_options][:version] = options[:prince_version] if options[:prince_version]
242
+ all_doc_attributes[:prince_options][:javascript] = options[:prince_javascript] if options[:prince_javascript]
243
+ all_doc_attributes[:prince_options][:media] = options[:prince_media] if options[:prince_media]
244
+ all_doc_attributes[:prince_options][:baseurl] = options[:prince_baseurl] if options[:prince_baseurl]
245
+ all_doc_attributes[:prince_options][:css_dpi] = options[:prince_css_dpi] if options[:prince_css_dpi]
246
+ all_doc_attributes[:prince_options][:disallow_annotate] = options[:prince_disallow_annotate] if options[:prince_disallow_annotate]
247
+ all_doc_attributes[:prince_options][:disallow_copy] = options[:prince_disallow_copy] if options[:prince_disallow_copy]
248
+ all_doc_attributes[:prince_options][:disallow_modify] = options[:prince_disallow_modify] if options[:prince_disallow_modify]
249
+ all_doc_attributes[:prince_options][:disallow_print]= options[:prince_disallow_print] if options[:prince_disallow_print]
250
+ all_doc_attributes[:prince_options][:encrypt] = options[:prince_encrypt] if options[:prince_encrypt]
251
+ all_doc_attributes[:prince_options][:key_bits] = options[:prince_key_bits] if options[:prince_key_bits]
252
+ all_doc_attributes[:prince_options][:input] = options[:prince_input] if options[:prince_input]
253
+ all_doc_attributes[:prince_options][:no_compress] = options[:prince_no_compress] if options[:prince_no_compress]
254
+ all_doc_attributes[:prince_options][:user_password] = options[:prince_user_password] if options[:prince_user_password]
255
+ all_doc_attributes[:prince_options][:owner_password]= options[:prince_owner_password] if options[:prince_owner_password]
256
+ all_doc_attributes[:prince_options][:http_user] = options[:prince_http_user] if options[:prince_http_user]
257
+ all_doc_attributes[:prince_options][:http_password] = options[:prince_http_password] if options[:prince_http_password]
258
+ all_doc_attributes[:prince_options][:http_proxy] = options[:prince_http_proxy] if options[:prince_http_proxy]
259
+ all_doc_attributes[:prince_options][:http_timeout] = options[:prince_http_timeout] if options[:prince_http_timeout]
260
+ all_doc_attributes[:prince_options][:insecure] = options[:prince_insecure] if options[:prince_insecure]
261
+ all_doc_attributes[:prince_options][:debug] = options[:prince_debug] if options[:prince_debug]
262
+ all_doc_attributes[:prince_options][:profile] = options[:prince_profile] if options[:prince_profile]
263
+ all_doc_attributes[:prince_options][:no_embed_fonts] = options[:no_embed_fonts] if options[:no_embed_fonts]
264
+ all_doc_attributes[:prince_options][:no_subset_fonts] = options[:no_subset_fonts] if options[:no_subset_fonts]
265
+
266
+ if file_or_url.include?("://")
267
+ url = file_or_url
268
+ all_doc_attributes[:document_url] = url
269
+ all_doc_attributes[:referrer] = options[:referrer] || url
270
+ all_doc_attributes[:prince_options][:baseurl] ||= url
271
+ else
272
+ input_filename = file_or_url
273
+ all_doc_attributes[:referrer] = options[:referrer] || "http://localhost/"
274
+ all_doc_attributes[:document_content] = File.read(input_filename)
275
+ end
276
+
277
+ all_doc_attributes.delete(:prince_options) if all_doc_attributes[:prince_options].empty?
278
+
279
+ base_filename = rand(10**12).to_s(36) # random to make Preview refresh every time with ease
280
+
281
+ def run_doc(options, all_doc_attributes, base_filename)
282
+ output_filename = "/tmp/#{base_filename}.#{options[:type]}"
283
+
284
+ doc_attributes = all_doc_attributes.merge(name: options[:name] || File.basename(output_filename))
285
+
286
+ log "Creating document #{doc_attributes[:name]} using #{options[:server]}"
287
+ pretty_doc_attributes = doc_attributes.dup
288
+ pretty_doc_attributes[:document_content] = pretty_doc_attributes[:document_content][0..30] + "..." if pretty_doc_attributes.include?(:document_content)
289
+ start = Time.now
290
+
291
+ if options[:async]
292
+ response = $docraptor.create_async_doc(doc_attributes)
293
+ status_id = response.status_id
294
+ t = Time.now.to_f
295
+ time_of_last_status_message = Time.now - PRINT_STATUS_EVERY
296
+ while !%w{completed failed}.include?((status_response = $docraptor.get_async_doc_status(status_id)).status)
297
+ if Time.now - time_of_last_status_message > PRINT_STATUS_EVERY
298
+ log "STATUS (#{status_id}, elapsed time: #{(Time.now.to_f - t).round(3)} sec): #{status_response.status.inspect}"
299
+ time_of_last_status_message = Time.now
300
+ end
301
+ sleep 1
302
+ end
303
+ log "Elapsed time: #{(Time.now.to_f - t).round(3)} secs"
304
+ if status_response.status == 'completed'
305
+ download_response = $docraptor.get_async_doc(status_response.download_id)
306
+ File.open(output_filename, "wb") do |file|
307
+ file.write(download_response)
308
+ end
309
+ system("open", output_filename) if options[:open]
310
+ else
311
+ log "Document failed: #{status_response.inspect}"
312
+ failures << [status_response, {status_id: status_id, name: doc_attributes[:name]}]
313
+ end
314
+ else
315
+ response = $docraptor.create_doc(doc_attributes)
316
+ log " Success (%.3f seconds)" % (Time.now - start)
317
+ File.open(output_filename, "wb") do |file|
318
+ file.write(response)
319
+ end
320
+ system("open", output_filename) if options[:open]
321
+ end
322
+ rescue DocRaptor::ApiError => e
323
+ log "ERROR: #{e.class}"
324
+ log e.response_body
325
+ exit 1
326
+ end
327
+
328
+ run_doc(options, all_doc_attributes, base_filename)
@@ -0,0 +1,24 @@
1
+ $:.push File.expand_path("../lib", __FILE__)
2
+ require "docraptor-cli/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "docraptor-cli"
6
+ s.version = DocRaptorCli::VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Elijah Miller"]
9
+ s.email = ["elijah.miller@gmail.com"]
10
+ s.homepage = "https://github.com/docraptor/docraptor-cli"
11
+ s.summary = %q{Command line interface for the DocRaptor HTML to PDF/XLS service.}
12
+ s.description = %q{A native command line client library for the DocRaptor HTML to PDF/XLS service.}
13
+ s.license = "MIT"
14
+
15
+ s.add_runtime_dependency 'docraptor', '~> 0.3.0'
16
+
17
+ s.add_development_dependency 'pry', '~> 0.10', '>= 0.10.3'
18
+ s.add_development_dependency 'rake', '~> 11.1', '>= 11.1.2'
19
+
20
+ s.files = `git ls-files`.split("\n").uniq.sort.select{|f| !f.empty? }
21
+ # s.test_files = `git ls-files spec`.split("\n")
22
+ s.executables = []
23
+ s.require_paths = ["lib"]
24
+ end
@@ -0,0 +1,3 @@
1
+ module DocRaptorCli
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,12 @@
1
+ #!/bin/sh
2
+ set -e
3
+ cd "$(dirname "$0")/.."
4
+
5
+ # check dependencies
6
+ ruby -v > /dev/null || (echo "ruby must be installed"; exit 1)
7
+ bundler -v > /dev/null || (echo "bundler must be installed"; exit 1)
8
+
9
+ bundle install
10
+
11
+ echo "Testing not yet written for this repository."
12
+ exit 1
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docraptor-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Elijah Miller
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: docraptor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.3.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.10'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 0.10.3
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '0.10'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 0.10.3
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '11.1'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 11.1.2
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '11.1'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 11.1.2
67
+ description: A native command line client library for the DocRaptor HTML to PDF/XLS
68
+ service.
69
+ email:
70
+ - elijah.miller@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - ".gitignore"
76
+ - CHANGELOG.md
77
+ - Gemfile
78
+ - LICENSE
79
+ - README.md
80
+ - Rakefile
81
+ - bin/docraptor
82
+ - docraptor-cli.gemspec
83
+ - lib/docraptor-cli/version.rb
84
+ - script/test
85
+ homepage: https://github.com/docraptor/docraptor-cli
86
+ licenses:
87
+ - MIT
88
+ metadata: {}
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ requirements: []
104
+ rubyforge_project:
105
+ rubygems_version: 2.5.1
106
+ signing_key:
107
+ specification_version: 4
108
+ summary: Command line interface for the DocRaptor HTML to PDF/XLS service.
109
+ test_files: []