eshell 0.0.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.
- data/bin/eshell +60 -0
- metadata +78 -0
data/bin/eshell
ADDED
@@ -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: []
|