conch 0.0.8 → 0.0.9

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.
Files changed (6) hide show
  1. data/Gemfile +2 -1
  2. data/conch.gemspec +1 -1
  3. data/lib/client.rb +12 -30
  4. data/lib/cmd.rb +46 -0
  5. data/lib/conch.rb +2 -3
  6. metadata +3 -2
data/Gemfile CHANGED
@@ -2,4 +2,5 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'em-websocket', '>= 0.5'
5
+ gem 'em-websocket', '>= 0.5'
6
+ gem 'json'
data/conch.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'conch'
3
- s.version = '0.0.8'
3
+ s.version = '0.0.9'
4
4
  s.summary = 'shell in the browser'
5
5
  s.authors = ['limadelic']
6
6
  s.email = 'limadelic@gmail.com'
data/lib/client.rb CHANGED
@@ -1,36 +1,18 @@
1
1
  require 'em-websocket'
2
+ require_relative 'cmd'
2
3
 
3
- module Client
4
+ include Cmd
4
5
 
5
- def self.run socket, cmd
6
- if respond_to? cmd
7
- send cmd
8
- else
9
- shell socket, cmd
10
- end
11
- end
12
-
13
- def self.exit
14
- exit! true
15
- end
16
-
17
- def self.shell socket, cmd
18
- socket.send `#{cmd}`
19
- rescue
20
- socket.send ''
21
- end
6
+ opts = {
7
+ host: 'localhost',
8
+ port: 8888
9
+ }
22
10
 
23
- def self.listen_on socket
24
- socket.onmessage { |cmd| run socket, cmd }
11
+ EM.run do
12
+ EM::WebSocket.run opts do |socket|
13
+ @socket = socket
14
+ @socket.onopen { socket.send Dir.pwd }
15
+ @socket.onmessage { |cmd| run cmd }
25
16
  end
26
-
27
- def self.start
28
- EM.run do
29
- EM::WebSocket.run(
30
- host: 'localhost',
31
- port: 8888
32
- ) { |socket| listen_on socket }
33
- end
34
- end
35
-
36
17
  end
18
+
data/lib/cmd.rb ADDED
@@ -0,0 +1,46 @@
1
+ require 'json'
2
+
3
+ module Cmd
4
+
5
+ COMMANDS = ['exit', 'cd']
6
+
7
+ def run cmd
8
+ parse cmd
9
+ custom_cmd or
10
+ @socket.send shell
11
+ end
12
+
13
+ def shell
14
+ Dir.chdir(@cwd) { `#{@cmd} 2>&1` }
15
+ end
16
+
17
+ def parse cmd
18
+ cmd = JSON.parse cmd
19
+ @cmd = cmd['cmd']
20
+ @cwd = cmd['cwd']
21
+ @args = @cmd.split(' ')
22
+ @app = @args.shift
23
+ end
24
+
25
+ def custom_cmd
26
+ return unless COMMANDS.include? @app
27
+ send @app
28
+ end
29
+
30
+ def exit
31
+ exit! true
32
+ end
33
+
34
+ def cd
35
+ Dir.chdir(@cwd) do
36
+ Dir.chdir(@args[0]) do
37
+ @socket.send Dir.pwd
38
+ end
39
+ end
40
+ rescue
41
+ @socket.send @cwd
42
+ ensure
43
+ return false
44
+ end
45
+
46
+ end
data/lib/conch.rb CHANGED
@@ -1,8 +1,7 @@
1
- require_relative 'client'
2
-
3
1
  home = 'http://www.c0nch.com'
4
2
 
5
3
  `start chrome --app=#{home}`
6
- Client.start
4
+ require_relative 'client'
5
+
7
6
 
8
7
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-28 00:00:00.000000000 Z
12
+ date: 2013-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: em-websocket
@@ -73,6 +73,7 @@ files:
73
73
  - bin/conch
74
74
  - conch.gemspec
75
75
  - lib/client.rb
76
+ - lib/cmd.rb
76
77
  - lib/conch.rb
77
78
  homepage: http://www.c0nch.com
78
79
  licenses: