trecs 0.1.11 → 0.1.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.
- checksums.yaml +13 -5
- data/Gemfile.lock +3 -1
- data/bin/trecs +27 -47
- data/bin/trecs_record +23 -27
- data/lib/trecs/frame.rb +37 -0
- data/lib/trecs/player.rb +1 -1
- data/lib/trecs/readers/json_reader.rb +18 -11
- data/lib/trecs/recorder.rb +23 -15
- data/lib/trecs/recording_strategies/config_strategy.rb +31 -0
- data/lib/trecs/recording_strategies/file_frames_strategy.rb +30 -0
- data/lib/trecs/recording_strategies/hash_strategy.rb +4 -0
- data/lib/trecs/recording_strategies/ttyrec_strategy.rb +1 -37
- data/lib/trecs/sources/tgz_source.rb +106 -0
- data/lib/trecs/version.rb +1 -1
- data/lib/trecs/writers/json_writer.rb +28 -9
- data/spec/trecs/frame_spec.rb +68 -0
- data/spec/trecs/player_spec.rb +1 -1
- data/spec/trecs/readers/json_reader_spec.rb +1 -1
- data/spec/trecs/readers/yaml_store_reader_spec.rb +1 -1
- data/spec/trecs/recorder_spec.rb +48 -29
- data/spec/trecs/recording_strategies/config_strategy_spec.rb +129 -0
- data/spec/trecs/recording_strategies/file_frames_strategy_spec.rb +10 -0
- data/spec/trecs/recording_strategies/shell_command_strategy_spec.rb +1 -1
- data/spec/trecs/sources/tgz_source_spec.rb +8 -0
- data/spec/trecs/writers/json_writer_spec.rb +8 -0
- data/trecs.gemspec +1 -0
- metadata +48 -25
- data/old_specs/player_spec.rb +0 -198
- data/old_specs/recorders/zip_file_recorder_spec.rb +0 -64
- data/old_specs/timestamps_spec.rb +0 -44
- data/old_specs/trecs_message_spec.rb +0 -125
- data/old_specs/trecs_spec.rb +0 -115
data/trecs.gemspec
CHANGED
metadata
CHANGED
@@ -1,83 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trecs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Federico Iachetti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07
|
11
|
+
date: 2014-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: trollop
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitar
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.5.4
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.5.4
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- -
|
45
|
+
- - ~>
|
32
46
|
- !ruby/object:Gem::Version
|
33
47
|
version: '1.6'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- -
|
52
|
+
- - ~>
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '1.6'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- -
|
59
|
+
- - ! '>='
|
46
60
|
- !ruby/object:Gem::Version
|
47
61
|
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- -
|
66
|
+
- - ! '>='
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ~>
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: '2.12'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ~>
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '2.12'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec-given
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ~>
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: 3.5.4
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ~>
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 3.5.4
|
83
97
|
description: Record text screencasts.
|
@@ -89,11 +103,11 @@ executables:
|
|
89
103
|
extensions: []
|
90
104
|
extra_rdoc_files: []
|
91
105
|
files:
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
-
|
96
|
-
-
|
106
|
+
- .bundle/config
|
107
|
+
- .gitignore
|
108
|
+
- .rspec
|
109
|
+
- .spec
|
110
|
+
- .travis.yml
|
97
111
|
- Gemfile
|
98
112
|
- Gemfile.lock
|
99
113
|
- LICENCE.txt
|
@@ -103,11 +117,14 @@ files:
|
|
103
117
|
- bin/trecs_record
|
104
118
|
- doc/steps.org
|
105
119
|
- lib/trecs.rb
|
120
|
+
- lib/trecs/frame.rb
|
106
121
|
- lib/trecs/player.rb
|
107
122
|
- lib/trecs/readers/json_reader.rb
|
108
123
|
- lib/trecs/readers/yaml_store_reader.rb
|
109
124
|
- lib/trecs/recorder.rb
|
125
|
+
- lib/trecs/recording_strategies/config_strategy.rb
|
110
126
|
- lib/trecs/recording_strategies/custom_strategy.rb
|
127
|
+
- lib/trecs/recording_strategies/file_frames_strategy.rb
|
111
128
|
- lib/trecs/recording_strategies/fly_from_right_strategy.rb
|
112
129
|
- lib/trecs/recording_strategies/hash_strategy.rb
|
113
130
|
- lib/trecs/recording_strategies/incremental_strategy.rb
|
@@ -117,6 +134,7 @@ files:
|
|
117
134
|
- lib/trecs/recording_strategies/tmux_session_strategy.rb
|
118
135
|
- lib/trecs/recording_strategies/ttyrec_strategy.rb
|
119
136
|
- lib/trecs/screens/terminal_screen.rb
|
137
|
+
- lib/trecs/sources/tgz_source.rb
|
120
138
|
- lib/trecs/tickers/clock_ticker.rb
|
121
139
|
- lib/trecs/tickers/terminal_input_ticker.rb
|
122
140
|
- lib/trecs/tickers/watch_file_ticker.rb
|
@@ -125,11 +143,6 @@ files:
|
|
125
143
|
- lib/trecs/writers/json_writer.rb
|
126
144
|
- lib/trecs/writers/yaml_store_writer.rb
|
127
145
|
- lib/trecs/writers/zip_file_writer.rb
|
128
|
-
- old_specs/player_spec.rb
|
129
|
-
- old_specs/recorders/zip_file_recorder_spec.rb
|
130
|
-
- old_specs/timestamps_spec.rb
|
131
|
-
- old_specs/trecs_message_spec.rb
|
132
|
-
- old_specs/trecs_spec.rb
|
133
146
|
- sandbox/create_recording.rb
|
134
147
|
- sandbox/lipsum_end
|
135
148
|
- sandbox/lipsum_start
|
@@ -137,17 +150,22 @@ files:
|
|
137
150
|
- sandbox/record_diff
|
138
151
|
- sandbox/record_script_file
|
139
152
|
- spec/spec_helper.rb
|
153
|
+
- spec/trecs/frame_spec.rb
|
140
154
|
- spec/trecs/player_spec.rb
|
141
155
|
- spec/trecs/readers/json_reader_spec.rb
|
142
156
|
- spec/trecs/readers/yaml_store_reader_spec.rb
|
143
157
|
- spec/trecs/recorder_spec.rb
|
158
|
+
- spec/trecs/recording_strategies/config_strategy_spec.rb
|
159
|
+
- spec/trecs/recording_strategies/file_frames_strategy_spec.rb
|
144
160
|
- spec/trecs/recording_strategies/fly_from_right_strategy_spec.rb
|
145
161
|
- spec/trecs/recording_strategies/hash_strategy_spec.rb
|
146
162
|
- spec/trecs/recording_strategies/incremental_strategy_spec.rb
|
147
163
|
- spec/trecs/recording_strategies/raw_file_strategy_spec.rb
|
148
164
|
- spec/trecs/recording_strategies/shell_command_strategy_spec.rb
|
165
|
+
- spec/trecs/sources/tgz_source_spec.rb
|
149
166
|
- spec/trecs/tickers/clock_ticker_spec.rb
|
150
167
|
- spec/trecs/writers/in_memory_writer_spec.rb
|
168
|
+
- spec/trecs/writers/json_writer_spec.rb
|
151
169
|
- tmp/.gitignore
|
152
170
|
- trecs.gemspec
|
153
171
|
homepage: ''
|
@@ -162,12 +180,12 @@ require_paths:
|
|
162
180
|
- bin
|
163
181
|
required_ruby_version: !ruby/object:Gem::Requirement
|
164
182
|
requirements:
|
165
|
-
- -
|
183
|
+
- - ! '>='
|
166
184
|
- !ruby/object:Gem::Version
|
167
185
|
version: '0'
|
168
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
169
187
|
requirements:
|
170
|
-
- -
|
188
|
+
- - ! '>='
|
171
189
|
- !ruby/object:Gem::Version
|
172
190
|
version: '0'
|
173
191
|
requirements: []
|
@@ -175,17 +193,22 @@ rubyforge_project:
|
|
175
193
|
rubygems_version: 2.2.2
|
176
194
|
signing_key:
|
177
195
|
specification_version: 4
|
178
|
-
summary: 'TRecs: Text Recordings.'
|
196
|
+
summary: ! 'TRecs: Text Recordings.'
|
179
197
|
test_files:
|
180
198
|
- spec/spec_helper.rb
|
199
|
+
- spec/trecs/frame_spec.rb
|
181
200
|
- spec/trecs/player_spec.rb
|
182
201
|
- spec/trecs/readers/json_reader_spec.rb
|
183
202
|
- spec/trecs/readers/yaml_store_reader_spec.rb
|
184
203
|
- spec/trecs/recorder_spec.rb
|
204
|
+
- spec/trecs/recording_strategies/config_strategy_spec.rb
|
205
|
+
- spec/trecs/recording_strategies/file_frames_strategy_spec.rb
|
185
206
|
- spec/trecs/recording_strategies/fly_from_right_strategy_spec.rb
|
186
207
|
- spec/trecs/recording_strategies/hash_strategy_spec.rb
|
187
208
|
- spec/trecs/recording_strategies/incremental_strategy_spec.rb
|
188
209
|
- spec/trecs/recording_strategies/raw_file_strategy_spec.rb
|
189
210
|
- spec/trecs/recording_strategies/shell_command_strategy_spec.rb
|
211
|
+
- spec/trecs/sources/tgz_source_spec.rb
|
190
212
|
- spec/trecs/tickers/clock_ticker_spec.rb
|
191
213
|
- spec/trecs/writers/in_memory_writer_spec.rb
|
214
|
+
- spec/trecs/writers/json_writer_spec.rb
|
data/old_specs/player_spec.rb
DELETED
@@ -1,198 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
require "player"
|
4
|
-
require "screens/terminal_screen"
|
5
|
-
|
6
|
-
module TRecs
|
7
|
-
class DummyPlayer < Player
|
8
|
-
def initialize(options={})
|
9
|
-
frames = options.fetch(:frames) { nil }
|
10
|
-
@frames = frames.is_a?(Hash) ? frames : Array(frames)
|
11
|
-
super
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
|
-
def get_timestamps
|
16
|
-
@frames.keys
|
17
|
-
end
|
18
|
-
|
19
|
-
def get_frame(time)
|
20
|
-
@frames[time]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class DummyOutput
|
25
|
-
def initialize
|
26
|
-
@output = []
|
27
|
-
end
|
28
|
-
|
29
|
-
def puts(str=nil)
|
30
|
-
@output << str.to_s
|
31
|
-
end
|
32
|
-
|
33
|
-
def clear
|
34
|
-
@output << :clear_screen
|
35
|
-
end
|
36
|
-
|
37
|
-
def raw_output
|
38
|
-
@output
|
39
|
-
end
|
40
|
-
|
41
|
-
def output
|
42
|
-
@output.select { |f| f.is_a? String }
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
|
47
|
-
describe Player do
|
48
|
-
define :have_frames do |expected|
|
49
|
-
match do |actual|
|
50
|
-
raw_expected = expected.map { |o| [:clear_screen, o] }.flatten
|
51
|
-
a = actual.raw_output == raw_expected
|
52
|
-
b = actual.output == expected
|
53
|
-
a && b
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def create_recording
|
58
|
-
frames = {}
|
59
|
-
yield frames
|
60
|
-
DummyPlayer.new(frames: frames, output: output)
|
61
|
-
end
|
62
|
-
|
63
|
-
let(:output) { DummyOutput.new }
|
64
|
-
|
65
|
-
it "reads a one frame screencast" do
|
66
|
-
player = create_recording do |frames|
|
67
|
-
frames[0] = "FIRST FRAME"
|
68
|
-
end
|
69
|
-
|
70
|
-
player.play
|
71
|
-
|
72
|
-
output.should have_frames ["FIRST FRAME"]
|
73
|
-
end
|
74
|
-
|
75
|
-
it "returns the frame at certain time" do
|
76
|
-
player = create_recording do |frames|
|
77
|
-
frames[0] = "FIRST FRAME",
|
78
|
-
frames[100] = "FRAME AT 100"
|
79
|
-
end
|
80
|
-
|
81
|
-
player.play_frame(100)
|
82
|
-
|
83
|
-
output.should have_frames ["FRAME AT 100"]
|
84
|
-
end
|
85
|
-
|
86
|
-
it "returns the previous frame if no frame at certain time" do
|
87
|
-
player = create_recording do |frames|
|
88
|
-
frames[0] = "FIRST FRAME"
|
89
|
-
frames[100] = "FRAME AT 100"
|
90
|
-
frames[200] = "FRAME AT 200"
|
91
|
-
end
|
92
|
-
|
93
|
-
player.play_frame(111)
|
94
|
-
|
95
|
-
output.output.should == ["FRAME AT 100"]
|
96
|
-
end
|
97
|
-
|
98
|
-
it "returns the last frame if asking for exceeding time" do
|
99
|
-
player = create_recording do |frames|
|
100
|
-
frames[0] = "FIRST FRAME"
|
101
|
-
frames[100] = "FRAME AT 100"
|
102
|
-
frames[200] = "FRAME AT 200"
|
103
|
-
end
|
104
|
-
|
105
|
-
player.play_frame(201)
|
106
|
-
|
107
|
-
output.should have_frames ["FRAME AT 200"]
|
108
|
-
|
109
|
-
end
|
110
|
-
|
111
|
-
describe "multiple frame screencast" do
|
112
|
-
it "playing two frames" do
|
113
|
-
player = create_recording do |frames|
|
114
|
-
frames[0] = "FIRST FRAME"
|
115
|
-
frames[100] = "FRAME AT 100"
|
116
|
-
end
|
117
|
-
|
118
|
-
player.play
|
119
|
-
|
120
|
-
output.should have_frames [
|
121
|
-
"FIRST FRAME",
|
122
|
-
"FRAME AT 100"
|
123
|
-
]
|
124
|
-
end
|
125
|
-
|
126
|
-
it "playing all the frames" do
|
127
|
-
player = create_recording do |frames|
|
128
|
-
frames[0] = "FIRST FRAME"
|
129
|
-
frames[100] = "FRAME AT 100"
|
130
|
-
frames[200] = "FRAME AT 200"
|
131
|
-
end
|
132
|
-
|
133
|
-
player.play
|
134
|
-
|
135
|
-
output.should have_frames [
|
136
|
-
"FIRST FRAME",
|
137
|
-
"FRAME AT 100",
|
138
|
-
"FRAME AT 200"
|
139
|
-
]
|
140
|
-
end
|
141
|
-
|
142
|
-
it "playing a recording" do
|
143
|
-
player = create_recording do |frames|
|
144
|
-
frames[0] = "FIRST FRAME"
|
145
|
-
frames[100] = "FRAME AT 100"
|
146
|
-
frames[200] = "FRAME AT 200"
|
147
|
-
frames[301] = "FRAME AT 301"
|
148
|
-
frames[499] = "FRAME AT 499"
|
149
|
-
frames[599] = "FRAME AT 599"
|
150
|
-
end
|
151
|
-
|
152
|
-
player.play
|
153
|
-
|
154
|
-
output.should have_frames [
|
155
|
-
"FIRST FRAME",
|
156
|
-
"FRAME AT 100",
|
157
|
-
"FRAME AT 200",
|
158
|
-
"FRAME AT 200",
|
159
|
-
"FRAME AT 301",
|
160
|
-
"FRAME AT 499",
|
161
|
-
"FRAME AT 599",
|
162
|
-
]
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
context "Timestamps" do
|
167
|
-
it "returns all the frame timestamps" do
|
168
|
-
player = create_recording do |frames|
|
169
|
-
frames[0] = "FIRST FRAME"
|
170
|
-
frames[100] = "FRAME AT 100"
|
171
|
-
frames[200] = "FRAME AT 200"
|
172
|
-
end
|
173
|
-
|
174
|
-
player.timestamps.should == [0, 100, 200]
|
175
|
-
|
176
|
-
end
|
177
|
-
|
178
|
-
end
|
179
|
-
|
180
|
-
context "output" do
|
181
|
-
it "receives a Screen object to manage output" do
|
182
|
-
player = Player.new(output: :output)
|
183
|
-
|
184
|
-
player.output.should == :output
|
185
|
-
end
|
186
|
-
|
187
|
-
it "defaults to the Terminal Screen" do
|
188
|
-
player = Player.new
|
189
|
-
|
190
|
-
player.output.class.should == TerminalScreen
|
191
|
-
end
|
192
|
-
|
193
|
-
context "message ... puts ... print" do
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
end
|