screenxtv 0.0.11 → 0.0.12
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/screenxtv.rb +52 -15
- data/lib/version.rb +3 -0
- metadata +13 -8
- checksums.yaml +0 -7
data/lib/screenxtv.rb
CHANGED
@@ -7,9 +7,21 @@ require 'yaml'
|
|
7
7
|
require 'optparse'
|
8
8
|
require 'readline'
|
9
9
|
require 'tempfile'
|
10
|
+
require './lib/version.rb'
|
11
|
+
|
12
|
+
if `which screen`.empty?
|
13
|
+
print %(Warning: you don't have gnu screen in your machine.)
|
14
|
+
commands = [
|
15
|
+
['zsh','RPROMPT'=>'(screenxtv)% '],
|
16
|
+
['bash','PS1'=>'bash(screenxtv)$ '],
|
17
|
+
['sh','PS1'=>'sh(screenxtv)$ ']
|
18
|
+
]
|
19
|
+
exec_cmd, env = commands.find{|cmd, _| !`which #{cmd}`.empty?}
|
20
|
+
env.each{|k,v|ENV[k]=v}
|
21
|
+
end
|
10
22
|
|
11
23
|
def showVersion
|
12
|
-
print "ScreenX TV Ruby Client
|
24
|
+
print "ScreenX TV Ruby Client #{ScreenXTV::VERSION}\n" #is there any good way to do this?
|
13
25
|
exit
|
14
26
|
end
|
15
27
|
def showHelp
|
@@ -23,6 +35,7 @@ Options:
|
|
23
35
|
-t, [--title] # Select a title (e.g. Joe's Codestream)
|
24
36
|
-r, [--reset] # Reset your default configuration (e.g. url, color, title)
|
25
37
|
-f CONFIG_FILE # Path to a preset configuration
|
38
|
+
-e, [--execute] # Execute specified Program
|
26
39
|
-p, [--private] # Broadcast your terminal privately (anyone who has the link can access)
|
27
40
|
-h, [--help] # Show this help message and quit
|
28
41
|
-v, [--version] # Show ScreenX TV Ruby Client version number and quit
|
@@ -82,7 +95,7 @@ def readpswd(prompt='> ')
|
|
82
95
|
else
|
83
96
|
print "\a"
|
84
97
|
end
|
85
|
-
print "\r\e[K#{prompt}#{s.gsub /./,'*'}"
|
98
|
+
print "\r\e[K#{prompt}#{s.gsub /./,'*'}" # delete this
|
86
99
|
end
|
87
100
|
}
|
88
101
|
end
|
@@ -121,7 +134,7 @@ end
|
|
121
134
|
|
122
135
|
def auth(conf)
|
123
136
|
loop do
|
124
|
-
username=readline "
|
137
|
+
username=readline "username> "
|
125
138
|
return false if username.size==0
|
126
139
|
password=readpswd "password> "
|
127
140
|
return false if password.nil? || password.size==0
|
@@ -162,6 +175,8 @@ parser=OptionParser.new do |op|
|
|
162
175
|
op.on("-c [color]"){|v|argv[:color]=v||true}
|
163
176
|
op.on("-t [title]"){|v|argv[:title]=v||true}
|
164
177
|
op.on("--reset"){|v|argv[:new]=true}
|
178
|
+
op.on("-e program"){|v|exec_cmd=v}
|
179
|
+
op.on("--execute program"){|v|exec_cmd=v}
|
165
180
|
op.on("-p"){|v|argv[:private]=true}
|
166
181
|
op.on("--private"){|v|argv[:private]=true}
|
167
182
|
op.on("-f config_file"){|v|argv[:file]=v}
|
@@ -190,6 +205,7 @@ else
|
|
190
205
|
conf['url']=argv[:url]==true ? nil : argv[:url] if argv[:url]
|
191
206
|
conf['title']=argv[:title]==true ? nil : argv[:title] if argv[:title]
|
192
207
|
conf['color']=argv[:color]==true ? nil : argv[:color] if argv[:color]
|
208
|
+
conf['execute']=argv[:execute]==true ? nil : argv[:execute] if argv[:execute]
|
193
209
|
end
|
194
210
|
|
195
211
|
conf_scan.delete :url if argv[:private]
|
@@ -262,24 +278,45 @@ info={
|
|
262
278
|
}
|
263
279
|
ENV['SCREENXTV_BROADCASTING']=info.to_json
|
264
280
|
show_info(info)
|
281
|
+
message="http://#{HOST}/#{info['url']} #{conf['title']}"
|
265
282
|
|
266
283
|
print "\npress enter to start broadcasting"
|
267
284
|
readline
|
268
285
|
|
269
|
-
|
270
|
-
|
286
|
+
unless exec_cmd
|
287
|
+
unless File.exists? "#{ENV['HOME']}/.screenrc"
|
288
|
+
begin
|
289
|
+
#disable C-a if not screen user
|
290
|
+
Tempfile.open("screenrc_sxtv_alt_conf") do |f|
|
291
|
+
f.write "term xterm-256color\n"
|
292
|
+
f.write "escape ^Jj\n"
|
293
|
+
ENV['SCREENRC']=f.path
|
294
|
+
end
|
295
|
+
rescue
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
271
299
|
begin
|
272
|
-
|
273
|
-
|
274
|
-
|
300
|
+
#screenxtv -> screen(target)
|
301
|
+
#screenxtv -> screen(hardstatus) -> screen(target)
|
302
|
+
status_rc=Tempfile.open("screenrc_sxtv_status") do |f|
|
303
|
+
f.write "term xterm-256color\n"
|
304
|
+
f.write "hardstatus alwayslastline #{message.inspect}\n"
|
305
|
+
f.write "escape ^Qq\n"
|
306
|
+
f.write "autodetach off\n"
|
307
|
+
next f
|
308
|
+
end
|
275
309
|
rescue
|
276
310
|
end
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
311
|
+
|
312
|
+
screen_name=argv[:private] ? conf['screen_private'] : conf['screen']
|
313
|
+
|
314
|
+
cmd_stat=["screen","-c",status_rc.path,"-S","sx.#{url.gsub('/','.')}.tv"]
|
315
|
+
cmd_attach=["screen","-x",screen_name,"-R"]
|
316
|
+
exec_cmd=cmd_stat+cmd_attach
|
281
317
|
end
|
282
|
-
|
318
|
+
|
319
|
+
|
283
320
|
|
284
321
|
Thread.new{
|
285
322
|
begin
|
@@ -293,8 +330,8 @@ Thread.new{
|
|
293
330
|
|
294
331
|
begin
|
295
332
|
ENV['LANG']='en_US.UTF-8'
|
296
|
-
|
297
|
-
PTY::getpty
|
333
|
+
|
334
|
+
PTY::getpty *exec_cmd do |rr,ww|
|
298
335
|
winsize=->{
|
299
336
|
height,width=ww.winsize=rr.winsize=STDOUT.winsize
|
300
337
|
socket.send 'winch',{width:width,height:height}.to_json
|
data/lib/version.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: screenxtv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Tomoya Ishida
|
@@ -13,15 +14,17 @@ dependencies:
|
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: json
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
description: Software for broadcasting your terminal to http://screenx.tv/
|
@@ -32,28 +35,30 @@ extensions: []
|
|
32
35
|
extra_rdoc_files: []
|
33
36
|
files:
|
34
37
|
- lib/screenxtv.rb
|
38
|
+
- lib/version.rb
|
35
39
|
- bin/screenxtv
|
36
40
|
homepage: http://screenx.tv/
|
37
41
|
licenses: []
|
38
|
-
metadata: {}
|
39
42
|
post_install_message:
|
40
43
|
rdoc_options: []
|
41
44
|
require_paths:
|
42
45
|
- lib
|
43
46
|
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
44
48
|
requirements:
|
45
|
-
- - '>='
|
49
|
+
- - ! '>='
|
46
50
|
- !ruby/object:Gem::Version
|
47
51
|
version: '0'
|
48
52
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
49
54
|
requirements:
|
50
|
-
- - '>='
|
55
|
+
- - ! '>='
|
51
56
|
- !ruby/object:Gem::Version
|
52
57
|
version: '0'
|
53
58
|
requirements: []
|
54
59
|
rubyforge_project:
|
55
|
-
rubygems_version:
|
60
|
+
rubygems_version: 1.8.24
|
56
61
|
signing_key:
|
57
|
-
specification_version:
|
62
|
+
specification_version: 3
|
58
63
|
summary: ScreenX TV client
|
59
64
|
test_files: []
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 979011c1517589151acb14fe09ae8e5fab986533
|
4
|
-
data.tar.gz: 2b50177569b9092a9ab67affd1db0d8fd084bd56
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: baf303d80164a5dea891b652c90ae84bb70fc347e356a44615bc56b87454a42956cf4febb9b79dfea97daaaf96984d2fa583a221c727fcb833e8b18c86742187
|
7
|
-
data.tar.gz: 765daed474392f54b31e9ddd023f67f8fd8619bde843040a6d717595c2ef6c9196d097d8efca082ce57f98a2c87a83ff54cdda0ae6b56e8880b220918cad9efe
|