shelr 0.14.1 → 0.15.0

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/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![Build Status](https://secure.travis-ci.org/antono/shelr.png?branch=master)](http://travis-ci.org/antono/shelr)
4
4
 
5
5
  `shelr` allows you to record/replay and publish your terminal on [http://shelr.tv](http://shelr.tv).
6
- [Code for Shelr.tv](https://github.com/antono/shelr.tv) service is also available on github.
6
+ [Code for Shelr.tv](https://github.com/shelr/shelr.tv) service is also available on github.
7
7
 
8
8
 
9
9
  ## Installation
@@ -14,7 +14,7 @@ You'll need ruby and rubygems installed.
14
14
 
15
15
  [sudo] gem install shelr
16
16
 
17
- On ubuntu older than precise you should also add following to your `.bashrc` or `.zshrc`
17
+ On ubuntu older than precise or debian older than wheezy you should also add following to your `.bashrc` or `.zshrc`
18
18
 
19
19
  export PATH=/var/lib/gems/1.8/bin:$PATH
20
20
 
@@ -22,9 +22,10 @@ See [shellcast](http://shelr.tv/records/4f49ea4ae557800001000004) for details :)
22
22
 
23
23
  ### From packages
24
24
 
25
- - [PPA](https://launchpad.net/~antono/+archive/shelr) for Debian/Ubuntu
25
+ - [PPA](https://launchpad.net/~antono/+archive/shelr) for Ubuntu
26
26
  - [PKGBUILD](https://aur.archlinux.org/packages.php?ID=56945) for Arch Linux
27
27
  - [EBUILD](http://overlays.gentoo.org/proj/sunrise/browser/app-misc/shelr) for Gentoo Linux
28
+ - [deb](http://mentors.debian.net/package/shelr) for Debian (Mentor Wanted)
28
29
 
29
30
  ## Watching other's records
30
31
 
@@ -60,18 +61,11 @@ If You use OS X - install `ttyrec` via homebrew and setup it as recording backen
60
61
  brew install ttyrec
61
62
  shelr backend ttyrec
62
63
 
63
- Also put the scriptreplay script somewhere in your PATH, e.g. /usr/local/bin
64
-
65
- curl https://raw.github.com/gist/2343833/0287752171cb045205e88664a32f63bf3a45565f/scriptreplay > /usr/local/bin/scriptreplay
66
- chmod +x /usr/local/bin/scriptreplay
67
-
68
64
  ## Copyright
69
65
 
70
66
  (Э) 2010, 2011, 2012 Antono Vasiljev and
71
- [contributors](https://github.com/antono/shelr/contributors).
67
+ [contributors](https://github.com/shelr/shelr/contributors).
72
68
 
73
69
  See LICENSE.txt for details.
74
70
 
75
- [![endorse](http://api.coderwall.com/antono/endorsecount.png)](http://coderwall.com/antono)
76
-
77
71
  [TV]: http://shelr.tv/ "Shellcasts from shell ninjas"
data/bin/shelr CHANGED
@@ -37,7 +37,7 @@ HELP = <<-HELP
37
37
 
38
38
  Setup:
39
39
 
40
- setup API_KEY - set your API key
40
+ setup API_KEY [API_URL] - set your API key and API site
41
41
  backend [ttyrec|script] - setup recorder backend
42
42
 
43
43
  Visit: http://shelr.tv/ for more info.
@@ -85,6 +85,9 @@ when 'push'
85
85
  puts "Select one..."
86
86
  end
87
87
  when 'setup'
88
+ if ARGV[2]
89
+ Shelr.api_url = ARGV[2]
90
+ end
88
91
  if ARGV[1]
89
92
  Shelr.api_key = ARGV[1]
90
93
  else
data/lib/shelr/player.rb CHANGED
@@ -44,7 +44,7 @@ module Shelr
44
44
  puts "=> Title: #{parts['title']}"
45
45
  puts "=> Description: #{parts['description']}t"
46
46
  Shelr.terminal.puts_line
47
- system "scriptreplay #{File.join(dir, 'timing')} #{File.join(dir, 'typescript')}"
47
+ scriptreplay File.join(dir, 'typescript'), File.join(dir, 'timing')
48
48
  Shelr.terminal.puts_line
49
49
  puts "=> Title: #{parts['title']}"
50
50
  puts "=> Description: #{parts['description']}t"
@@ -57,24 +57,31 @@ module Shelr
57
57
  end
58
58
 
59
59
  def play
60
- STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
61
- puts
60
+ Shelr.terminal.puts_line
62
61
  system(scriptreplay_cmd)
63
- puts
64
- STDOUT.puts "-=" * (Shelr.terminal.size[:width] / 2)
65
- end
66
-
67
- def scriptreplay(typescript, timing)
62
+ Shelr.terminal.puts_line
68
63
  end
69
64
 
70
65
  private
71
66
 
67
+ def scriptreplay(typescript_file, timing_file)
68
+ typescript = File.open(typescript_file)
69
+ timing = File.open(timing_file)
70
+ frames = timing.read.split("\n").map { |line| line.split(" ") }
71
+ typescript.gets # skip first line
72
+
73
+ frames.each do |usec,length|
74
+ sleep(usec.to_f)
75
+ print typescript.read(length.to_i)
76
+ end
77
+ end
78
+
72
79
  def record_file(name)
73
80
  File.join(Shelr.data_dir(@record_id), name)
74
81
  end
75
82
 
76
83
  def scriptreplay_cmd
77
- "scriptreplay #{record_file('timing')} #{record_file('typescript')}"
84
+ scriptreplay record_file('typescript'), record_file('timing')
78
85
  end
79
86
  end
80
87
  end
@@ -8,7 +8,7 @@ module Shelr
8
8
  @private = priv
9
9
  ensure_unlocked(id)
10
10
  with_exception_handler do
11
- uri = URI.parse(Shelr::API_URL + '/records')
11
+ uri = URI.parse(Shelr.api_url + '/records')
12
12
  params = { 'record' => prepare(id) }
13
13
  params.merge!({'api_key' => Shelr.api_key}) if api_key
14
14
  handle_response Net::HTTP.post_form(uri, params)
data/lib/shelr/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Shelr
2
- VERSION = '0.14.1'
2
+ VERSION = '0.15.0'
3
3
  end
data/lib/shelr.rb CHANGED
@@ -4,12 +4,12 @@ require 'json'
4
4
  module Shelr
5
5
 
6
6
  APP_NAME = 'shelr'
7
- API_URL = ENV['SHELR_LOCAL'] ? 'http://localhost:3000' : 'http://shelr.tv'
8
7
  XDG_DATA_DIR = ENV['XDG_DATA_HOME'] || File.join(ENV['HOME'], '.local', 'share')
9
8
  XDG_CONFIG_DIR = ENV['XDG_CONFIG_HOME'] || File.join(ENV['HOME'], '.config')
10
9
  DATA_DIR = File.join(XDG_DATA_DIR, APP_NAME)
11
10
  CONFIG_DIR = File.join(XDG_CONFIG_DIR, APP_NAME)
12
11
  API_KEY_CFG = File.join(CONFIG_DIR, 'api_key')
12
+ API_URL_CFG = File.join(CONFIG_DIR, 'api_url')
13
13
  BACKEND_CFG = File.join(CONFIG_DIR, 'backend')
14
14
 
15
15
  autoload :Recorder, 'shelr/recorder.rb'
@@ -30,6 +30,16 @@ module Shelr
30
30
  File.open(API_KEY_CFG, 'w+') { |f| f.puts(key.strip) }
31
31
  end
32
32
 
33
+ def api_url
34
+ return ENV['SHELR_LOCAL'] ? 'http://localhost:3000' : 'http://shelr.tv' unless File.exist?(API_URL_CFG)
35
+ @api_url ||= File.read(API_URL_CFG).strip
36
+ end
37
+
38
+ def api_url=(url)
39
+ ensure_config_dir_exist
40
+ File.open(API_URL_CFG, 'w+') { |f| f.puts(url.strip) }
41
+ end
42
+
33
43
  def backend
34
44
  @backend ||= File.exist?(BACKEND_CFG) ? File.read(BACKEND_CFG).strip : 'script'
35
45
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shelr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.15.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-04-16 00:00:00.000000000 Z
15
+ date: 2012-04-23 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: json
@@ -87,7 +87,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
87
  version: '0'
88
88
  segments:
89
89
  - 0
90
- hash: -1621112883674477295
90
+ hash: 2426833572865576322
91
91
  required_rubygems_version: !ruby/object:Gem::Requirement
92
92
  none: false
93
93
  requirements:
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: '0'
97
97
  segments:
98
98
  - 0
99
- hash: -1621112883674477295
99
+ hash: 2426833572865576322
100
100
  requirements: []
101
101
  rubyforge_project:
102
102
  rubygems_version: 1.8.21