oode 0.0.1 → 0.0.2

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/Rakefile CHANGED
@@ -23,22 +23,7 @@ end
23
23
  # Tests
24
24
  #
25
25
 
26
- begin
27
- require 'spec/rake/spectask'
28
- rescue LoadError
29
- puts 'To use rspec for testing you must install rspec gem:'
30
- puts '$ sudo gem install rspec'
31
- exit
32
- end
33
-
34
- desc "Run the specs under spec"
35
- Spec::Rake::SpecTask.new do |t|
36
- t.spec_opts = ['--options', "spec/spec.opts"]
37
- t.spec_files = FileList['spec/**/*_spec.rb']
38
- end
39
26
 
40
- desc "Default task is to run specs"
41
- task :default => :spec
42
27
 
43
28
  #
44
29
  # Ron
data/bin/oode CHANGED
@@ -1,22 +1,72 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "optparse"
4
+ require "yaml"
5
+
6
+ require "rubygems"
7
+ require "net/ssh"
8
+ require "net/sftp"
4
9
 
5
10
  $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
6
11
  require "oode"
7
12
 
8
13
  options = {}
9
14
 
15
+ begin
16
+ config = YAML.load_file(File.expand_path('~/.ooderc'))
17
+ rescue
18
+ config = { :user => nil, :password => nil}
19
+ end
20
+
10
21
  optparse = OptionParser.new do |opts|
11
22
  opts.banner = "Usage: oode [options] filename"
12
23
 
24
+ opts.on( "-h", "--help", "Display this screen." ) do
25
+ puts opts
26
+ exit
27
+ end
28
+
13
29
  options[:printer] = nil
14
30
  opts.on( "-p", "--printer PRINTER", "The printer to send the file to." ) do |printer|
15
31
  options[:printer] = printer
16
32
  end
33
+
34
+ options[:user] = config[:user]
35
+ opts.on( "-u", "--user USER", "The user to log into DICE with." ) do |user|
36
+ options[:user] = user
37
+ end
38
+
39
+ options[:password] = config[:password]
40
+ opts.on( "-a", "--password PASSWORD",
41
+ "The password to log into DICE with." ) do |password|
42
+ options[:password] = password
43
+ end
17
44
  end
18
45
 
19
46
  optparse.parse!
20
47
 
21
- raise ArgumentError, 'Please specify a printer.' if options[:printer].nil?
48
+ if options[:printer].nil?
49
+ puts "No printer was specified.".red
50
+ puts "Please specify one with the '--printer' or '-p' flags."
51
+ exit
52
+ end
53
+
54
+ if options[:user].nil?
55
+ puts "No user was specified.".red
56
+ puts "Please specify one with the '--user' or '-u' flags or set it in the configuration."
57
+ exit
58
+ end
59
+
60
+ if options[:password].nil?
61
+ puts "No password was specified.".red
62
+ puts "Please specify one with the '--password' or '-a' flags or set it in the configuration."
63
+ exit
64
+ end
65
+
66
+ print_queue = Oode::OodeQueue.new options[:user], options[:password], options[:printer]
67
+
68
+ ARGV.each do |filename|
69
+ print_queue.enqueue filename
70
+ end
22
71
 
72
+ print_queue.print
data/lib/oode.rb CHANGED
@@ -1,2 +1,4 @@
1
1
  require "oode/colour"
2
+ require "oode/queue"
3
+ require "oode/file"
2
4
  require "oode/version"
data/lib/oode/colour.rb CHANGED
@@ -1,9 +1,7 @@
1
- module Oode
2
- # This wonderful code taken from http://github.com/michaeldv/awesome_print.
3
- class String
4
- [:gray, :red, :green, :yellow, :blue, :purple, :cyan, :white].each_with_index do |color, i|
5
- define_method color do "\033[1;#{30+i}m#{self}\033[0m" end
6
- define_method :"#{color}ish" do "\033[0;#{30+i}m#{self}\033[0m" end
7
- end
1
+ # This wonderful code taken from http://github.com/michaeldv/awesome_print.
2
+ class String
3
+ [:gray, :red, :green, :yellow, :blue, :purple, :cyan, :white].each_with_index do |color, offset|
4
+ define_method color do "\033[1;#{30+offset}m#{self}\033[0m" end
5
+ define_method :"#{color}ish" do "\033[0;#{30+offset}m#{self}\033[0m" end
8
6
  end
