eggsh 0.1.0 → 0.1.1

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 (5) hide show
  1. data/VERSION +1 -1
  2. data/bin/eggsh +2 -2
  3. data/eggsh.gemspec +1 -1
  4. data/lib/shell.rb +28 -19
  5. metadata +3 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/bin/eggsh CHANGED
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require File.dirname(__FILE__) + '/../lib/runner'
4
-
5
3
  if RUBY_VERSION < '1.9'
6
4
  puts 'Ruby interpreter version 1.9 is needed!'
7
5
  exit
8
6
  end
9
7
 
8
+ require File.dirname(__FILE__) + '/../lib/runner'
9
+
10
10
  # Store the state of the terminal
11
11
  stty_save = `stty -g`.chomp
12
12
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{eggsh}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andrew Liu"]
@@ -8,28 +8,13 @@ module Eggsh
8
8
  SHELL_CMD = {'cd' => :cd, 'pwd' => :pwd, 'fullpwd' => :full_pwd}
9
9
 
10
10
  def initialize
11
+ @env = ENV.to_hash
11
12
  @pwd = ENV['PWD']
12
13
  @translator = Eggsh::Translator.new
13
14
  end
14
15
 
15
- def pwd arg
16
- short = @pwd.split['/']
17
- (0...short.size).each {|i| short[i] = short[i][0]}
18
- puts short.join '/'
19
- end
20
-
21
- def full_pwd arg
22
- puts @pwd
23
- end
24
-
25
- def cd arg
26
- new_path = @pwd + arg.split(' ')[1]
27
- if File.directory? new_path
28
- @pwd = new_path
29
- ENV['PATH'] = new_path
30
- else
31
- puts 'Invalid path'
32
- end
16
+ def env
17
+ @env
33
18
  end
34
19
 
35
20
  def exec line
@@ -44,12 +29,36 @@ module Eggsh
44
29
  if line != '' && SHELL_CMD.has_key?(line.split(' ')[0])
45
30
  send(SHELL_CMD[line.split(' ')[0]], line)
46
31
  else
47
- system @translator.translate(line).gsub("\n", ' ')
32
+ begin
33
+ spawn(@env, @translator.translate(line).gsub("\n", ' '), :chdir => @pwd)
34
+ rescue Errno::ENOENT => e
35
+ puts e.display
36
+ end
48
37
  end
49
38
  #rescue
50
39
  # puts 'Syntax error'
51
40
  end
52
41
  end
42
+
43
+ private
44
+ def pwd arg
45
+ short = @pwd.split '/'
46
+ (0...(short.size - 1)).each {|i| short[i] = short[i][0]}
47
+ puts short.join '/'
48
+ end
49
+
50
+ def full_pwd arg
51
+ puts @pwd
52
+ end
53
+
54
+ def cd arg
55
+ new_path = File.expand_path arg.split(' ')[1], @pwd
56
+ if File.directory? new_path
57
+ @pwd = new_path
58
+ else
59
+ puts "cd: Invalid path #{arg.split(' ')[1]}"
60
+ end
61
+ end
53
62
  end
54
63
  end
55
64
 
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 0
9
- version: 0.1.0
8
+ - 1
9
+ version: 0.1.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Andrew Liu
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - ">="
128
128
  - !ruby/object:Gem::Version
129
- hash: -530874701
129
+ hash: 170263165
130
130
  segments:
131
131
  - 0
132
132
  version: "0"