shellplay 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -0
- data/README.md +9 -0
- data/bin/shellexport +7 -0
- data/lib/shellplay/screen.rb +0 -8
- data/lib/shellplay/session.rb +2 -3
- data/tpl/index.html +15 -3
- data/tpl/shellplay.css +28 -0
- data/tpl/shellplay.js +44 -0
- metadata +3 -2
- data/tpl/nav.js +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f55dfc5a678eb16a4cb71c13f7d4f28ce7c78aa
|
4
|
+
data.tar.gz: b665727c3a94d92745fbadfb97c2b3f2a814fe6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c2b09cd94a775e1a209d6619016e4011f5d2f7a6304e2d912fb5149a7e805be64a620099cc518e7d6a70fd303861f0b1f4053011fb1b155798df0d07c008baa
|
7
|
+
data.tar.gz: a6509a8bd4e0e7552704a132e377f6c290ef3d09790b3ea40ebe83010158c0571e386f886d3441fae6d6e97d1e0683847903353beef1625b662ba063041895be
|
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -94,6 +94,15 @@ If you don't specify the name of the session, all locally available sessions wil
|
|
94
94
|
|
95
95
|
Then type enter to go next, or `?` to display list of available commands.
|
96
96
|
|
97
|
+
## Export to HTML
|
98
|
+
|
99
|
+
To export
|
100
|
+
|
101
|
+
shellexport <session_file_name>
|
102
|
+
shellplay <remote session url>
|
103
|
+
|
104
|
+
It will save the html in a dir in `.shellplay` under the name of the session. The dir contains index.html, css, and js files, ready to be played from your laptop or uploaded to your server.
|
105
|
+
|
97
106
|
## Todo
|
98
107
|
|
99
108
|
- <s>handle the no-display entries</s>
|
data/bin/shellexport
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'paint'
|
4
4
|
require 'erb'
|
5
|
+
require "shell2html"
|
5
6
|
|
6
7
|
lib = File.expand_path('../../lib', __FILE__)
|
7
8
|
tpl = File.expand_path('../../tpl', __FILE__)
|
@@ -22,3 +23,9 @@ File.open(File.join(dest, "index.html"), 'w') do |f|
|
|
22
23
|
f.puts erb.result(binding)
|
23
24
|
end
|
24
25
|
|
26
|
+
FileUtils.cp(File.join(tpl, 'jquery-1.11.1.min.js'), dest)
|
27
|
+
FileUtils.cp(File.join(tpl, 'shellplay.js'), dest)
|
28
|
+
FileUtils.cp(File.join(tpl, 'shellplay.css'), dest)
|
29
|
+
File.open(File.join(dest, "colors.css"), 'w') do |f|
|
30
|
+
f.puts Shell2html.css
|
31
|
+
end
|
data/lib/shellplay/screen.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
|
-
require "shell2html"
|
2
|
-
|
3
1
|
module Shellplay
|
4
2
|
class Screen
|
5
3
|
|
6
|
-
include Shell2html
|
7
|
-
|
8
4
|
attr_reader :stdin, :stdout, :stderr, :display, :timespent, :displaycommand, :playprompt, :clearscreen, :customprompt
|
9
5
|
|
10
6
|
def initialize
|
@@ -42,9 +38,5 @@ module Shellplay
|
|
42
38
|
}
|
43
39
|
end
|
44
40
|
|
45
|
-
def html
|
46
|
-
to_html(@stdout)
|
47
|
-
end
|
48
|
-
|
49
41
|
end
|
50
42
|
end
|
data/lib/shellplay/session.rb
CHANGED
@@ -32,22 +32,21 @@ module Shellplay
|
|
32
32
|
@output.puts "There is no recorded session locally."
|
33
33
|
@output.puts "Do you want to play a remote recording?"
|
34
34
|
name = ask "url: "
|
35
|
-
session_name = File.basename(name, '.json')
|
36
35
|
else
|
37
36
|
@output.puts "What session do you want to load?"
|
38
37
|
name = ask "(input a number or an url if you want to play a remote recording)",
|
39
38
|
aslist: true,
|
40
39
|
choices: sessions.map { |f| File.basename(f, '.json') }
|
41
|
-
session_name = name
|
42
40
|
end
|
43
41
|
end
|
44
42
|
if /^https?:\/\//.match name
|
45
43
|
infile = open(name) { |f| f.read }
|
44
|
+
@name = File.basename(name, '.json')
|
46
45
|
else
|
47
46
|
infile = IO.read(File.join(@basedir, "#{name}.json"))
|
47
|
+
@name = name
|
48
48
|
end
|
49
49
|
data = JSON.parse(infile)
|
50
|
-
@name = session_name
|
51
50
|
@title = data['title']
|
52
51
|
@config = Shellplay::Config.new({
|
53
52
|
basedir: @basedir,
|
data/tpl/index.html
CHANGED
@@ -4,7 +4,8 @@
|
|
4
4
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
5
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=">
|
6
6
|
<title><%= @session.title %></title>
|
7
|
-
<link href="
|
7
|
+
<link href="shellplay.css" rel="stylesheet">
|
8
|
+
<link href="colors.css" rel="stylesheet">
|
8
9
|
<script src="jquery-1.11.1.min.js"></script>
|
9
10
|
</head>
|
10
11
|
<body>
|
@@ -13,13 +14,24 @@
|
|
13
14
|
<div class="row">
|
14
15
|
<div class="col-md-12 main">
|
15
16
|
<% @session.sequence.each_with_index do |screen, i| %>
|
16
|
-
<div class="screen">
|
17
|
-
|
17
|
+
<div class="screen" id="s<%= i %>">
|
18
|
+
<% if screen.customprompt %>
|
19
|
+
<%= Shell2html.to_html(screen.customprompt) %>
|
20
|
+
<% else %>
|
21
|
+
<%= Shell2html.to_html(@session.config.prompt) %>
|
22
|
+
<% end %>
|
23
|
+
<%= Shell2html.to_html(screen.stdin) %>
|
24
|
+
<br>
|
25
|
+
<%= Shell2html.to_html(screen.stdout) %>
|
26
|
+
<% if screen.stderr %>
|
27
|
+
<%= Shell2html.to_html(screen.stderr) %>
|
28
|
+
<% end %>
|
18
29
|
</div>
|
19
30
|
<% end %>
|
20
31
|
</div>
|
21
32
|
</div>
|
22
33
|
</div>
|
23
34
|
|
35
|
+
<script src="shellplay.js"></script>
|
24
36
|
</body>
|
25
37
|
</html>
|
data/tpl/shellplay.css
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
* {
|
2
|
+
|
3
|
+
}
|
4
|
+
body {
|
5
|
+
margin: 0;
|
6
|
+
padding: 0;
|
7
|
+
background-color: #000000;
|
8
|
+
}
|
9
|
+
.container {
|
10
|
+
|
11
|
+
}
|
12
|
+
.main {
|
13
|
+
position: absolute;
|
14
|
+
top: 40px;
|
15
|
+
bottom: 40px;
|
16
|
+
left: 40px;
|
17
|
+
right: 40px;
|
18
|
+
background-color: #000000;
|
19
|
+
color: #ffffff;
|
20
|
+
font-family: monospace;
|
21
|
+
border: 1px solid #848484;
|
22
|
+
border-radius: 5px;
|
23
|
+
box-shadow: 0 0 35px 20px #424648;
|
24
|
+
overflow: hidden;
|
25
|
+
}
|
26
|
+
.screen {
|
27
|
+
margin: 30px;
|
28
|
+
}
|
data/tpl/shellplay.js
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
(function(){
|
2
|
+
|
3
|
+
var current = 0;
|
4
|
+
var last = $(".screen").size() - 1;
|
5
|
+
|
6
|
+
function draw() {
|
7
|
+
$(".screen").hide();
|
8
|
+
$("#s"+current).show();
|
9
|
+
}
|
10
|
+
|
11
|
+
function next() {
|
12
|
+
if (current < last) {
|
13
|
+
current++;
|
14
|
+
}
|
15
|
+
draw();
|
16
|
+
}
|
17
|
+
|
18
|
+
function previous() {
|
19
|
+
console.log(current);
|
20
|
+
if (current > 0) {
|
21
|
+
current--;
|
22
|
+
}
|
23
|
+
draw();
|
24
|
+
}
|
25
|
+
|
26
|
+
draw();
|
27
|
+
|
28
|
+
$(document).keydown(function(e) {
|
29
|
+
switch(e.keyCode) {
|
30
|
+
case 39: // ->
|
31
|
+
case 78: // n
|
32
|
+
case 13: // enter
|
33
|
+
next();
|
34
|
+
break;
|
35
|
+
case 37: // <-
|
36
|
+
case 80: // p
|
37
|
+
previous();
|
38
|
+
break;
|
39
|
+
default:
|
40
|
+
console.log(e.keyCode);
|
41
|
+
}
|
42
|
+
});
|
43
|
+
|
44
|
+
}());
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shellplay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mose
|
@@ -158,7 +158,8 @@ files:
|
|
158
158
|
- spec/spec_helper.rb
|
159
159
|
- tpl/index.html
|
160
160
|
- tpl/jquery-1.11.1.min.js
|
161
|
-
- tpl/
|
161
|
+
- tpl/shellplay.css
|
162
|
+
- tpl/shellplay.js
|
162
163
|
homepage: https://github.com/mose/shellplay
|
163
164
|
licenses:
|
164
165
|
- MIT
|
data/tpl/nav.js
DELETED