9
- end
7
+ end
data/lib/oode/file.rb ADDED
@@ -0,0 +1,27 @@
1
+ module Oode
2
+ class OodeFile
3
+ def initialize filename
4
+ @filename = filename
5
+ end
6
+
7
+ def upload session, destination
8
+ session.upload! File.expand_path(@filename), File.join(destination, @filename)
9
+ end
10
+
11
+ def print session, directory, printer
12
+ command = "lpr -P #{printer} #{remote_path}"
13
+ session.exec!(command)
14
+ #puts command.blue
15
+ end
16
+
17
+ def clean session, directory
18
+ command = "rm #{remote_path}"
19
+ session.exec!(command)
20
+ #puts command.blue
21
+ end
22
+
23
+ def remote_path
24
+ File.join File.expand_path("~/.oode/"), @filename
25
+ end
26
+ end
27
+ end
data/lib/oode/queue.rb ADDED
@@ -0,0 +1,65 @@
1
+ module Oode
2
+ class OodeQueue
3
+ attr_reader :queue
4
+
5
+ def initialize(user, password, printer)
6
+ @queue = []
7
+ @user = user
8
+ @password = password
9
+ @printer = printer
10
+ end
11
+
12
+ def print
13
+ Net::SSH.start('ssh.inf.ed.ac.uk', @user, :password => @password) do |ssh|
14
+ sftp = ssh.sftp
15
+
16
+ puts "Checking remote destination...".yellow
17
+ unless sftp.dir.entries(remote_user_path).map { |d| d.name }.include? ".oode"
18
+ sftp.mkdir! remote_oode_path
19
+ end
20
+
21
+ puts "Uploading files for printing...".yellow
22
+ @queue.each do |file|
23
+ file.upload sftp, remote_oode_path
24
+ end
25
+
26
+ puts "Printing files on #{@printer.red}...".yellow
27
+ @queue.each do |file|
28
+ file.print ssh, remote_oode_path, @printer
29
+ end
30
+
31
+ # Make sure the job has been sent to the printer.
32
+ sleep 1
33
+
34
+ puts "Cleaning up this mess...".yellow
35
+ @queue.each do |file|
36
+ file.clean ssh, remote_oode_path
37
+ end
38
+ end
39
+ end
40
+
41
+ def remote_user_path
42
+ "/home/#{@user}"
43
+ end
44
+
45
+ def remote_oode_path
46
+ File.join remote_user_path, ".oode"
47
+ end
48
+
49
+ def clean
50
+ end
51
+
52
+ def length
53
+ @queue.length
54
+ end
55
+
56
+ def enqueue(filename)
57
+ file = OodeFile.new(filename)
58
+ @queue.push file
59
+ end
60
+
61
+ def clear
62
+ @queue.clear
63
+ end
64
+ end
65
+ end
data/lib/oode/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Oode
2
- Version = VERSION = '0.0.1'
2
+ Version = VERSION = '0.0.2'
3
3
  end
