hobo-inviqa 0.0.7.pre.rc3 → 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.
- data/Gemfile.lock +4 -19
- data/Guardfile +2 -2
- data/Hobofile +1 -5
- data/bin/hobo +18 -12
- data/hobo.gemspec +0 -3
- data/lib/hobo.rb +1 -8
- data/lib/hobo/cli.rb +3 -14
- data/lib/hobo/error_handlers/debug.rb +2 -5
- data/lib/hobo/error_handlers/friendly.rb +8 -8
- data/lib/hobo/errors.rb +1 -11
- data/lib/hobo/helper/shell.rb +2 -3
- data/lib/hobo/helper/vm_command.rb +14 -164
- data/lib/hobo/lib/host_check.rb +6 -20
- data/lib/hobo/lib/host_check/deps.rb +4 -22
- data/lib/hobo/lib/host_check/git.rb +17 -41
- data/lib/hobo/lib/host_check/ruby.rb +20 -30
- data/lib/hobo/lib/host_check/vagrant.rb +6 -37
- data/lib/hobo/lib/s3sync.rb +44 -22
- data/lib/hobo/lib/seed/project.rb +4 -8
- data/lib/hobo/patches/slop.rb +2 -21
- data/lib/hobo/tasks/assets.rb +15 -12
- data/lib/hobo/tasks/deps.rb +6 -40
- data/lib/hobo/tasks/host.rb +19 -0
- data/lib/hobo/tasks/tools.rb +6 -10
- data/lib/hobo/tasks/vm.rb +11 -64
- data/lib/hobo/ui.rb +10 -27
- data/lib/hobo/util.rb +2 -36
- data/lib/hobo/version.rb +2 -2
- data/spec/hobo/asset_applicator_spec.rb +2 -2
- data/spec/hobo/cli_spec.rb +24 -35
- data/spec/hobo/config/file_spec.rb +3 -1
- data/spec/hobo/error_handlers/debug_spec.rb +5 -39
- data/spec/hobo/error_handlers/friendly_spec.rb +21 -38
- data/spec/hobo/help_formatter_spec.rb +3 -3
- data/spec/hobo/helpers/file_locator_spec.rb +2 -2
- data/spec/hobo/helpers/shell_spec.rb +2 -2
- data/spec/hobo/helpers/vm_command_spec.rb +24 -36
- data/spec/hobo/lib/s3sync_spec.rb +3 -6
- data/spec/hobo/lib/seed/project_spec.rb +3 -2
- data/spec/hobo/lib/seed/replacer_spec.rb +2 -1
- data/spec/hobo/lib/seed/seed_spec.rb +3 -2
- data/spec/hobo/logging_spec.rb +2 -2
- data/spec/hobo/metadata_spec.rb +2 -2
- data/spec/hobo/null_spec.rb +2 -2
- data/spec/hobo/paths_spec.rb +2 -1
- data/spec/hobo/ui_spec.rb +20 -104
- data/spec/spec_helper.rb +0 -1
- metadata +48 -57
- checksums.yaml +0 -15
- data/.editorconfig +0 -10
- data/lib/hobo/error_handlers/exit_code_map.rb +0 -16
- data/lib/hobo/helper/http_download.rb +0 -41
- data/lib/hobo/tasks/config.rb +0 -15
- data/lib/hobo/tasks/system.rb +0 -15
- data/lib/hobo/tasks/system/completions.rb +0 -76
- data/spec/hobo/util_spec.rb +0 -75
data/lib/hobo/lib/host_check.rb
CHANGED
@@ -4,34 +4,20 @@ module Hobo
|
|
4
4
|
class << self
|
5
5
|
include Hobo::Lib::HostCheck
|
6
6
|
|
7
|
-
def check
|
8
|
-
opts = {
|
9
|
-
:filter => nil,
|
10
|
-
:raise => false
|
11
|
-
}.merge(opts)
|
12
|
-
|
13
|
-
results = {}
|
7
|
+
def check silent = true
|
14
8
|
methods = Hobo::Lib::HostCheck.public_instance_methods(false)
|
15
9
|
methods.each do |method|
|
16
|
-
next if opts[:filter] && !method.match(opts[:filter])
|
17
|
-
|
18
10
|
name = method.to_s.gsub('_', ' ')
|
19
11
|
name[0] = name[0].upcase
|
20
|
-
|
12
|
+
begin
|
21
13
|
self.send method
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
results[name] = :ok
|
26
|
-
rescue Hobo::Error => error
|
27
|
-
results[name] = error
|
28
|
-
end
|
14
|
+
Hobo.ui.success "#{name}: OK" unless silent
|
15
|
+
rescue
|
16
|
+
Hobo.ui.error "#{name}: FAILED" unless silent
|
29
17
|
end
|
30
18
|
end
|
31
|
-
|
32
|
-
return results
|
33
19
|
end
|
34
20
|
end
|
35
21
|
end
|
36
22
|
end
|
37
|
-
end
|
23
|
+
end
|
@@ -2,38 +2,20 @@ module Hobo
|
|
2
2
|
module Lib
|
3
3
|
module HostCheck
|
4
4
|
def ssh_present
|
5
|
-
advice = "The SSH command could not be located on your system.\n\n"
|
6
|
-
|
7
|
-
if OS.windows?
|
8
|
-
advice += "To make SSH available you must re-install git using the installer from http://git-scm.com/downloads ensuring you select the 'Use git and unix tools everywhere' option."
|
9
|
-
else
|
10
|
-
advice += "Please install openssh using your package manager."
|
11
|
-
end
|
12
|
-
|
13
5
|
begin
|
14
6
|
shell "ssh -V"
|
15
7
|
rescue Errno::ENOENT
|
16
|
-
raise Hobo::
|
8
|
+
raise Hobo::MissingDependency.new("ssh")
|
17
9
|
end
|
18
10
|
end
|
19
11
|
|
20
12
|
def php_present
|
21
|
-
advice = <<-EOF
|
22
|
-
The PHP command could not be located on your system.
|
23
|
-
|
24
|
-
This is an optional command that can speed up composer dependency installs.
|
25
|
-
|
26
|
-
Please install it from your package manager ensuring that the following command does not produce any errors:
|
27
|
-
|
28
|
-
php -r "readfile('https://getcomposer.org/installer');" | php
|
29
|
-
EOF
|
30
|
-
|
31
13
|
begin
|
32
|
-
shell "php
|
14
|
+
shell "php -v"
|
33
15
|
rescue Errno::ENOENT
|
34
|
-
raise Hobo::
|
16
|
+
raise Hobo::MissingDependency.new("php")
|
35
17
|
end
|
36
18
|
end
|
37
19
|
end
|
38
20
|
end
|
39
|
-
end
|
21
|
+
end
|
@@ -2,70 +2,46 @@ module Hobo
|
|
2
2
|
module Lib
|
3
3
|
module HostCheck
|
4
4
|
def git_present
|
5
|
-
advice = "The Git command could not be detected on your system.\n\n"
|
6
|
-
if OS.windows?
|
7
|
-
advice += "Please install it from http://git-scm.com/downloads ensuring you select the 'Use git and unix tools everywhere' option."
|
8
|
-
else
|
9
|
-
advice += "Please install it using your package manager."
|
10
|
-
end
|
11
|
-
|
12
5
|
begin
|
13
6
|
shell "git --version"
|
14
7
|
rescue Errno::ENOENT
|
15
|
-
raise Hobo::
|
8
|
+
raise Hobo::MissingDependency.new("ssh")
|
16
9
|
end
|
17
10
|
end
|
18
11
|
|
19
12
|
def git_config_name_set
|
20
|
-
advice = <<-EOF
|
21
|
-
You have not set your name in git config!
|
22
|
-
|
23
|
-
Please do so with the following command:
|
24
|
-
git config --global user.name <your name here>
|
25
|
-
EOF
|
26
13
|
begin
|
27
14
|
shell "git config user.name"
|
28
15
|
rescue Hobo::ExternalCommandError
|
29
|
-
|
16
|
+
Hobo.ui.error "You must provide git with your full name"
|
17
|
+
name = Hobo.ui.ask "Full name"
|
18
|
+
shell "git config --global user.name #{name.shellescape}"
|
30
19
|
end
|
31
20
|
end
|
32
21
|
|
33
22
|
def git_config_email_set
|
34
|
-
advice = <<-EOF
|
35
|
-
You have not set your email in git config!
|
36
|
-
|
37
|
-
Please do so with the following command:
|
38
|
-
git config --global user.email <your email here>
|
39
|
-
EOF
|
40
|
-
|
41
23
|
begin
|
42
24
|
shell "git config user.email"
|
43
25
|
rescue Hobo::ExternalCommandError
|
44
|
-
|
26
|
+
email = Hobo.ui.ask "Email address"
|
27
|
+
shell "git config --global user.email #{email.shellescape}"
|
45
28
|
end
|
46
29
|
end
|
47
30
|
|
48
31
|
def git_autocrlf_disabled
|
49
|
-
return
|
50
|
-
|
51
|
-
advice = <<-EOF
|
52
|
-
You're using git with the core.autocrlf option enabled.
|
53
|
-
|
54
|
-
This setting can often cause problems when you clone a repository on windows but need to execute the contents of that repository within a linux VM.
|
55
|
-
|
56
|
-
You can disable autocrlf globally with the following command:
|
57
|
-
git config --global core.autocrlf false
|
58
|
-
|
59
|
-
Disabling this setting will cause git to see all line endings as changed in a repository that was cloned with it enabled.
|
60
|
-
As such, you must either enable it just for those repositories or delete and re-clone them with the setting disabled.
|
61
|
-
|
62
|
-
You can enable the setting on a per-clone basis by ensuring that you are in the project directory and executing the following command:
|
63
|
-
git config core-autocrlf true
|
64
|
-
EOF
|
32
|
+
return true
|
65
33
|
begin
|
66
34
|
value = shell "git config core.autocrlf", :capture => true
|
67
35
|
if value != "false"
|
68
|
-
|
36
|
+
Hobo.ui.error "You're using git with autocrlf!"
|
37
|
+
Hobo.ui.error "This setting can cause problems executing scripts within VMs."
|
38
|
+
Hobo.ui.error "If you've had it enabled for a while, you'll need to check out all of your repositories again if you change it."
|
39
|
+
disable = Hobo.ui.ask "Would you like to disable this setting?", :default => true
|
40
|
+
if disable
|
41
|
+
shell "git config --global core.autocrlf false"
|
42
|
+
Hobo.ui.success "Disabled autocrlf\nYou can re-enable it by executing `git config --global core.autocrlf true"
|
43
|
+
end
|
44
|
+
|
69
45
|
end
|
70
46
|
rescue Hobo::ExternalCommandError
|
71
47
|
# NOP
|
@@ -73,4 +49,4 @@ EOF
|
|
73
49
|
end
|
74
50
|
end
|
75
51
|
end
|
76
|
-
end
|
52
|
+
end
|
@@ -2,51 +2,41 @@ module Hobo
|
|
2
2
|
module Lib
|
3
3
|
module HostCheck
|
4
4
|
def not_using_system_ruby
|
5
|
-
return if
|
6
|
-
advice = <<-EOF
|
7
|
-
You're using a system ruby install which can cause issues with installing Gems and running some older projects.
|
8
|
-
|
9
|
-
rbenv is HIGHLY recommended.
|
10
|
-
|
11
|
-
You can install it with the following command:
|
12
|
-
curl https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash
|
13
|
-
|
14
|
-
Once installed, run the following to set it as the default ruby and re-install hobo-inviqa:
|
15
|
-
rbenv install 1.9.3-p448 && rbenv global 1.9.3-448 && gem install hobo-inviqa
|
16
|
-
EOF
|
5
|
+
return if Gem.win_platform?
|
17
6
|
which = shell "which ruby", :capture => true
|
18
|
-
unless which =~ /\.
|
19
|
-
|
7
|
+
unless which =~ /\.rbenc|\.rvm/
|
8
|
+
Hobo.ui.error "You're using a system ruby install! rbenv is HIGHLY recommended"
|
9
|
+
Hobo.ui.error "You can install it with the following command:\n"
|
10
|
+
Hobo.ui.error " curl https://raw.github.com/fesplugas/rbenv-installer/master/bin/rbenv-installer | bash\n"
|
11
|
+
Hobo.ui.error "Once installed, run the following:\n"
|
12
|
+
Hobo.ui.error " rbenv install 1.9.3-p448 && rbenv global 1.9.3-448 && gem install hobo-inviqa"
|
13
|
+
raise "System ruby in use"
|
20
14
|
end
|
21
15
|
end
|
22
16
|
|
23
17
|
def system_paths_for_ruby
|
24
|
-
return if
|
25
|
-
|
26
|
-
advice = <<-EOF
|
27
|
-
The ordering of your system paths may cause a problem with Gems.
|
28
|
-
|
29
|
-
Unfortunately we can't automatically fix this for you at this time.
|
30
|
-
|
31
|
-
Please seek assistance.
|
32
|
-
|
33
|
-
Your paths were detected as:
|
34
|
-
|
35
|
-
#{ENV['PATH'].split(':').join("\n")}
|
36
|
-
EOF
|
37
|
-
|
18
|
+
return if Gem.win_platform?
|
38
19
|
paths = ENV['PATH'].split(':')
|
39
20
|
system_path_found = false
|
40
21
|
ruby_path_found = false
|
41
22
|
paths.each do |path|
|
42
23
|
system_before_ruby = system_path_found && !ruby_path_found
|
43
24
|
ruby_after_system = path =~ /\.rbenv|\.rvm/ && system_path_found
|
44
|
-
raise
|
25
|
+
raise "Bad system paths" if system_before_ruby or ruby_after_system
|
45
26
|
|
46
27
|
ruby_path_found = true if path =~ /\.rbenv|\.rvm/
|
47
28
|
system_path_found = true if path =~ /\/usr\/bin|\/usr\/local\/bin/
|
48
29
|
end
|
49
30
|
end
|
31
|
+
|
32
|
+
def ruby_include_paths
|
33
|
+
paths = $:
|
34
|
+
bad_paths = paths.reject do |path|
|
35
|
+
path.match /\.rbenv|\.rvm/
|
36
|
+
end.compact.length > 0
|
37
|
+
|
38
|
+
raise "Bad gem paths" if bad_paths
|
39
|
+
end
|
50
40
|
end
|
51
41
|
end
|
52
|
-
end
|
42
|
+
end
|
@@ -4,43 +4,12 @@ module Hobo
|
|
4
4
|
module Lib
|
5
5
|
module HostCheck
|
6
6
|
def vagrant_version
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
advice = <<-EOF
|
14
|
-
The version of vagrant which you are using (#{version}) is less than the minimum required (#{minimum_version}).
|
15
|
-
|
16
|
-
Please go to http://www.vagrantup.com/downloads.html and download the latest version for your platform.
|
17
|
-
EOF
|
18
|
-
raise Hobo::HostCheckError.new("Vagrant is too old!", advice) if version < minimum_version
|
19
|
-
rescue Errno::ENOENT
|
20
|
-
advice = <<-EOF
|
21
|
-
Vagrant could not be detected on the path!
|
22
|
-
|
23
|
-
Please go to http://www.vagrantup.com/downloads.html and download the latest version for your platform.
|
24
|
-
EOF
|
25
|
-
raise Hobo::HostCheckError.new("Vagrant is not on the path", advice)
|
26
|
-
rescue Hobo::ExternalCommandError => error
|
27
|
-
advice = <<-EOF
|
28
|
-
Vagrant produced an error while checking its presence.
|
29
|
-
|
30
|
-
This is usually caused by using the vagrant gem which is no longer supported.
|
31
|
-
|
32
|
-
Uninstall any gem version of vagrant with the following command selecting "yes" to any prompt:
|
33
|
-
gem uninstall vagrant
|
34
|
-
|
35
|
-
You can then download and install the latest version from http://www.vagrantup.com/downloads.html
|
36
|
-
|
37
|
-
If you do not have any vagrant gems installed it may be possible that a gem such as vagrant-wrapper is installed and is failing.
|
38
|
-
|
39
|
-
Please seek assistance from #devops if this is the case.
|
40
|
-
EOF
|
41
|
-
raise Hobo::HostCheckError.new("Vagrant produced an error while checking presence", advice)
|
42
|
-
end
|
7
|
+
version = shell "vagrant --version", :capture => true
|
8
|
+
version.gsub!(/^Vagrant /, '')
|
9
|
+
version = ::Semantic::Version.new version
|
10
|
+
minimum_version = ::Semantic::Version.new "1.3.5"
|
11
|
+
raise "Vagrant too old" if version < minimum_version
|
43
12
|
end
|
44
13
|
end
|
45
14
|
end
|
46
|
-
end
|
15
|
+
end
|
data/lib/hobo/lib/s3sync.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'aws-sdk'
|
2
2
|
require 'fileutils'
|
3
|
+
require 'ruby-progressbar'
|
3
4
|
|
4
5
|
module Hobo
|
5
6
|
module Lib
|
@@ -10,8 +11,7 @@ module Hobo
|
|
10
11
|
opts = {
|
11
12
|
:access_key_id => key_id,
|
12
13
|
:secret_access_key => secret,
|
13
|
-
:verify_response_body_content_length => false
|
14
|
-
:max_retries => 15
|
14
|
+
:verify_response_body_content_length => false
|
15
15
|
}
|
16
16
|
|
17
17
|
logger.debug("s3sync: Options #{opts}")
|
@@ -19,8 +19,26 @@ module Hobo
|
|
19
19
|
@s3 = AWS::S3.new opts
|
20
20
|
end
|
21
21
|
|
22
|
+
def delta source, dest
|
23
|
+
to_add = (source.sort - dest.sort).map(&:first)
|
24
|
+
to_remove = (dest.sort - source.sort).map(&:first)
|
25
|
+
to_remove = to_remove - to_add
|
26
|
+
|
27
|
+
{
|
28
|
+
:add => to_add,
|
29
|
+
:remove => to_remove
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def io_handler uri
|
34
|
+
parsed = URI.parse(uri)
|
35
|
+
parsed.scheme == 's3' ?
|
36
|
+
Remote.new(@s3, parsed.host, parsed.path) :
|
37
|
+
Local.new(uri)
|
38
|
+
end
|
39
|
+
|
22
40
|
def sync source, dest, opts = {}
|
23
|
-
opts = { :progress =>
|
41
|
+
opts = { :progress => method(:progress) }.merge(opts)
|
24
42
|
|
25
43
|
source_io = io_handler(source)
|
26
44
|
destination_io = io_handler(dest)
|
@@ -44,17 +62,19 @@ module Hobo
|
|
44
62
|
|
45
63
|
source_file.buffer
|
46
64
|
|
65
|
+
written = 0
|
47
66
|
size = source_file.size
|
48
67
|
destination_file.write({ :size => source_file.size }) do |buffer, bytes|
|
49
68
|
chunk = source_file.read(bytes)
|
50
69
|
buffer.write(chunk)
|
51
|
-
|
70
|
+
written += chunk.length
|
71
|
+
opts[:progress].call(file, written, size, :update)
|
52
72
|
end
|
53
73
|
|
54
74
|
destination_file.close
|
55
75
|
source_file.close
|
56
76
|
|
57
|
-
opts[:progress].call(file,
|
77
|
+
opts[:progress].call(file, written, size, :finish)
|
58
78
|
end
|
59
79
|
|
60
80
|
delta[:remove].each do |file|
|
@@ -65,26 +85,28 @@ module Hobo
|
|
65
85
|
return delta
|
66
86
|
end
|
67
87
|
|
68
|
-
|
88
|
+
def progress file, written, total, type
|
89
|
+
opts = {
|
90
|
+
:title => file,
|
91
|
+
:total => total,
|
92
|
+
:format => "%t [%B] %p%% %e"
|
93
|
+
}
|
69
94
|
|
70
|
-
|
71
|
-
|
72
|
-
to_remove = (dest.sort - source.sort).map(&:first)
|
73
|
-
to_remove = to_remove - to_add
|
95
|
+
# Hack to stop newline spam on windows
|
96
|
+
opts[:length] = 79 if Gem::win_platform?
|
74
97
|
|
75
|
-
{
|
76
|
-
|
77
|
-
:remove => to_remove
|
78
|
-
}
|
79
|
-
end
|
98
|
+
@progress ||= {}
|
99
|
+
@progress[file] ||= ProgressBar.create(opts)
|
80
100
|
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
101
|
+
case type
|
102
|
+
when :update
|
103
|
+
@progress[file].progress = written
|
104
|
+
when :finished
|
105
|
+
@progress[file].finish
|
106
|
+
end
|
86
107
|
end
|
87
108
|
|
109
|
+
|
88
110
|
class Local
|
89
111
|
include Hobo::Logging
|
90
112
|
|
@@ -110,7 +132,7 @@ module Hobo
|
|
110
132
|
end
|
111
133
|
|
112
134
|
def rm file
|
113
|
-
File.unlink
|
135
|
+
File.unlink file
|
114
136
|
end
|
115
137
|
end
|
116
138
|
|
@@ -213,4 +235,4 @@ module Hobo
|
|
213
235
|
end
|
214
236
|
end
|
215
237
|
end
|
216
|
-
end
|
238
|
+
end
|
@@ -16,6 +16,9 @@ module Hobo
|
|
16
16
|
config[:seed][:version] = seed.version
|
17
17
|
config[:hostname] = "#{config[:name]}.development.local"
|
18
18
|
config[:asset_bucket] = "inviqa-assets-#{config[:name]}"
|
19
|
+
config[:mysql] = {
|
20
|
+
:password => "984C42CF342f7j6" # Packer default password
|
21
|
+
}
|
19
22
|
|
20
23
|
@opts[:replacer].replace(config[:project_path], config)
|
21
24
|
load_seed_init(config)
|
@@ -41,17 +44,10 @@ module Hobo
|
|
41
44
|
def initialize_git path, git_url
|
42
45
|
Dir.chdir path do
|
43
46
|
Hobo::Helper.shell 'git', 'init'
|
47
|
+
Hobo::Helper.shell 'git', 'remote', 'add', 'origin', git_url
|
44
48
|
Hobo::Helper.shell 'git', 'add', '--all'
|
45
49
|
Hobo::Helper.shell 'git', 'commit', '-m', "'Initial hobo project'"
|
46
50
|
Hobo::Helper.shell 'git', 'checkout', '-b', 'develop'
|
47
|
-
|
48
|
-
# Github for windows gets clever adding origin / upstream remotes in system level gitconfig
|
49
|
-
# :facepalm:
|
50
|
-
begin
|
51
|
-
Hobo::Helper.shell 'git', 'remote', 'add', 'origin', git_url
|
52
|
-
rescue Hobo::ExternalCommandError
|
53
|
-
Hobo::Helper.shell 'git', 'remote', 'set-url', 'origin', git_url
|
54
|
-
end
|
55
51
|
end
|
56
52
|
end
|
57
53
|
end
|