homeseed 0.0.6 → 0.0.7

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