homeseed 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzkyMjgwYTZhYmMzMGE4ZmY0YjM2NzEwZDVmODAxNTYxODhhYTBlOA==
4
+ MzE1ZmFjNzkxZjBhMGUwNjRkMmIyY2Y4ZTc2YzU3NzliZDcwYTg2Yg==
5
5
  data.tar.gz: !binary |-
6
- YzhmNzdmNThmMmRiNDMwNzNkMWQyYmEwODFmYzE0YTU4MjczM2Q5YQ==
6
+ MTUzNDcxYTVmNWJlOWUwNjdiODExYzUwZTE5ZTRiZTk0NGEwMTQ0Zg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTUxYWFiNmQxMTM2ZjQwNmJmNzAwMzQ4ZDA1MDU5NjY0ZDEyODlmODdkYTM1
10
- ZjExZDZiNGMzMWU0OWMyZGRjZmU1NjRjZGU1M2FlOTc3OGNmNmMwMjEzZDkx
11
- ZWUzZWVmNWE4M2E2NjExMjFjMWZjYzViNzg1NDc2ZTFkNjM2YTY=
9
+ MWIwZDIwYmZiMWQ5NTZjNzUxMzY0YTc2ZWNiYTIwMDdiMWY0NGM2ZGExMzEz
10
+ NDU4OTVhYWRlNDEwMmMxMzUxN2U5ZjI2MTlmNjRhMzRmYzQ2ZmQ4M2EyNjAw
11
+ NzI4NzhjOWM2ZTJlNDJlZTA0NDJlZjc2Zjk2MGU5YzhiYTk1Yjc=
12
12
  data.tar.gz: !binary |-
13
- NTAxZjE3M2FmMDRmNzI0N2UwMWQ5ZDJmNjY0YzQzMmFjZjFhZjQ1NzhhNmU1
14
- MDQwYWQzZGE3YjI0M2FjYzc0MGY1NWYwMzA0NzZjNzVkMmMxNDBmYjljNjBh
15
- Y2YwMDk2YmNiODA5MGE2NmUzZWRkMjE5ODRjZGE1ZGIwZTkxNjM=
13
+ ODBkMDBkZGYyNzMzMDNlYzkyMWZkYTQ1NjkzZGFmNGNiYjI4ZmVhMmI2MmNj
14
+ NTI2MzhjNzQwZjkyZGQ1M2IyYWVkODhkNjlmODA1ZTNhNjE4MDQ0ODk3Mzk3
15
+ MWNlZGYyNzYyODgxODE0NzlkMjAzYmQ0NTYyNGU0YTMxY2E3ZWY=
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Homeseed
2
2
 
3
- Bash command flattener for remote ssh exec
3
+ CLI for config/dot-profile deployments
4
+ also is a bash login session command flattener for remote ssh exec
4
5
 
5
6
  ## Installation
6
7
 
@@ -18,16 +19,45 @@ Or install it yourself as:
18
19
 
19
20
  ## Usage
20
21
 
21
- Examples
22
+ homeseed commands
23
+ ```
24
+ ➜ homeseed help
25
+ Commands:
26
+ homeseed exec [-e <command> or -f <files>] [-u <user>] -s, --servers=SERVERS # executes bash login session(s) on remote servers to run inline bash commands or bash commands from yml file
27
+ homeseed help [COMMAND] # Describe available commands or one specific command
28
+ homeseed plant [-u <user>] -s, --servers=SERVERS # installs homeshick and then dot profile based on localhost $HOME/.homeseed.yml
29
+ homeseed update [-u <user>] -s, --servers=SERVERS # updates dot profile based on localhost $HOME/.homeup.yml
30
+ ```
31
+
32
+ to install dot profile on csv server list run; uses $HOME/.homeseed.yml
33
+ ```
34
+ homeseed plant -s blackberry,blueberry,raspberry
35
+ ```
36
+
37
+ ex $HOME/.homeseed.yml
38
+ ```
39
+ homeshick:
40
+ clone:
41
+ - https://github.com/rbuchss/terminator.git --batch
42
+ - https://github.com/rbuchss/vim-4-eva.git --batch
43
+ link:
44
+ - terminator --force
45
+ - vim-4-eva --force
46
+ ```
22
47
 
