shellplay 0.0.4 → 0.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7657c1610c246bcbe72ae189489046b76a8b1d9f
4
- data.tar.gz: 6edd875cdec45dd5149037dc2f457ea72792f637
3
+ metadata.gz: 491a3d029d1bdb1e7157cd28b55056ff02f93f30
4
+ data.tar.gz: 1359b3988d567ad789711a0fdacde95238822c03
5
5
  SHA512:
6
- metadata.gz: cc028631ed8f02d854a85dd08c9d533986cd949960e48293d6791feca35e15049361e992a15740cd91dd98223363dbbea706652f9e7bfd60bac7874ea340179e
7
- data.tar.gz: 1cd22695718111aa4a4d30da5e06dbe1f89cf5f05f84587cf23fb37d56d82a1a5121de50d8b1a3caa598a8f948628c4b5919c4e4f779caf9292a79abb01891e9
6
+ metadata.gz: 1b7b3cf450b2f7b5f40028ef00e5795eaad3323a39cfd804e4ce4c7f207ee50904ebe3a705c13bf0a6e59029d72c1fcf73de9c6899902e451f98b591d7a3f8b3
7
+ data.tar.gz: 7d53e72b160c7b00c4fab117bd8e61478e54bb1c5b2d0284256a9001f979ab1c9cf185ef6fa69b867816f8a17df26c2c4d28b755ff4356fce0f42fc06b93575c
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  Shellplay Changelog
2
2
  =========================
3
3
 
4
+ v0.0.5 - 2014-08-12
5
+ ------------------
6
+ - add a `/` record prefix for clearscreen, works with iterm2 on mac, linux trick don't work yet
7
+ - add a `?` record prefix for faking output, in case of ssh connection for example
8
+ - add a `>` to change the prompt and a `>>` to switch prompt back and forth
9
+ - code is getting messy, it will be time to refactor the record into some classes soon
10
+
4
11
  v0.0.4 - 2014-08-12
5
12
  ------------------
6
13
  - add changelog link in the gemspec
data/bin/shellplay CHANGED
@@ -32,8 +32,19 @@ def usage
32
32
  end
33
33
 
34
34
  def display(screen)
35
+ if screen.clearscreen
36
+ if ENV['TERM_PROGRAM'] = 'iTerm.app'
37
+ printf "\e]50;ClearScrollback\a"
38
+ else
39
+ printf "\e\143"
40
+ end
41
+ end
35
42
  if screen.displaycommand
36
- print @session.config.prompt
43
+ if screen.customprompt
44
+ print screen.customprompt
45
+ else
46
+ print @session.config.prompt
47
+ end
37
48
  sleep @sleeptime
38
49
  print screen.stdin
39
50
  STDIN.gets
@@ -41,7 +52,7 @@ def display(screen)
41
52
  else
42
53
  @lastelapsed = 0
43
54
  end
44
- printf screen.stdout
55
+ print screen.stdout
45
56
  if screen.stderr != ""
46
57
  printf "\n#{Paint[screen.stderr, :red]}"
47
58
  end
@@ -68,8 +79,8 @@ def show(index)
68
79
  end
69
80
 
70
81
  while continue do
71
- printf "\n\e[36m>\e[0m " if @playprompt
72
- printf "\e[35melapsed: #{@lastelapsed}s\e[0m " unless @lastelapsed == 0
82
+ print "\n\e[36m>\e[0m " if @playprompt
83
+ print "\e[35melapsed: #{@lastelapsed}s\e[0m " unless @lastelapsed == 0
73
84
  command = STDIN.gets.strip
74
85
  case command
75
86
  when /^(?:q|x)$/
@@ -88,11 +99,11 @@ while continue do
88
99
  else
89
100
  Open3.popen3("bash","-l","-c",command.strip) do |i, o, e, t|
90
101
  o.read.split("\n").each do |line|
91
- printf line
102
+ print line
92
103
  sleep sleeptime
93
104
  end
94
105
  e.read.split("\n").each do |line|
95
- printf Paint[line, :red]
106
+ print Paint[line, :red]
96
107
  end
97
108
  end
98
109
  end
data/bin/shellrecord CHANGED
@@ -9,14 +9,18 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
9
9
  require 'shellplay'
10
10
 
11
11
  continue = true
12
- sleeptime = 1.0/48.0
13
12
 
14
13
  session = Shellplay::Session.new
15
14
  prompt = "\e[36mrecord >\e[0m"
15
+ customprompt = nil
16
16
 
17
17
  while continue do
18
18
  printf("\e[36mrecord >\e[33m %d > \e[0m", session.pointer)
19
19
  command = STDIN.gets.strip
20
+ displaycommand = true
21
+ playprompt = true
22
+ clearscreen = false
23
+ fakeit = false
20
24
  case command
21
25
  when "q"
22
26
  session.save
@@ -28,9 +32,31 @@ while continue do
28
32
  else
29
33
  session.drop_last_screen
