homeseed 0.0.5 → 0.0.6

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.
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