hss 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/hss +49 -0
  3. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d59ba79bdfc467f15a21b8a54d515bf1ee363750
4
+ data.tar.gz: 2f5c8218bfb2c818927a9a4c685c8e67effacd06
5
+ SHA512:
6
+ metadata.gz: ee1f1f63499e8cee3ef84212dd75810fe26f4d90cae9b7ecc962abd71b3a93248d387347c802347dc4ce26a3e19cfbaa7f74210b07bc0212189e29880a33f2b7
7
+ data.tar.gz: 8b7c500544393c80cea108144e8ef8227f07fa8add8165c0c97f2a48cc01173dca093e5b2a5f2d7cdee5307a283ac6338cbc01803bbf87c2d0e43eff5a3e1906
data/hss ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'yaml'
4
+ require 'pathname'
5
+ require 'erb'
6
+
7
+ def expand(input)
8
+ Config['expansions'].each { |long, shorts| return long if shorts.include? input }
9
+ raise NameError, "No expansion found for: #{input}"
10
+ end
11
+
12
+ def shortcut(input)
13
+ return Config['shortcuts'][input]
14
+ end
15
+
16
+ def command(input)
17
+ return IO.popen(input) { |cmd| cmd.read }
18
+ end
19
+
20
+ possible_paths = [
21
+ File.expand_path(ENV['HSS_CONFIG'].to_s),
22
+ File.expand_path('~/.hss.yml'),
23
+ Pathname.new(__FILE__).realpath.split()[0].to_s + '/config.yml',
24
+ ]
25
+ possible_paths = possible_paths.select { |path| not File.directory? path and File.exists? path }
26
+ if possible_paths.empty?
27
+ puts 'No config file found'
28
+ exit 1
29
+ end
30
+
31
+ Config = open(possible_paths[0]) { |file| YAML.load(file.read) }
32
+ Input = ARGV.pop
33
+ Args = ARGV.join(' ')
34
+
35
+ if Input.nil? or Input == 'help'
36
+ puts 'How to use:'
37
+ puts '(what you type) -> (where it takes you)'
38
+ Config['patterns'].each { |pattern| puts pattern['example'] }
39
+ else
40
+ Config['patterns'].each do |pattern|
41
+ next unless Input.match(pattern['short'])
42
+ long_form = ERB.new('<%= "' + pattern['long'] + '" %>').result
43
+ exec "ssh #{Args} #{long_form}"
44
+ end
45
+ end
46
+
47
+ puts "Couldn't find a matching host for: #{Input}"
48
+ exit 1
49
+
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hss
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Les Aker
8
+ autorequire:
9
+ bindir: .
10
+ cert_chain: []
11
+ date: 2013-08-09 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Regex-based SSH shortcut tool
14
+ email: me@lesaker.org
15
+ executables:
16
+ - hss
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ./hss
21
+ homepage: https://github.com/akerl/hss
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.0.3
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: SSH helper
45
+ test_files: []