30
34
  end
35
+ when ""
36
+ screen = Shellplay::Screen.new
37
+ session.add_screen({
38
+ 'displaycommand' => false,
39
+ 'playprompt' => false,
40
+ 'clearscreen' => true,
41
+ 'customprompt' => nil,
42
+ 'stdin' => '',
43
+ 'stdout' => '',
44
+ 'stderr' => '',
45
+ 'timespent' => 0
46
+ })
47
+ when /^>/
48
+ command = command[1..-1].strip
49
+ if command[0] == '>'
50
+ customprompt = nil
51
+ else
52
+ print "New prompt: " + command.gsub(/\\e/,27.chr) + "\n"
53
+ customprompt = command.gsub(/\\e/,27.chr)
54
+ end
31
55
  else
32
- displaycommand = true
33
- playprompt = true
56
+ if command[0] == '?'
57
+ command = command[1..-1].strip
58
+ fakeit = true
59
+ end
34
60
  if command[0] == '#'
35
61
  command = command[1..-1].strip
36
62
  displaycommand = false
@@ -39,27 +65,56 @@ while continue do
39
65
  playprompt = false
40
66
  end
41
67
  end
42
- start_time = Time.now
43
- Open3.popen3("bash","-l","-c",command) do |i, o, e, t|
68
+ if command[0] == '/'
69
+ command = command[1..-1].strip
70
+ clearscreen = true
71
+ end
72
+ if fakeit
73
+ go_on = true
74
+ out = ""
75
+ while go_on do
76
+ line = STDIN.gets
77
+ if line == ".\n"
78
+ go_on = false
79
+ else
80
+ out << line
81
+ end
82
+ end
44
83
  screen = Shellplay::Screen.new
45
- out = o.read
46
- err = e.read
47
- end_time = Time.now
48
- elapsed = end_time - start_time
49
84
  session.add_screen({
50
85
  'displaycommand' => displaycommand,
51
86
  'playprompt' => playprompt,
87
+ 'clearscreen' => clearscreen,
88
+ 'customprompt' => customprompt,
52
89
  'stdin' => command,
53
90
  'stdout' => out,
54
- 'stderr' => err,
55
- 'timespent' => elapsed
56
- })
57
- out.split("\n").each do |line|
58
- puts line
59
- sleep sleeptime
60
- end
61
- err.split("\n").each do |line|
62
- puts Paint[line, :red]
91
+ 'stderr' => '',
92
+ 'timespent' => 0
93
+ })
94
+ else
95
+ start_time = Time.now
96
+ Open3.popen3(command) do |i, o, e, t|
97
+ screen = Shellplay::Screen.new
98
+ out = o.read
99
+ err = e.read
100
+ end_time = Time.now
101
+ elapsed = end_time - start_time
102
+ session.add_screen({
103
+ 'displaycommand' => displaycommand,
104
+ 'playprompt' => playprompt,
105
+ 'clearscreen' => clearscreen,
106
+ 'customprompt' => customprompt,
107
+ 'stdin' => command,
108
+ 'stdout' => out,
109
+ 'stderr' => err,
110
+ 'timespent' => elapsed
111
+ })
112
+ out.split("\n").each do |line|
113
+ puts line
114
+ end
115
+ err.split("\n").each do |line|
116
+ puts Paint[line, :red]
117
+ end
63
118
  end
64
119
  end
65
120
  session.next
@@ -1,11 +1,13 @@
1
1
  module Shellplay
2
2
  class Screen
3
3
 
4
- attr_reader :stdin, :stdout, :stderr, :display, :timespent, :displaycommand, :playprompt
4
+ attr_reader :stdin, :stdout, :stderr, :display, :timespent, :displaycommand, :playprompt, :clearscreen, :customprompt
5
5
 
6
6
  def initialize
7
7
  @displaycommand = true
8
8
  @playprompt = true
9
+ @clearscreen = false
10
+ @customprompt = nil
9
11
  @stdin = nil
10
12
  @stdout = nil
11
13
  @stderr = nil
@@ -15,6 +17,8 @@ module Shellplay
15
17
  def import(hash)
16
18
  @displaycommand = !!hash['displaycommand']
17
19
  @playprompt = !!hash['playprompt']
20
+ @clearscreen = !!hash['clearscreen']
21
+ @customprompt = hash['customprompt']
18
22
  @stdin = hash['stdin']
19
23
  @stdout = hash['stdout']
20
24
  @stderr = hash['stderr']
@@ -25,6 +29,8 @@ module Shellplay
25
29
  {
26
30
  displaycommand: @displaycommand,
27
31
  playprompt: @playprompt,
32
+ clearscreen: @clearscreen,
33
+ customprompt: @customprompt,
28
34
  stdin: @stdin,
29
35
  stdout: @stdout,
30
36
  stderr: @stderr,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shellplay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - mose
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-11 00:00:00.000000000 Z
11
+ date: 2014-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: paint