view_server 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/bin/cbcopy +11 -0
- data/bin/cbpaste +11 -0
- data/bin/show +50 -0
- data/bin/view_server +2 -90
- data/lib/view_server.rb +4 -1
- data/lib/view_server/client.rb +13 -0
- data/lib/view_server/runner.rb +59 -0
- data/lib/view_server/server.rb +31 -0
- data/lib/view_server/tmp_file.rb +20 -0
- data/lib/view_server/version.rb +1 -1
- data/test/runner_spec.rb +10 -0
- data/test/{test_helper.rb → spec_helper.rb} +1 -1
- data/view_server.gemspec +3 -0
- metadata +67 -7
data/.gitignore
CHANGED
data/bin/cbcopy
ADDED
data/bin/cbpaste
ADDED
data/bin/show
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'main'
|
4
|
+
require 'view_server'
|
5
|
+
require 'optparse'
|
6
|
+
require 'pry'
|
7
|
+
require 'pry-nav'
|
8
|
+
|
9
|
+
options = {}
|
10
|
+
|
11
|
+
class ShowRunner
|
12
|
+
def self.parse(args)
|
13
|
+
options = {}
|
14
|
+
opt_parser = OptionParser.new do |opts|
|
15
|
+
opts.banner = "Usage: show [options] [file]"
|
16
|
+
|
17
|
+
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
18
|
+
options[:verbose] = v
|
19
|
+
end
|
20
|
+
|
21
|
+
opts.on("-e", "--extension EXTENSION", "File extension") do |v|
|
22
|
+
options[:ext] = v
|
23
|
+
end
|
24
|
+
|
25
|
+
opts.on("-p", "--port PORT", "Port number") do |v|
|
26
|
+
options[:ext] = v
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
opt_parser.parse!(args)
|
31
|
+
filename = ARGV.first
|
32
|
+
if filename
|
33
|
+
data = File.read filename
|
34
|
+
ext = File.extname(filename)[1..-1]
|
35
|
+
else
|
36
|
+
data = $stdin.read
|
37
|
+
ext = options.fetch(:ext) {'txt'}
|
38
|
+
end
|
39
|
+
|
40
|
+
{:data => data, :ext => ext }
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.run(args)
|
44
|
+
opts = self.parse args
|
45
|
+
ViewServer::Client.new.server.show(opts[:data], opts[:ext])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
options = ShowRunner.run(ARGV)
|
49
|
+
|
50
|
+
|
data/bin/view_server
CHANGED
@@ -1,91 +1,3 @@
|
|
1
|
-
|
1
|
+
require 'view_server'
|
2
2
|
|
3
|
-
|
4
|
-
require 'tmpdir'
|
5
|
-
require 'fileutils'
|
6
|
-
require 'digest'
|
7
|
-
|
8
|
-
require "rubygems"
|
9
|
-
require "clip"
|
10
|
-
|
11
|
-
class TmpFile
|
12
|
-
def self.open(prefix = "", suffix= "")
|
13
|
-
begin
|
14
|
-
digest = Digest::MD5.hexdigest((Time.now.to_f + rand(10000)).to_s)
|
15
|
-
file_name = File.join(Dir.tmpdir, prefix + digest + suffix )
|
16
|
-
File.open(file_name, 'w+' ) do |f|
|
17
|
-
yield f
|
18
|
-
end
|
19
|
-
ensure
|
20
|
-
FileUtils::rm(file_name) if File.exist?(file_name)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
options = Clip do |p|
|
26
|
-
p.flag 's', 'server',:desc => 'Is a server', :default => false
|
27
|
-
|
28
|
-
p.optional 'p', 'port', :desc => 'The port', :default => 10021 do |v|
|
29
|
-
v.to_i # always deal with integers
|
30
|
-
end
|
31
|
-
p.flag 'c', 'copy_to_clipboard', :desc => "Send to clipboard"
|
32
|
-
p.flag 'P', 'paste_from_clipboard', :desc => "Read from clipboard"
|
33
|
-
p.flag 'v', 'verbose', :desc => 'Make it chatty'
|
34
|
-
end
|
35
|
-
|
36
|
-
if options.valid?
|
37
|
-
if options.verbose?
|
38
|
-
puts options.host
|
39
|
-
puts options.port
|
40
|
-
puts 'files:'
|
41
|
-
options.files.each do |f|
|
42
|
-
puts "\t#{f}"
|
43
|
-
end
|
44
|
-
end
|
45
|
-
else
|
46
|
-
# print error message(s) and usage
|
47
|
-
$stderr.puts options.to_s
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
require 'drb'
|
52
|
-
|
53
|
-
if options.server?
|
54
|
-
class Viewer
|
55
|
-
def affiche(file_ext, data)
|
56
|
-
TmpFile.open( "", "." + file_ext) do |a|
|
57
|
-
a << data
|
58
|
-
a.close
|
59
|
-
`open #{a.path} `
|
60
|
-
sleep 5 #We don't want to delete the file before it's loaded
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def to_cb(data) # To clipboard
|
65
|
-
File.open("#{ENV['HOME']}/tmp/clipboard", "w"){|a| a << data}
|
66
|
-
IO.popen('pbcopy', 'w'){|a| a << data}
|
67
|
-
end
|
68
|
-
|
69
|
-
def paste # From clipboard
|
70
|
-
`pbpaste`
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
DRb.start_service "druby://localhost:#{options.port}", Viewer.new
|
75
|
-
puts DRb.uri
|
76
|
-
|
77
|
-
DRb.thread.join
|
78
|
-
else
|
79
|
-
DRb.start_service
|
80
|
-
obj = DRbObject.new(nil, "druby://localhost:#{options.port}")
|
81
|
-
|
82
|
-
if options.copy_to_clipboard?
|
83
|
-
obj.to_cb(STDIN.read)
|
84
|
-
elsif options.paste_from_clipboard?
|
85
|
-
print obj.paste
|
86
|
-
else
|
87
|
-
if obj.remaining?
|
88
|
-
affiche("csv", "2,4,5\n3,4,5")
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
3
|
+
ViewServer::Runner.run
|
data/lib/view_server.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'main'
|
2
|
+
|
3
|
+
module ViewServer
|
4
|
+
class Runner
|
5
|
+
def self.old_run
|
6
|
+
options = Clip do |p|
|
7
|
+
p.flag 's', 'server',:desc => 'Is a server', :default => false
|
8
|
+
|
9
|
+
p.optional 'p', 'port', :desc => 'The port', :default => 10021 do |v|
|
10
|
+
v.to_i # always deal with integers
|
11
|
+
end
|
12
|
+
p.flag 'c', 'copy_to_clipboard', :desc => "Send to clipboard"
|
13
|
+
p.flag 'P', 'paste_from_clipboard', :desc => "Read from clipboard"
|
14
|
+
p.flag 'v', 'verbose', :desc => 'Make it chatty'
|
15
|
+
end
|
16
|
+
|
17
|
+
if options.valid?
|
18
|
+
if options.verbose?
|
19
|
+
puts options.host
|
20
|
+
puts options.port
|
21
|
+
puts 'files:'
|
22
|
+
options.files.each do |f|
|
23
|
+
puts "\t#{f}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
if options.server?
|
27
|
+
Server.serve(options)
|
28
|
+
else
|
29
|
+
Client.new(options.port).send(options)
|
30
|
+
end
|
31
|
+
else
|
32
|
+
# print error message(s) and usage
|
33
|
+
$stderr.puts options.to_s
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.run
|
38
|
+
main.run
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.main
|
42
|
+
main = Main.new do
|
43
|
+
option 'port', 'p' do
|
44
|
+
cast :int
|
45
|
+
default 10021
|
46
|
+
end
|
47
|
+
|
48
|
+
option 'verbose', 'v' do
|
49
|
+
default false
|
50
|
+
end
|
51
|
+
|
52
|
+
def run
|
53
|
+
puts "serving on port #{params['port']}"
|
54
|
+
Server.serve params['port'].value
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'drb'
|
2
|
+
|
3
|
+
module ViewServer
|
4
|
+
class Server
|
5
|
+
# I wanted to use the display method but it conflicts
|
6
|
+
# with the Object#display method
|
7
|
+
def show(data, file_ext = 'txt')
|
8
|
+
TmpFile.open("", "." + file_ext) do |a|
|
9
|
+
a << data
|
10
|
+
a.close
|
11
|
+
`open #{a.path} `
|
12
|
+
sleep 5 #We don't want to delete the file before it's loaded
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_cb(data) # To clipboard
|
17
|
+
File.open("#{ENV['HOME']}/tmp/clipboard", "w"){|a| a << data}
|
18
|
+
IO.popen('pbcopy', 'w'){|a| a << data}
|
19
|
+
end
|
20
|
+
|
21
|
+
def paste # From clipboard
|
22
|
+
`pbpaste`
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.serve(port)
|
26
|
+
DRb.start_service "druby://localhost:#{port}", Server.new
|
27
|
+
puts DRb.uri
|
28
|
+
DRb.thread.join
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'digest'
|
4
|
+
|
5
|
+
module ViewServer
|
6
|
+
class TmpFile
|
7
|
+
def self.open(prefix = "", suffix= "")
|
8
|
+
begin
|
9
|
+
digest = Digest::MD5.hexdigest((Time.now.to_f + rand(10000)).to_s)
|
10
|
+
file_name = File.join(Dir.tmpdir, prefix + digest + suffix )
|
11
|
+
File.open(file_name, 'w+' ) do |f|
|
12
|
+
yield f
|
13
|
+
end
|
14
|
+
ensure
|
15
|
+
FileUtils::rm(file_name) if File.exist?(file_name)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
data/lib/view_server/version.rb
CHANGED
data/test/runner_spec.rb
ADDED
data/view_server.gemspec
CHANGED
@@ -7,9 +7,12 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.name = "view_server"
|
8
8
|
gem.version = ViewServer::VERSION
|
9
9
|
gem.add_dependency "clip"
|
10
|
+
gem.add_dependency "main"
|
10
11
|
gem.add_development_dependency 'rake'
|
11
12
|
gem.add_development_dependency "bundler", "~> 1.0"
|
12
13
|
gem.add_development_dependency 'minitest'
|
14
|
+
gem.add_development_dependency 'pry'
|
15
|
+
gem.add_development_dependency 'pry-nav'
|
13
16
|
gem.authors = ["Martin Chabot"]
|
14
17
|
gem.email = ["chabotm@gmail.com"]
|
15
18
|
gem.description = %q{Allow local viewing of remote files}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: view_server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: clip
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: main
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: rake
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,10 +91,45 @@ dependencies:
|
|
75
91
|
- - ! '>='
|
76
92
|
- !ruby/object:Gem::Version
|
77
93
|
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: pry
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: pry-nav
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
78
126
|
description: Allow local viewing of remote files
|
79
127
|
email:
|
80
128
|
- chabotm@gmail.com
|
81
129
|
executables:
|
130
|
+
- cbcopy
|
131
|
+
- cbpaste
|
132
|
+
- show
|
82
133
|
- view_server
|
83
134
|
extensions: []
|
84
135
|
extra_rdoc_files: []
|
@@ -88,10 +139,18 @@ files:
|
|
88
139
|
- LICENSE.txt
|
89
140
|
- README.md
|
90
141
|
- Rakefile
|
142
|
+
- bin/cbcopy
|
143
|
+
- bin/cbpaste
|
144
|
+
- bin/show
|
91
145
|
- bin/view_server
|
92
146
|
- lib/view_server.rb
|
147
|
+
- lib/view_server/client.rb
|
148
|
+
- lib/view_server/runner.rb
|
149
|
+
- lib/view_server/server.rb
|
150
|
+
- lib/view_server/tmp_file.rb
|
93
151
|
- lib/view_server/version.rb
|
94
|
-
- test/
|
152
|
+
- test/runner_spec.rb
|
153
|
+
- test/spec_helper.rb
|
95
154
|
- test/view_server_test.rb
|
96
155
|
- view_server.gemspec
|
97
156
|
homepage: ''
|
@@ -108,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
108
167
|
version: '0'
|
109
168
|
segments:
|
110
169
|
- 0
|
111
|
-
hash:
|
170
|
+
hash: 4172687942151470953
|
112
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
172
|
none: false
|
114
173
|
requirements:
|
@@ -117,13 +176,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
176
|
version: '0'
|
118
177
|
segments:
|
119
178
|
- 0
|
120
|
-
hash:
|
179
|
+
hash: 4172687942151470953
|
121
180
|
requirements: []
|
122
181
|
rubyforge_project:
|
123
|
-
rubygems_version: 1.8.
|
182
|
+
rubygems_version: 1.8.23
|
124
183
|
signing_key:
|
125
184
|
specification_version: 3
|
126
185
|
summary: Allow local viewing of remote files
|
127
186
|
test_files:
|
128
|
-
- test/
|
187
|
+
- test/runner_spec.rb
|
188
|
+
- test/spec_helper.rb
|
129
189
|
- test/view_server_test.rb
|