conch 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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: