cupsffi 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/COPYING +21 -0
  2. data/README +56 -0
  3. data/lib/cupsffi/lib.rb +11 -1
  4. data/lib/cupsffi/version.rb +1 -1
  5. metadata +6 -14
data/COPYING ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2011 Nathan Ehresman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,56 @@
1
+ CupsFFI is an FFI wrapper around libcups providing access to the Cups API
2
+ as well as the PPD API. It was written using Ruby 1.9.2 but has not been
3
+ tested with previous versions.
4
+
5
+ ## License
6
+
7
+ CupsFFI is MIT licensed.
8
+
9
+ ## Installation
10
+
11
+ gem install cupsffi
12
+
13
+ ## Setup
14
+
15
+ Nothing required. libcups is used to find and read all configuration.
16
+
17
+ ## Example usage
18
+
19
+ require 'cupsffi'
20
+ # Returns array of printer names:
21
+ # => ["HP-Officejet-7200-series", "test-printer"]
22
+ printers = CupsPrinter.get_all_printer_names
23
+
24
+ printer = CupsPrinter.new(printers.first)
25
+
26
+ # Returns a hash of the Cups printer options:
27
+ # => {"auth-info-required"=>"none",
28
+ # "copies"=>"1",
29
+ # "device-uri"=>"ipp://192.168.250.55/ipp/3000", ...
30
+ printer.attributes
31
+
32
+ # Return a hash of :state and :reasons.
33
+ # :state is :idle, :printing, or :stopped. For example:
34
+ # {:state=>:idle, :reasons=>["none"]}
35
+ printer.state
36
+
37
+ # Print a file (pdf, jpg, ps, etc.). You can pass in a hash of printer
38
+ # options if you want to override the printer's defaults. A CupsJob object
39
+ # is returned. CupsJob can be used to check on the job status.
40
+ job = printer.print_file('/tmp/example.jpg', {'InputSlot' => 'Upper', 'PageSize' => 'A4'})
41
+
42
+ # A job's status is a CupsFFI::IppJState enumeration:
43
+ # [:pending, :held, :processing, :stopped, :canceled, :aborted, :completed]
44
+ job.status
45
+
46
+ # Cancel a specific job
47
+ job.cancel
48
+
49
+ # Print a binary blob of data. The data should be in a String, and is
50
+ # passed to libcups as a char array. You must also specify the mime type.
51
+ # Like print_file, printer options are... optional. A CupsJob object is
52
+ # returned.
53
+ job = printer.print_data('hello world', 'text/plain')
54
+
55
+ # Cancel all outstanding jobs on the printer
56
+ printer.cancel_all_jobs
data/lib/cupsffi/lib.rb CHANGED
@@ -24,7 +24,17 @@ require 'ffi'
24
24
 
25
25
  module CupsFFI
26
26
  extend FFI::Library
27
- ffi_lib 'cups'
27
+
28
+ paths =
29
+ Array(
30
+ ENV['CUPS_LIB'] ||
31
+ Dir['/{opt,usr}/{,local/}lib{,64}/libcups.{dylib,so*}']
32
+ )
33
+ begin
34
+ ffi_lib(*paths)
35
+ rescue LoadError => le
36
+ raise LoadError, "Didn't find libcups on your system."
37
+ end
28
38
 
29
39
  ### cups.h API
30
40
 
@@ -1,3 +1,3 @@
1
1
  module Cupsffi
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cupsffi
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
4
+ prerelease:
5
+ version: 0.0.2
10
6
  platform: ruby
11
7
  authors:
12
8
  - Nathan Ehresman
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-03-05 00:00:00 -05:00
13
+ date: 2011-03-07 00:00:00 -05:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,8 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
24
  version: "0"
31
25
  type: :development
32
26
  version_requirements: *id001
@@ -41,7 +35,9 @@ extra_rdoc_files: []
41
35
 
42
36
  files:
43
37
  - .gitignore
38
+ - COPYING
44
39
  - Gemfile
40
+ - README
45
41
  - Rakefile
46
42
  - cupsffi.gemspec
47
43
  - lib/cupsffi.rb
@@ -64,21 +60,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
64
60
  requirements:
65
61
  - - ">="
66
62
  - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
63
  version: "0"
70
64
  required_rubygems_version: !ruby/object:Gem::Requirement
71
65
  none: false
72
66
  requirements:
73
67
  - - ">="
74
68
  - !ruby/object:Gem::Version
75
- segments:
76
- - 0
77
69
  version: "0"
78
70
  requirements: []
79
71
 
80
72
  rubyforge_project: cupsffi
81
- rubygems_version: 1.3.7
73
+ rubygems_version: 1.6.1
82
74
  signing_key:
83
75
  specification_version: 3
84
76
  summary: FFI wrapper around libcups