homeseed 0.0.6 → 0.0.7

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
- MzE1ZmFjNzkxZjBhMGUwNjRkMmIyY2Y4ZTc2YzU3NzliZDcwYTg2Yg==
4
+ MjE5MjNlYzQzOWQyNzM1NmQ5MmM5MjhhMDMyYTM0MTRhZTE3Y2M1NA==
5
5
  data.tar.gz: !binary |-
6
- MTUzNDcxYTVmNWJlOWUwNjdiODExYzUwZTE5ZTRiZTk0NGEwMTQ0Zg==
6
+ NGE2YjFjY2M2NGRmMjg1YzVmOTdkZTQ1ZGRkNjM1MmMxYmIzYTZiOA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MWIwZDIwYmZiMWQ5NTZjNzUxMzY0YTc2ZWNiYTIwMDdiMWY0NGM2ZGExMzEz
10
- NDU4OTVhYWRlNDEwMmMxMzUxN2U5ZjI2MTlmNjRhMzRmYzQ2ZmQ4M2EyNjAw
11
- NzI4NzhjOWM2ZTJlNDJlZTA0NDJlZjc2Zjk2MGU5YzhiYTk1Yjc=
9
+ ZTVmNGM5YzZhNjFiMmZjODZhYTgwYzc3YjYxM2FjMTRkM2EwM2FiODUwMTc1
10
+ NjUzMDA4NDQxMjM2NWQ0NzhhOGJjMmFlOTIyOTk4NGVkZTc0OWYxYjAzYzI1
11
+ MGNjOWRhNTk2NGM1OGIwYjUyMjU3NTA4ZjQzZWY1NTFhMzZmY2Q=
12
12
  data.tar.gz: !binary |-
13
- ODBkMDBkZGYyNzMzMDNlYzkyMWZkYTQ1NjkzZGFmNGNiYjI4ZmVhMmI2MmNj
14
- NTI2MzhjNzQwZjkyZGQ1M2IyYWVkODhkNjlmODA1ZTNhNjE4MDQ0ODk3Mzk3
15
- MWNlZGYyNzYyODgxODE0NzlkMjAzYmQ0NTYyNGU0YTMxY2E3ZWY=
13
+ N2E1ZjE2OWJjNjliNWU2ODYyOTk3NTRiNmFkZjllMDlhZGJhMjcwODhlZmQ1
14
+ Y2M3NzcwMzQ1MTY2OTg1ZWZlMDJmOTg1NGE4OTQ0YjcyZDBjZmY4YmFjNTY5
15
+ ZDVlMTY3YTU5ODI2OTlkMTI0MDk3MzFkM2VhYmVjZjZhOTczNDc=
data/bin/homeseed CHANGED
@@ -39,6 +39,17 @@ module Homeseed
39
39
  connection = Homeseed::Connection.new options.merge(files: files.join(','))
40
40
  connection.ssh_exec
41
41
  end
42
+
43
+ desc 'upload [-f <upload_files>] [-p <remote_path>] [-u <user>]',
44
+ 'scp uploads file(s) to remote servers'
45
+ method_option :servers, required: true, aliases: '-s', desc: 'ssh hostname(s); csv if multiple'
46
+ method_option :upload_files, aliases: '-f', desc: 'file(s) to upload to server(s)'
47
+ method_option :remote_path, aliases: '-p', desc: 'path to upload to server(s)'
48
+ method_option :user, aliases: '-u', desc: 'ssh username', default: ENV['USER']
49
+ def upload
50
+ connection = Homeseed::Connection.new options
51
+ connection.scp_upload
52
+ end
42
53
  end
43
54
  HomeseedCliApp.start
44
55
  end
data/homeseed.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake", '~> 10.3'
23
- spec.add_dependency 'net-ssh', '~> 2.9'
24
- spec.add_dependency 'highline', '~> 1.6'
23
+ spec.add_dependency 'net-ssh', '~> 2.6'
24
+ spec.add_dependency 'net-scp', '~> 1.1'
25
25
  spec.add_dependency 'thor', '~> 0.19'
26
26
  end
@@ -1,3 +1,3 @@
1
1
  module Homeseed
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
data/lib/homeseed.rb CHANGED
@@ -1,12 +1,18 @@
1
1
  require "homeseed/version"
2
2
  require 'logger'
3
3
  require 'net/ssh'
4
+ require 'net/scp'
4
5
  require 'yaml'
5
6
 
6
7
  module Homeseed
7
8
  class Connection
8
9
  def self.logger
9
10
  @logger ||= Logger.new(STDOUT)
11
+ original_formatter = Logger::Formatter.new
12
+ @logger.formatter = proc { |severity, datetime, progname, msg|
13
+ original_formatter.call(severity, datetime, progname, msg.dump)
14
+ }
15
+ @logger
10
16
  end
11
17
 
12
18
  def logger
@@ -14,14 +20,14 @@ module Homeseed
14
20
  end
15
21
 
16
22
  def initialize(params={})
17
- raise unless params[:servers] and (params[:command] or params[:files]) and params[:user]
23
+ raise 'servers and/or user not specified' unless params[:servers] and params[:user]
18
24
  @servers = params[:servers].split(',')
19
25
  @user = params[:user]
20
26
  @password = params[:password] || ''
21
27
 
22
28
  if params[:command]
23
29
  @flat_commands = params[:command]
24
- else
30
+ elsif params[:files]
25
31
  @files = params[:files].split(',')
26
32
  @flat_commands = ''
27
33
  @files.each do |file|
@@ -30,6 +36,11 @@ module Homeseed
30
36
  self.process_hash(commands, '', yml_commands)
31
37
  @flat_commands += commands.join('; ') + ';'
32
38
  end
39
+ elsif params[:upload_files]
40
+ @remote_path = params[:remote_path] || '/tmp/'
41
+ @upload_files = params[:upload_files].split(',')
42
+ else
43
+ raise 'ERROR command, files or upload_files not specified'
33
44
  end
34
45
  end
35
46
 
@@ -80,5 +91,16 @@ module Homeseed
80
91
  [server, { exit_status: exit_status }]
81
92
  end]
82
93
  end
94
+
95
+ def scp_upload
96
+ @servers.each do |server|
97
+ @upload_files.each do |upload_file|
98
+ logger.info "scp #{upload_file} #{@user}@#{server}:#{@remote_path}"
99
+ Net::SCP.start(server, @user) do |scp|
100
+ scp.upload!(upload_file, @remote_path)
101
+ end
102
+ end
103
+ end
104
+ end
83
105
  end
84
106
  end
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.6
4
+ version: 0.0.7
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-11 00:00:00.000000000 Z
11
+ date: 2014-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: '2.9'
47
+ version: '2.6'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '2.9'
54
+ version: '2.6'
55
55
  - !ruby/object:Gem::Dependency
56
- name: highline
56
+ name: net-scp
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '1.6'
61
+ version: '1.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: '1.6'
68
+ version: '1.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: thor
71
71
  requirement: !ruby/object:Gem::Requirement