data/man/oode.1 ADDED
@@ -0,0 +1,23 @@
1
+ .\" generated with Ronn/v0.5
2
+ .\" http://github.com/rtomayko/ronn/
3
+ .
4
+ .TH "OODE" "1" "April 2010" "XOEBUS" "Oode Manual"
5
+ .
6
+ .SH "NAME"
7
+ \fBoode\fR \-\- print from a laptop to an AT printer
8
+ .
9
+ .SH "SYNOPSIS"
10
+ \fBoode\fR \fIOPTIONS\fR \fIFILENAMES\fR
11
+ .
12
+ .SH "DESCRIPTION"
13
+ .
14
+ .SH "CONFIGURATION"
15
+ .
16
+ .SH "BUGS"
17
+ \fIhttp://github.com/xoebus/oode/issues\fR
18
+ .
19
+ .SH "AUTHOR"
20
+ Chris Brown :: cb@tardis.ed.ac.uk :: @xoebus
21
+ .
22
+ .SH "SEE ALSO"
23
+ \fIhttp://github.com\fR, \fIhttp://github.com/xoebus/oode\fR
data/man/oode.1.html ADDED
@@ -0,0 +1,98 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv='content-type' value='text/html;charset=utf8'>
5
+ <meta name='generator' value='Ronn/v0.5'>
6
+ <title>oode(1) -- print from a laptop to an AT printer</title>
7
+ <style type='text/css'>
8
+ body {margin:0}
9
+ #man, #man code, #man pre, #man tt, #man kbd, #man samp {
10
+ font-family:consolas,monospace;
11
+ font-size:16px;
12
+ line-height:1.3;
13
+ color:#343331;
14
+ background:#fff; }
15
+ #man { max-width:89ex; text-align:justify; margin:0 25px 25px 25px }
16
+ #man h1, #man h2, #man h3 { color:#232221;clear:left }
17
+ #man h1 { font-size:28px; margin:15px 0 30px 0; text-align:center }
18
+ #man h2 { font-size:18px; margin-bottom:0; margin-top:10px; line-height:1.3; }
19
+ #man h3 { font-size:16px; margin:0 0 0 4ex; }
20
+ #man p, #man ul, #man ol, #man dl, #man pre { margin:0 0 18px 0; }
21
+ #man pre {
22
+ color:#333231;
23
+ background:#edeceb;
24
+ padding:5px 7px;
25
+ margin:0px 0 20px 0;
26
+ border-left:2ex solid #ddd}
27
+ #man pre + h2, #man pre + h3 {
28
+ margin-top:22px;
29
+ }
30
+ #man h2 + pre, #man h3 + pre {
31
+ margin-top:5px;
32
+ }
33
+ #man > p, #man > ul, #man > ol, #man > dl, #man > pre { margin-left:8ex; }
34
+ #man dt { margin:0; clear:left }
35
+ #man dt.flush { float:left; width:8ex }
36
+ #man dd { margin:0 0 0 9ex }
37
+ #man code, #man strong, #man b { font-weight:bold; color:#131211; }
38
+ #man pre code { font-weight:normal; color:#232221; background:inherit }
39
+ #man em, var, u {
40
+ font-style:normal; color:#333231; border-bottom:1px solid #999; }
41
+ #man h1.man-title { display:none; }
42
+ #man ol.man, #man ol.man li { margin:2px 0 10px 0; padding:0;
43
+ float:left; width:33%; list-style-type:none;
44
+ text-transform:uppercase; font-size:18px; color:#999;
45
+ letter-spacing:1px;}
46
+ #man ol.man { width:100%; }
47
+ #man ol.man li.tl { text-align:left }
48
+ #man ol.man li.tc { text-align:center;letter-spacing:4px }
49
+ #man ol.man li.tr { text-align:right }
50
+ #man ol.man a { color:#999 }
51
+ #man ol.man a:hover { color:#333231 }
52
+ </style>
53
+ </head>
54
+ <body>
55
+ <div id='man'>
56
+
57
+ <h1 class='man-title'>oode(1)</h1>
58
+
59
+ <ol class='head man'>
60
+ <li class='tl'>oode(1)</li>
61
+ <li class='tc'>Oode Manual</li>
62
+ <li class='tr'>oode(1)</li>
63
+ </ol>
64
+
65
+ <h2 id='NAME'>NAME</h2>
66
+ <p><code>oode</code> -- print from a laptop to an AT printer</p>
67
+
68
+ <h2>SYNOPSIS</h2>
69
+
70
+ <p><code>oode</code> <var>OPTIONS</var> <var>FILENAMES</var></p>
71
+
72
+ <h2>DESCRIPTION</h2>
73
+
74
+ <h2>CONFIGURATION</h2>
75
+
76
+ <h2>BUGS</h2>
77
+
78
+ <p><a href="http://github.com/xoebus/oode/issues">http://github.com/xoebus/oode/issues</a></p>
79
+
80
+ <h2>AUTHOR</h2>
81
+
82
+ <p>Chris Brown :: cb@tardis.ed.ac.uk :: @xoebus</p>
83
+
84
+ <h2>SEE ALSO</h2>
85
+
86
+ <p><a href="http://github.com">http://github.com</a>,
87
+ <a href="http://github.com/xoebus/oode">http://github.com/xoebus/oode</a></p>
88
+
89
+
90
+ <ol class='foot man'>
91
+ <li class='tl'>XOEBUS</li>
92
+ <li class='tc'>April 2010</li>
93
+ <li class='tr'>oode(1)</li>
94
+ </ol>
95
+
96
+ </div>
97
+ </body>
98
+ </html>
data/man/oode.1.ronn ADDED
@@ -0,0 +1,25 @@
1
+ oode(1) -- print from a laptop to an AT printer
2
+ ===============================================
3
+
4
+ ## SYNOPSIS
5
+
6
+ `oode` <OPTIONS> <FILENAMES>
7
+
8
+ ## DESCRIPTION
9
+
10
+
11
+ ## CONFIGURATION
12
+
13
+
14
+ ## BUGS
15
+
16
+ <http://github.com/xoebus/oode/issues>
17
+
18
+ ## AUTHOR
19
+
20
+ Chris Brown :: cb@tardis.ed.ac.uk :: @xoebus
21
+
22
+ ## SEE ALSO
23
+
24
+ <http://github.com>,
25
+ <http://github.com/xoebus/oode>
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Chris Brown
@@ -14,10 +14,33 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-25 00:00:00 +01:00
17
+ date: 2010-04-26 00:00:00 +01:00
18
18
  default_executable:
19
- dependencies: []
20
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: net-ssh
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: net-sftp
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 0
41
+ version: "0"
42
+ type: :runtime
43
+ version_requirements: *id002
21
44
  description: oode prints to AT printers from laptops
22
45
  email: cb@tardis.ed.ac.uk
23
46
  executables:
@@ -31,12 +54,14 @@ files:
31
54
  - Rakefile
32
55
  - LICENSE
33
56
  - lib/oode/colour.rb
57
+ - lib/oode/file.rb
58
+ - lib/oode/queue.rb
34
59
  - lib/oode/version.rb
35
60
  - lib/oode.rb
36
61
  - bin/oode
37
- - spec/oode_spec.rb
38
- - spec/spec.opts
39
- - spec/spec_helper.rb
62
+ - man/oode.1
63
+ - man/oode.1.html
64
+ - man/oode.1.ronn
40
65
  has_rdoc: true
41
66
  homepage: http://github.com/xoebus/oode
42
67
  licenses: []
data/spec/oode_spec.rb DELETED
@@ -1,7 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe "oode" do
4
- it "should do nothing" do
5
- true.should == true
6
- end
7
- end
data/spec/spec.opts DELETED
@@ -1 +0,0 @@
1
- --colour
data/spec/spec_helper.rb DELETED
@@ -1,2 +0,0 @@
1
- $TESTING=true
2
- $:.push File.join(File.dirname(__FILE__), '..', 'lib')