hem 1.0.1.beta1 → 1.0.1.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/hem/asset_applicator.rb +22 -3
- data/lib/hem/asset_applicators/files.rb +2 -2
- data/lib/hem/asset_applicators/sqldump.rb +9 -9
- data/lib/hem/helper/command.rb +48 -0
- data/lib/hem/helper/vm_command.rb +9 -16
- data/lib/hem/lib/host_check/vagrant.rb +2 -0
- data/lib/hem/lib/local/command.rb +62 -0
- data/lib/hem/lib/vm/command.rb +2 -2
- data/lib/hem/tasks/assets.rb +17 -3
- data/lib/hem/tasks/deps.rb +1 -1
- data/lib/hem/tasks/magento.rb +13 -13
- data/lib/hem/tasks/tools.rb +1 -1
- data/lib/hem/tasks/vm.rb +2 -2
- data/lib/hem/version.rb +1 -1
- data/lib/hem.rb +3 -0
- data/spec/hem/helpers/{vm_command_spec.rb → command_spec.rb} +16 -29
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a44495fc9c4a95ad2036264a9fbe126f0db119ca
|
4
|
+
data.tar.gz: d52eb3e5b8abdeb52a5db03c3704c1d6e5f4804e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b028dd6c290e07aa872660eecd4c8f5091f8e49829bbe8a52b947a03a7db66476cff4ab8bfc18c7ef0ad23b3383f30643280ea797523d0598a883b87618ecb33
|
7
|
+
data.tar.gz: eed7903da8c98062cefe33c7a0b5fd21b6eadb37a6cf6e11bdf8d051df56922415d34cfde2c0a9a59c8a309769554bf848e20390b8c5d3e97ead0dbf15db4491
|
data/Gemfile.lock
CHANGED
data/lib/hem/asset_applicator.rb
CHANGED
@@ -22,12 +22,31 @@ module Hem
|
|
22
22
|
private
|
23
23
|
|
24
24
|
# Thin wrapper over a hash to provide a means to "register" asset applicators
|
25
|
-
class AssetApplicatorRegistry <
|
25
|
+
class AssetApplicatorRegistry < Array
|
26
26
|
# Register a new asset applicator
|
27
|
+
# @param [String] The name of the applicator
|
27
28
|
# @param [Regexp] Pattern to match against asset filename.
|
28
29
|
# @yield The block to be executed when an asset matches the pattern.
|
29
|
-
def register pattern, &block
|
30
|
-
self
|
30
|
+
def register name, pattern, &block
|
31
|
+
self << AssetApplicator.new(name, pattern, block)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class AssetApplicator
|
36
|
+
attr_reader :name
|
37
|
+
|
38
|
+
def initialize(name, pattern, block)
|
39
|
+
@name = name
|
40
|
+
@pattern = pattern
|
41
|
+
@block = block
|
42
|
+
end
|
43
|
+
|
44
|
+
def matches?(file)
|
45
|
+
@pattern.match(file)
|
46
|
+
end
|
47
|
+
|
48
|
+
def call(file, opts = {})
|
49
|
+
@block.call file, opts
|
31
50
|
end
|
32
51
|
end
|
33
52
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Built in applicators
|
2
|
-
Hem.asset_applicators.register /.*\.files\.(tgz|tar\.gz|tar\.bz2)/ do |file|
|
2
|
+
Hem.asset_applicators.register 'files', /.*\.files\.(tgz|tar\.gz|tar\.bz2)/ do |file, _|
|
3
3
|
Hem.ui.title "Applying file dump (#{file})"
|
4
|
-
|
4
|
+
run_command "tar -xvf #{file.shellescape}"
|
5
5
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Built in applicators
|
2
|
-
Hem.asset_applicators.register /.*\.sql\.gz/ do |file|
|
2
|
+
Hem.asset_applicators.register 'sqldump', /.*\.sql\.gz/ do |file, opts|
|
3
3
|
matches = file.match(/^([^\.]+).*\.sql\.gz/)
|
4
4
|
db = File.basename(matches[1])
|
5
5
|
|
@@ -9,27 +9,27 @@ Hem.asset_applicators.register /.*\.sql\.gz/ do |file|
|
|
9
9
|
}
|
10
10
|
|
11
11
|
begin
|
12
|
-
result = shell(
|
12
|
+
result = shell(create_mysql_command(:db => db).pipe('SHOW TABLES; SELECT FOUND_ROWS();', :on => :vm), :capture => true)
|
13
13
|
status[:db_exists] = true
|
14
14
|
status[:db_has_tables] = !(result.split("\n").last.strip == '0')
|
15
15
|
rescue Hem::ExternalCommandError
|
16
16
|
# This will fail later with a more useful error message
|
17
17
|
end
|
18
18
|
|
19
|
-
if status[:db_exists] && status[:db_has_tables]
|
20
|
-
|
19
|
+
if status[:db_exists] && status[:db_has_tables] && !opts[:force]
|
20
|
+
Hem.ui.warning "Already applied (#{file})"
|
21
21
|
next
|
22
22
|
end
|
23
23
|
|
24
|
-
if status[:db_exists] && !status[:db_has_tables]
|
25
|
-
# Db exists but is empty
|
26
|
-
shell(
|
24
|
+
if status[:db_exists] && (!status[:db_has_tables] || opts[:force])
|
25
|
+
# Db exists but is empty, or is being reapplied
|
26
|
+
shell(create_mysql_command(:mysql => 'mysqladmin', :append => " --force drop #{db.shellescape}"))
|
27
27
|
end
|
28
28
|
|
29
29
|
begin
|
30
30
|
Hem.ui.title "Applying mysqldump (#{file})"
|
31
|
-
shell(
|
32
|
-
shell(
|
31
|
+
shell(create_mysql_command(:mysql => 'mysqladmin', :append => " create #{db.shellescape}"))
|
32
|
+
shell(create_mysql_command(:auto_echo => false, :db => db) < "zcat #{file.shellescape}")
|
33
33
|
rescue Hem::ExternalCommandError => exception
|
34
34
|
Hem.ui.error "Could not apply #{file} due to the following error:\n"
|
35
35
|
Hem.ui.error File.read(exception.output.path).strip
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Hem
|
2
|
+
module Helper
|
3
|
+
def get_run_environment
|
4
|
+
[
|
5
|
+
ENV['HEM_RUN_ENV'],
|
6
|
+
Hem.project_config.run_environment,
|
7
|
+
Hem.user_config.run_environment,
|
8
|
+
'vm'
|
9
|
+
].each do |env|
|
10
|
+
return env unless env.nil?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def run_command command, opts = {}
|
15
|
+
create_command(command, opts).run
|
16
|
+
end
|
17
|
+
|
18
|
+
def create_mysql_command opts = {}
|
19
|
+
opts = {
|
20
|
+
:auto_echo => true,
|
21
|
+
:db => "",
|
22
|
+
:user => maybe(Hem.project_config.mysql.username) || "",
|
23
|
+
:pass => maybe(Hem.project_config.mysql.password) || "",
|
24
|
+
:mysql => 'mysql'
|
25
|
+
}.merge(opts)
|
26
|
+
|
27
|
+
opts[:user] = "-u#{opts[:user].shellescape}" unless opts[:user].empty?
|
28
|
+
opts[:pass] = "-p#{opts[:pass].shellescape}" unless opts[:pass].empty?
|
29
|
+
opts[:db] = opts[:db].shellescape unless opts[:db].empty?
|
30
|
+
|
31
|
+
create_command "#{opts[:mysql]} #{opts[:user]} #{opts[:pass]} #{opts[:db]}".strip, opts
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_command command = nil, opts = {}
|
35
|
+
run_env = opts[:run_environment] || get_run_environment
|
36
|
+
case run_env
|
37
|
+
when 'vm'
|
38
|
+
::Hem::Lib::Vm::Command.new command, opts
|
39
|
+
when 'local'
|
40
|
+
::Hem::Lib::Local::Command.new command, opts
|
41
|
+
else
|
42
|
+
raise Hem::InvalidCommandOrOpt.new "run_environment #{run_env}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
include Hem::Helper
|
@@ -1,28 +1,21 @@
|
|
1
1
|
module Hem
|
2
2
|
module Helper
|
3
|
-
|
4
3
|
def vm_shell command, opts = {}
|
5
|
-
|
4
|
+
Hem.ui.warning "Using vm_shell is deprecated and will be removed in a future release. Please use run_command instead"
|
5
|
+
opts['run_environment'] = 'vm'
|
6
|
+
run_command command, opts
|
6
7
|
end
|
7
8
|
|
8
9
|
def vm_mysql opts = {}
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
:user => maybe(Hem.project_config.mysql.username) || "",
|
13
|
-
:pass => maybe(Hem.project_config.mysql.password) || "",
|
14
|
-
:mysql => 'mysql'
|
15
|
-
}.merge(opts)
|
16
|
-
|
17
|
-
opts[:user] = "-u#{opts[:user].shellescape}" unless opts[:user].empty?
|
18
|
-
opts[:pass] = "-p#{opts[:pass].shellescape}" unless opts[:pass].empty?
|
19
|
-
opts[:db] = opts[:db].shellescape unless opts[:db].empty?
|
20
|
-
|
21
|
-
::Hem::Lib::Vm::Command.new "#{opts[:mysql]} #{opts[:user]} #{opts[:pass]} #{opts[:db]}".strip, opts
|
10
|
+
Hem.ui.warning "Using vm_mysql is deprecated and will be removed in a future release. Please use create_mysql_command instead"
|
11
|
+
opts['run_environment'] = 'vm'
|
12
|
+
create_mysql_command opts
|
22
13
|
end
|
23
14
|
|
24
15
|
def vm_command command = nil, opts = {}
|
25
|
-
|
16
|
+
Hem.ui.warning "Using vm_command is deprecated and will be removed in a future release. Please use create_command instead"
|
17
|
+
opts['run_environment'] = 'vm'
|
18
|
+
create_command command, opts
|
26
19
|
end
|
27
20
|
end
|
28
21
|
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Hem
|
2
|
+
module Lib
|
3
|
+
module Local
|
4
|
+
class Command
|
5
|
+
attr_accessor :opts, :command
|
6
|
+
|
7
|
+
def initialize command, opts = {}
|
8
|
+
@command = command
|
9
|
+
@opts = {
|
10
|
+
:auto_echo => false,
|
11
|
+
:pwd => opts[:pwd] || Hem.project_path,
|
12
|
+
:append => ''
|
13
|
+
}.merge(opts)
|
14
|
+
end
|
15
|
+
|
16
|
+
def pipe cmd, pipe_opts = {}
|
17
|
+
pipe_opts = pipe_opts.merge({ :on => :host })
|
18
|
+
cmd = "echo #{cmd.shellescape}" if @opts[:auto_echo]
|
19
|
+
|
20
|
+
case pipe_opts[:on]
|
21
|
+
when :host
|
22
|
+
@pipe = cmd
|
23
|
+
else
|
24
|
+
raise "Unknown pipe source: #{pipe_opts[:on]}"
|
25
|
+
end
|
26
|
+
return self
|
27
|
+
end
|
28
|
+
|
29
|
+
def << cmd
|
30
|
+
pipe cmd, :on => :host
|
31
|
+
end
|
32
|
+
|
33
|
+
def < cmd
|
34
|
+
pipe cmd, :on => :host
|
35
|
+
end
|
36
|
+
|
37
|
+
def run
|
38
|
+
return if @command.nil?
|
39
|
+
shell @command, @opts
|
40
|
+
end
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
pwd_set_command = "cd #{@opts[:pwd].shellescape} && exec /bin/bash"
|
44
|
+
|
45
|
+
command = [
|
46
|
+
pwd_set_command,
|
47
|
+
@command.empty? ? nil : @command.shellescape
|
48
|
+
].compact.join(" -c ") + "#{opts[:append].shellescape}"
|
49
|
+
|
50
|
+
[
|
51
|
+
@pipe,
|
52
|
+
"(#{command})"
|
53
|
+
].compact.join(" | ")
|
54
|
+
end
|
55
|
+
|
56
|
+
def to_str
|
57
|
+
to_s
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/hem/lib/vm/command.rb
CHANGED
@@ -21,11 +21,11 @@ module Hem
|
|
21
21
|
|
22
22
|
def pipe cmd, pipe_opts = {}
|
23
23
|
pipe_opts = pipe_opts.merge({ :on => :vm })
|
24
|
-
cmd = "echo #{cmd.shellescape
|
24
|
+
cmd = "echo #{cmd.shellescape}" if @opts[:auto_echo]
|
25
25
|
|
26
26
|
case pipe_opts[:on]
|
27
27
|
when :vm
|
28
|
-
@pipe_in_vm = cmd
|
28
|
+
@pipe_in_vm = cmd.gsub(/(\\+)/, '\\\\\1')
|
29
29
|
when :host
|
30
30
|
@pipe = cmd
|
31
31
|
else
|
data/lib/hem/tasks/assets.rb
CHANGED
@@ -72,21 +72,35 @@ namespace :assets do
|
|
72
72
|
end
|
73
73
|
|
74
74
|
desc "Apply project assets"
|
75
|
+
option "-a=", "--applicator=", "Asset applicator to apply, default all"
|
75
76
|
option "-e=", "--env=", "Environment"
|
77
|
+
option "-f", "--force", "Force application of already applied assets"
|
76
78
|
project_only
|
77
79
|
task :apply do |task, args|
|
78
80
|
env = task.opts[:env] || args[:env] || 'development'
|
79
81
|
path = "tools/assets/#{env}"
|
82
|
+
opts = {
|
83
|
+
force: task.opts[:force] || args[:force] || false
|
84
|
+
}
|
85
|
+
|
86
|
+
applicator_name = task.opts[:applicator] || args[:applicator]
|
87
|
+
case applicator_name
|
88
|
+
when nil, 'all'
|
89
|
+
asset_applicators = Hem.asset_applicators
|
90
|
+
else
|
91
|
+
asset_applicators = Hem.asset_applicators.select do |applicator|
|
92
|
+
applicator.name == applicator_name
|
93
|
+
end
|
94
|
+
end
|
80
95
|
|
81
96
|
next unless File.exists? path
|
82
97
|
|
83
98
|
Dir.new(path).each do |file|
|
84
99
|
file = File.join(path, file)
|
85
100
|
next unless File.file? file
|
86
|
-
|
87
|
-
|
101
|
+
asset_applicators.each do |applicator|
|
102
|
+
applicator.call(file, opts) if applicator.matches?(file)
|
88
103
|
end
|
89
104
|
end
|
90
|
-
|
91
105
|
end
|
92
106
|
end
|
data/lib/hem/tasks/deps.rb
CHANGED
data/lib/hem/tasks/magento.rb
CHANGED
@@ -2,7 +2,7 @@ namespace :tools do
|
|
2
2
|
desc "Fetches the n98-magerun utility"
|
3
3
|
task :n98magerun do
|
4
4
|
FileUtils.mkdir_p "bin"
|
5
|
-
|
5
|
+
run_command '"wget" --no-check-certificate "https://raw.github.com/netz98/n98-magerun/master/n98-magerun.phar" -O bin/n98-magerun.phar'
|
6
6
|
FileUtils.chmod 0755, "bin/n98-magerun.phar"
|
7
7
|
end
|
8
8
|
end
|
@@ -46,7 +46,7 @@ namespace :magento do
|
|
46
46
|
if magento_version_file
|
47
47
|
args = [ "php -r \"require '#{magento_version_file}'; echo Mage::getEdition();\""]
|
48
48
|
|
49
|
-
magento_edition =
|
49
|
+
magento_edition = run_command(*args, :capture => true).to_s.downcase
|
50
50
|
end
|
51
51
|
|
52
52
|
edition_options = ['community', 'enterprise', 'professional', 'go']
|
@@ -64,7 +64,7 @@ namespace :magento do
|
|
64
64
|
if magento_version_file
|
65
65
|
args = [ "php -r \"require '#{magento_version_file}'; echo Mage::getVersion();\""]
|
66
66
|
|
67
|
-
magento_version =
|
67
|
+
magento_version = run_command(*args, :capture => true)
|
68
68
|
end
|
69
69
|
|
70
70
|
version_regex = /^\d+(\.\d+){3}$/
|
@@ -95,7 +95,7 @@ namespace :magento do
|
|
95
95
|
end
|
96
96
|
|
97
97
|
if use_vm
|
98
|
-
status =
|
98
|
+
status = run_command(tools_command, :exit_status => true)
|
99
99
|
end
|
100
100
|
|
101
101
|
if status != 0
|
@@ -183,7 +183,7 @@ namespace :magento do
|
|
183
183
|
File.rename file, "#{magento_path}/#{filename}"
|
184
184
|
file = "#{magento_path}/#{filename}"
|
185
185
|
if use_vm
|
186
|
-
|
186
|
+
run_command "cd #{magento_path} && sh #{filename}", :realtime => true, :indent => 2
|
187
187
|
else
|
188
188
|
shell "cd #{magento_path} && sh #{filename}", :realtime => true, :indent => 2
|
189
189
|
end
|
@@ -213,8 +213,8 @@ namespace :magento do
|
|
213
213
|
desc "Run magento setup scripts"
|
214
214
|
task :run => ['tools:n98magerun'] do
|
215
215
|
Hem.ui.success "Running setup scripts"
|
216
|
-
|
217
|
-
|
216
|
+
run_command("bin/n98-magerun.phar cache:clean config", :realtime => true, :indent => 2)
|
217
|
+
run_command("bin/n98-magerun.phar sys:setup:incremental -n", :realtime => true, :indent => 2)
|
218
218
|
Hem.ui.separator
|
219
219
|
end
|
220
220
|
end
|
@@ -224,7 +224,7 @@ namespace :magento do
|
|
224
224
|
desc "Clear cache"
|
225
225
|
task :clear => ['tools:n98magerun'] do
|
226
226
|
Hem.ui.success "Clearing magento cache"
|
227
|
-
|
227
|
+
run_command("bin/n98-magerun.phar cache:flush", :realtime => true, :indent => 2)
|
228
228
|
Hem.ui.separator
|
229
229
|
end
|
230
230
|
end
|
@@ -235,8 +235,8 @@ namespace :magento do
|
|
235
235
|
task :'configure-urls' => ['tools:n98magerun'] do
|
236
236
|
Hem.ui.success "Configuring magento base urls"
|
237
237
|
domain = Hem.project_config.hostname
|
238
|
-
|
239
|
-
|
238
|
+
run_command("bin/n98-magerun.phar config:set web/unsecure/base_url 'http://#{domain}/'", :realtime => true, :indent => 2)
|
239
|
+
run_command("bin/n98-magerun.phar config:set web/secure/base_url 'https://#{domain}/'", :realtime => true, :indent => 2)
|
240
240
|
Hem.ui.separator
|
241
241
|
end
|
242
242
|
|
@@ -252,10 +252,10 @@ namespace :magento do
|
|
252
252
|
|
253
253
|
desc "Create admin user"
|
254
254
|
task :'create-admin-user' do
|
255
|
-
initialized =
|
255
|
+
initialized = run_command("bin/n98-magerun.phar admin:user:list | grep admin", :exit_status => true) == 0
|
256
256
|
unless initialized
|
257
257
|
Hem.ui.success "Creating admin user"
|
258
|
-
|
258
|
+
run_command("bin/n98-magerun.phar admin:user:create admin '' admin admin admin", :realtime => true, :indent => 2)
|
259
259
|
Hem.ui.separator
|
260
260
|
end
|
261
261
|
end
|
@@ -263,7 +263,7 @@ namespace :magento do
|
|
263
263
|
desc "Enable rewrites"
|
264
264
|
task :'enable-rewrites' do
|
265
265
|
Hem.ui.success "Enabling rewrites"
|
266
|
-
|
266
|
+
run_command("bin/n98-magerun.phar config:set web/seo/use_rewrites 1", :realtime => true, :indent => 2)
|
267
267
|
Hem.ui.separator
|
268
268
|
end
|
269
269
|
end
|
data/lib/hem/tasks/tools.rb
CHANGED
@@ -8,7 +8,7 @@ namespace :tools do
|
|
8
8
|
unless File.exists?(bin_file)
|
9
9
|
Hem.ui.success "Getting composer"
|
10
10
|
FileUtils.mkdir_p File.dirname(bin_file)
|
11
|
-
|
11
|
+
run_command "cd bin && php -r \"readfile('https://getcomposer.org/installer');\" | php", :realtime => true, :indent => 2
|
12
12
|
else
|
13
13
|
Hem.ui.success "Composer already available in bin/composer.phar"
|
14
14
|
end
|
data/lib/hem/tasks/vm.rb
CHANGED
@@ -119,7 +119,7 @@ namespace :vm do
|
|
119
119
|
opts[:db] = task.opts[:db] if task.opts[:db]
|
120
120
|
|
121
121
|
Hem.ui.success "Determining VM connection details..." if STDOUT.tty?
|
122
|
-
command =
|
122
|
+
command = create_mysql_command(opts)
|
123
123
|
Hem.logger.debug "vm:mysql: #{command}"
|
124
124
|
|
125
125
|
Hem.ui.success "Connecting..." if STDOUT.tty?
|
@@ -131,7 +131,7 @@ namespace :vm do
|
|
131
131
|
opts = { :psuedo_tty => STDIN.tty? }
|
132
132
|
|
133
133
|
Hem.ui.success "Determining VM connection details..." if STDOUT.tty?
|
134
|
-
command =
|
134
|
+
command = create_command("redis-cli", opts)
|
135
135
|
Hem.logger.debug "vm:redis: #{command}"
|
136
136
|
|
137
137
|
Hem.ui.success "Connecting..." if STDOUT.tty?
|
data/lib/hem/version.rb
CHANGED
data/lib/hem.rb
CHANGED
@@ -36,12 +36,15 @@ require 'hem/lib/s3/remote/file'
|
|
36
36
|
require 'hem/lib/s3/remote/iohandler'
|
37
37
|
|
38
38
|
# Task helpers
|
39
|
+
require 'hem/helper/command'
|
39
40
|
require 'hem/helper/shell'
|
40
41
|
require 'hem/helper/file_locator'
|
41
42
|
require 'hem/helper/github'
|
42
43
|
require 'hem/helper/http_download'
|
43
44
|
require 'hem/helper/vm_command'
|
44
45
|
|
46
|
+
require 'hem/lib/local/command'
|
47
|
+
|
45
48
|
require 'hem/lib/vm/inspector'
|
46
49
|
require 'hem/lib/vm/command'
|
47
50
|
|
@@ -27,70 +27,57 @@ describe Hem::Helper do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
describe "
|
30
|
+
describe "create_command" do
|
31
31
|
it "should create a new vm command wrapper with specified command" do
|
32
|
-
|
32
|
+
create_command("my_command", :pwd => '/').to_s.should match /-c my_command/
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should default to not using a psuedo tty" do
|
36
|
-
|
36
|
+
create_command("my_command", :pwd => '/').to_s.should_not match /\s-t\s/
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should default to ssh_config user" do
|
40
|
-
|
40
|
+
create_command("my_command", :pwd => '/').to_s.should match /fakeuser@/
|
41
41
|
end
|
42
42
|
|
43
43
|
it "should default to ssh_config host name" do
|
44
|
-
|
44
|
+
create_command("my_command", :pwd => '/').to_s.should match /@fakehost/
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should not wrap piped commands with echo by default" do
|
48
|
-
c =
|
48
|
+
c = create_command("my_command", :pwd => '/')
|
49
49
|
c << "test"
|
50
50
|
c.to_s.should_not match /^echo test/
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
describe "
|
54
|
+
describe "create_mysql_command" do
|
55
55
|
it "should use mysql command by default" do
|
56
|
-
|
56
|
+
create_mysql_command(:pwd => '/').to_s.should match /-c mysql/
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should use project config mysql username & password if set" do
|
60
|
-
|
60
|
+
create_mysql_command(:pwd => '/').to_s.should match /-c mysql.*-utest_user.*-ptest_pass/
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should not pass user / pass if project config mysql credentials not set" do
|
64
64
|
Hem.project_config = DeepStruct.wrap({})
|
65
|
-
|
65
|
+
create_mysql_command(:pwd => '/').to_s.should match /-c mysql'/
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should allow specifying the database in options" do
|
69
|
-
|
69
|
+
create_mysql_command(:pwd => '/', :db => "test_db").to_s.should match /-c mysql.*test_db'/
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should enable auto echo of piped commands" do
|
73
|
-
c =
|
73
|
+
c = create_mysql_command(:pwd => '/')
|
74
74
|
c << "SELECT 1"
|
75
|
-
c.to_s
|
75
|
+
puts c.to_s
|
76
|
+
c.to_s.should match /echo\\ SELECT\\\\\\\\\\ 1\\ \\\|/
|
76
77
|
end
|
77
78
|
end
|
78
79
|
|
79
|
-
describe "
|
80
|
-
it "should execute the command using the shell helper"
|
81
|
-
Hem::Helper.class_eval do
|
82
|
-
alias :old_shell :shell
|
83
|
-
def shell command, opts
|
84
|
-
command.to_s.should match /ssh.* -c my_command/
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
vm_shell "my_command", :pwd => '/'
|
89
|
-
|
90
|
-
Hem::Helper.class_eval do
|
91
|
-
remove_method :shell
|
92
|
-
alias :shell :old_shell
|
93
|
-
end
|
94
|
-
end
|
80
|
+
describe "run_command" do
|
81
|
+
it "should execute the command using the shell helper when refactored"
|
95
82
|
end
|
96
83
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.1.
|
4
|
+
version: 1.0.1.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Simons
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slop
|
@@ -206,6 +206,7 @@ files:
|
|
206
206
|
- lib/hem/error_handlers/friendly.rb
|
207
207
|
- lib/hem/errors.rb
|
208
208
|
- lib/hem/help_formatter.rb
|
209
|
+
- lib/hem/helper/command.rb
|
209
210
|
- lib/hem/helper/file_locator.rb
|
210
211
|
- lib/hem/helper/github.rb
|
211
212
|
- lib/hem/helper/http_download.rb
|
@@ -218,6 +219,7 @@ files:
|
|
218
219
|
- lib/hem/lib/host_check/git.rb
|
219
220
|
- lib/hem/lib/host_check/ruby.rb
|
220
221
|
- lib/hem/lib/host_check/vagrant.rb
|
222
|
+
- lib/hem/lib/local/command.rb
|
221
223
|
- lib/hem/lib/s3/local/file.rb
|
222
224
|
- lib/hem/lib/s3/local/iohandler.rb
|
223
225
|
- lib/hem/lib/s3/remote/file.rb
|
@@ -262,10 +264,10 @@ files:
|
|
262
264
|
- spec/hem/error_handlers/friendly_spec.rb
|
263
265
|
- spec/hem/error_spec.rb
|
264
266
|
- spec/hem/help_formatter_spec.rb
|
267
|
+
- spec/hem/helpers/command_spec.rb
|
265
268
|
- spec/hem/helpers/file_locator_spec.rb
|
266
269
|
- spec/hem/helpers/github_spec.rb
|
267
270
|
- spec/hem/helpers/shell_spec.rb
|
268
|
-
- spec/hem/helpers/vm_command_spec.rb
|
269
271
|
- spec/hem/lib/github/api_spec.rb
|
270
272
|
- spec/hem/lib/s3/sync_spec.rb
|
271
273
|
- spec/hem/lib/seed/project_spec.rb
|
@@ -300,7 +302,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
300
302
|
version: 1.3.1
|
301
303
|
requirements: []
|
302
304
|
rubyforge_project:
|
303
|
-
rubygems_version: 2.4.5
|
305
|
+
rubygems_version: 2.4.5.1
|
304
306
|
signing_key:
|
305
307
|
specification_version: 4
|
306
308
|
summary: Inviqan toolbelt
|
@@ -320,10 +322,10 @@ test_files:
|
|
320
322
|
- spec/hem/error_handlers/friendly_spec.rb
|
321
323
|
- spec/hem/error_spec.rb
|
322
324
|
- spec/hem/help_formatter_spec.rb
|
325
|
+
- spec/hem/helpers/command_spec.rb
|
323
326
|
- spec/hem/helpers/file_locator_spec.rb
|
324
327
|
- spec/hem/helpers/github_spec.rb
|
325
328
|
- spec/hem/helpers/shell_spec.rb
|
326
|
-
- spec/hem/helpers/vm_command_spec.rb
|
327
329
|
- spec/hem/lib/github/api_spec.rb
|
328
330
|
- spec/hem/lib/s3/sync_spec.rb
|
329
331
|
- spec/hem/lib/seed/project_spec.rb
|