23
- to install dot profile on server list run
48
+ to update run; uses $HOME/.homeup.yml
24
49
  ```
25
- homeseed plant -s blackberry,blueberry,raspberry -f config/shick-seed.yml
50
+ homeseed update -s soho
26
51
  ```
27
52
 
28
- to update run
53
+ ex $HOME/.homeup.yml
29
54
  ```
30
- homeseed plant -s soho -f config/shick-update.yml
55
+ homeshick:
56
+ pull:
57
+ - --force --batch
58
+ link:
59
+ - terminator --force
60
+ - vim-4-eva --force
31
61
  ```
32
62
 
33
63
  ## Contributing
data/bin/homeseed CHANGED
@@ -5,18 +5,39 @@ require 'thor'
5
5
 
6
6
  module Homeseed
7
7
  class HomeseedCliApp < Thor
8
- desc 'exec [-s <servers>] [-e <command> or -f <files>] [-u <user>]', ''
9
- option :servers, required: true, aliases: '-s', desc: 'ssh hostname(s)'
10
- option :command, aliases: '-e', desc: 'bash command to exec'
11
- option :files, aliases: '-f', desc: 'yml command file(s) to exec'
12
- option :user, aliases: '-u', desc: 'ssh username', default: ENV['USER']
13
- method_option :has_password, aliases: '-p', type: :boolean, default: false, desc: 'has password; no ssh keys'
8
+ desc 'exec [-e <command> or -f <files>] [-u <user>]',
9
+ 'executes bash login session(s) on remote servers to run inline bash commands or bash commands from yml file'
10
+ method_option :servers, required: true, aliases: '-s', desc: 'ssh hostname(s); csv if multiple'
11
+ method_option :command, aliases: '-e', desc: 'bash command to exec'
12
+ method_option :files, aliases: '-f', desc: 'yml bash command file(s) to exec'
13
+ method_option :user, aliases: '-u', desc: 'ssh username', default: ENV['USER']
14
14
  def exec
15
15
  connection = Homeseed::Connection.new options
16
16
  connection.ssh_exec
17
17
  end
18
18
 
19
+ desc 'plant [-u <user>]',
20
+ 'installs homeshick and then dot profile based on localhost $HOME/.homeseed.yml'
21
+ method_option :servers, required: true, aliases: '-s', desc: 'ssh hostname(s); csv if multiple'
22
+ method_option :user, aliases: '-u', desc: 'ssh username', default: ENV['USER']
19
23
  def plant
24
+ config_files = %w(homeshick-prep.yml homeshick-install.yml homeshick-source.yml)
25
+ files = config_files.map { |file| File.expand_path("../../config/#{file}", __FILE__) }
26
+ files << File.expand_path('.homeseed.yml', ENV['HOME'])
27
+ connection = Homeseed::Connection.new options.merge(files: files.join(','))
28
+ connection.ssh_exec
29
+ end
30
+
31
+ desc 'update [-u <user>]',
32
+ 'updates dot profile based on localhost $HOME/.homeup.yml'
33
+ method_option :servers, required: true, aliases: '-s', desc: 'ssh hostname(s); csv if multiple'
34
+ method_option :user, aliases: '-u', desc: 'ssh username', default: ENV['USER']
35
+ def update
36
+ config_files = %w(homeshick-source.yml)
37
+ files = config_files.map { |file| File.expand_path("../../config/#{file}", __FILE__) }
38
+ files << File.expand_path('.homeup.yml', ENV['HOME'])
39
+ connection = Homeseed::Connection.new options.merge(files: files.join(','))
40
+ connection.ssh_exec
20
41
  end
21
42
  end
22
43
  HomeseedCliApp.start
