eshell 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/bin/eshell +60 -0
  2. metadata +78 -0
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ require 'nokogiri'
3
+ require 'open-uri'
4
+ require 'uri'
5
+ require 'terminal-table'
6
+
7
+ url = 'http://explainshell.com/explain?cmd='
8
+
9
+ def get_content(url)
10
+ rows = []
11
+ index = {}
12
+ cmd = []
13
+ color = [ "\e[0;96;49m",
14
+ "\e[0;95;49m",
15
+ "\e[0;94;49m",
16
+ "\e[0;92;49m",
17
+ "\e[0;91;49m",
18
+ "\e[0;93;49m",
19
+ "\e[0;36;49m",
20
+ "\e[0;35;49m",
21
+ "\e[0;34;49m",
22
+ "\e[0;32;49m",
23
+ "\e[0;31;49m",
24
+ "\e[0;33;49m"
25
+ ]
26
+ begin
27
+ doc = Nokogiri::HTML(open(url).read.strip)
28
+ abort "\e[0;91;49mMissing man page, abort!\e[0m" if doc.content =~ /missing man page/
29
+ i = 0
30
+ doc.xpath('//span').each do |l|
31
+ if l.get_attribute("helpref") =~ /^help*/
32
+ index[l.get_attribute("helpref")] = "#{color[i%12]}#{l.content}\e[0m"
33
+ cmd << "#{color[i%12]}#{l.content}\e[0m"
34
+ i += 1
35
+ end
36
+ end
37
+ doc.xpath('//pre').each do |l|
38
+ if l.get_attribute('id') =~ /^(help*)/
39
+ next if l.content =~ /Pipelines/
40
+ rows << [index[l.get_attribute('id')]]
41
+ rows << [l.content]
42
+ rows << :separator
43
+ end
44
+ end
45
+ rows.pop
46
+ table = Terminal::Table.new :rows => rows
47
+ puts ""
48
+ puts cmd.join(" ")
49
+ puts table
50
+ rescue => err
51
+ puts err
52
+ return {}
53
+ end
54
+ end
55
+
56
+
57
+ #run
58
+ print "cmd>> "
59
+ input = URI::escape(gets.strip).gsub(/&/, "%26")
60
+ get_content(url+input)
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eshell
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jing Yuan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: nokogiri
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: terminal-table
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ description: explain bash commands, get content from explainshell.com
47
+ email: jingyuan@xiaomi.com
48
+ executables:
49
+ - eshell
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - bin/eshell
54
+ homepage: http://noops.me/?p=1100
55
+ licenses: []
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - bin
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project:
74
+ rubygems_version: 1.8.25
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: explain your bash commands
78
+ test_files: []