@@ -0,0 +1,3 @@
1
+ git:
2
+ clone:
3
+ - git://github.com/andsens/homeshick.git $HOME/.homesick/repos/homeshick
@@ -0,0 +1,3 @@
1
+ rm:
2
+ - -rf $HOME/.homesick/repos
3
+ - -rf $HOME/git
@@ -0,0 +1,2 @@
1
+ source:
2
+ - "$HOME/.homesick/repos/homeshick/homeshick.sh"
@@ -1,3 +1,3 @@
1
1
  module Homeseed
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
data/lib/homeseed.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require "homeseed/version"
2
2
  require 'logger'
3
3
  require 'net/ssh'
4
- require 'highline/import'
5
4
  require 'yaml'
6
5
 
7
6
  module Homeseed
@@ -15,10 +14,10 @@ module Homeseed
15
14
  end
16
15
 
17
16
  def initialize(params={})
18
- raise unless params[:servers] and (params[:files] or params[:command]) and params[:user]
17
+ raise unless params[:servers] and (params[:command] or params[:files]) and params[:user]
19
18
  @servers = params[:servers].split(',')
20
19
  @user = params[:user]
21
- @has_password = params[:password]
20
+ @password = params[:password] || ''
22
21
 
23
22
  if params[:command]
24
23
  @flat_commands = params[:command]
@@ -52,27 +51,26 @@ module Homeseed
52
51
  Hash[@servers.map do |server|
53
52
  logger.info "ssh #{@user}@#{server} exec: #{@flat_commands}"
54
53
 
55
- password = @has_password ? ask("Enter password: ") { |q| q.echo = "*" } : ''
56
54
  exit_status = 0
57
- Net::SSH.start(server, @user, password: password) do |ssh|
55
+ Net::SSH.start(server, @user, password: @password) do |ssh|
58
56
  ssh.open_channel do |channel|
59
- channel.exec("bash -l") do |ch, success|
57
+ channel.exec("bash -l") do |ch,success|
60
58
  ch.send_data "#{@flat_commands}\n"
61
- ch.on_data do |c, data|
59
+ ch.on_data do |c,data|
62
60
  data_lines = data.split(/[\r,\n]/)
63
61
  data_lines.each do |data_line|
64
62
  logger.info data_line unless data_line == ''
65
63
  end
66
64
  end
67
65
 
68
- ch.on_extended_data do |c, type, data|
66
+ ch.on_extended_data do |c,type,data|
69
67
  data_lines = data.split(/[\r,\n]/)
70
68
  data_lines.each do |data_line|
71
69
  logger.error data_line unless data_line == ''
72
70
  end
73
71
  end
74
72
 
75
- ch.on_request("exit-status") do |ch,data|
73
+ ch.on_request("exit-status") do |c,data|
76
74
  exit_status = data.read_long
77
75
  end
78
76
  ch.send_data "exit\n"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: homeseed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - rbuchss
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-10 00:00:00.000000000 Z
11
+ date: 2014-07-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,9 +94,10 @@ files:
94
94
  - README.md
95
95
  - Rakefile
96
96
  - bin/homeseed
97
- - config/setup-linux.yml
98
- - config/shick-seed.yml
99
- - config/shick-update.yml
97
+ - config/homeshick-install.yml
98
+ - config/homeshick-prep.yml
99
+ - config/homeshick-source.yml
100
+ - config/rbuchss-setup-linux.yml
100
101
  - homeseed.gemspec
101
102
  - lib/homeseed.rb
102
103
  - lib/homeseed/version.rb
@@ -1,14 +0,0 @@
1
- source:
2
- - "$HOME/.homesick/repos/homeshick/homeshick.sh"
3
- homeshick:
4
- clone:
5
- - https://github.com/git/git.git --batch
6
- - https://github.com/rbuchss/terminator.git --batch
7
- - https://github.com/rbuchss/vim-4-eva.git --batch
8
- link:
9
- - terminator --force
10
- - vim-4-eva --force
11
- rm:
12
- - -rf $HOME/git
13
- ln:
14
- - -s -f $HOME/.homesick/repos/git $HOME/git
@@ -1,8 +0,0 @@
1
- source:
2
- - "$HOME/.homesick/repos/homeshick/homeshick.sh"
3
- homeshick:
4
- pull:
5
- - --force --batch
6
- link:
7
- - terminator --force
8
- - vim-4-eva --force