hobo-inviqa 0.0.10 → 0.0.11
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 +5 -13
- data/.gitignore +3 -0
- data/Gemfile.lock +6 -6
- data/Rakefile +16 -0
- data/bin/hobo +30 -8
- data/hobo.gemspec +1 -3
- data/lib/hobo/asset_applicators/sqldump.rb +29 -6
- data/lib/hobo/bundler.rb +72 -0
- data/lib/hobo/cli.rb +2 -1
- data/lib/hobo/error_handlers/exit_code_map.rb +2 -1
- data/lib/hobo/error_handlers/friendly.rb +2 -0
- data/lib/hobo/lib/host_check/ruby.rb +3 -2
- data/lib/hobo/lib/s3/sync.rb +17 -6
- data/lib/hobo/patches/rubygems.rb +0 -1
- data/lib/hobo/tasks/assets.rb +54 -20
- data/lib/hobo/tasks/deps.rb +16 -8
- data/lib/hobo/util.rb +5 -0
- data/lib/hobo/version.rb +1 -1
- data/spec/spec_helper.rb +6 -1
- metadata +31 -30
- data/lib/hobo/init/bundler_context.rb +0 -41
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OTE4ZGM4OTUxMjhlY2ExNjgwMjkyMDhhYTc5Y2MwNDUxMzU3YzYxNA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: be7b49aeaf1ca940a8e4195b1d173f77a60ddb4c
|
4
|
+
data.tar.gz: dbf72ecfd2f6cbb66b4bdd1be1058377f9b6b3b6
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZjI1NWIzZDg0Mzg3MWJjNTJlOTI1YWVmNDNmYTFmM2I4OTEyZDg4M2Q0ZTdj
|
11
|
-
NWZiZDlkM2M2NDIyMTcyNzUzOGE4Y2M4YTRlYjQxNjNmMzI3N2Q=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
Njg3MTNiZTZlNzlkNWFkMTdhY2Q1NjRmYjE3NGQ0N2EzOWMwMTEzZTBmMzZm
|
14
|
-
ZGViZmM4M2ExYWVjMWZlYTk4YmE3NWM2MTk5NTUwZDVlYjFlZWU1Yjc2MDg0
|
15
|
-
NTY2NTU5YjY1MjQzMjhiOWE2NDYxNzMyMjQyY2NlYzU0OWQ1Mzc=
|
6
|
+
metadata.gz: a66d5fc46a6a655a53bcb3b7aa5bdb9e8a35a3b044cca992e13bed83fde56d956aeccc9bcfcf433a0f715b41039e097e042d023a4cdb294b6bd2f4626ffa39d6
|
7
|
+
data.tar.gz: 138f62a568f9ba19f71f60ab18517b11b9c9e0005f1c9794f9a398a0ff8305c0ab347596b4fe5f9ca37ea81d4c9744530d998dbd6dcfa14192e5c3c4d74c0251
|
data/.gitignore
ADDED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hobo-inviqa (0.0.
|
4
|
+
hobo-inviqa (0.0.11)
|
5
5
|
aws-sdk (~> 1.34.0)
|
6
6
|
bundler (>= 1.5.2)
|
7
7
|
deepstruct (~> 0.0.5)
|
@@ -24,12 +24,12 @@ GEM
|
|
24
24
|
uuidtools (~> 2.1)
|
25
25
|
blockenspiel (0.4.5)
|
26
26
|
coderay (1.1.0)
|
27
|
-
deepstruct (0.0.
|
28
|
-
hashie (
|
27
|
+
deepstruct (0.0.7)
|
28
|
+
hashie (3.0.0)
|
29
29
|
highline (1.6.21)
|
30
30
|
json (1.8.1)
|
31
31
|
method_source (0.8.2)
|
32
|
-
mini_portile (0.
|
32
|
+
mini_portile (0.6.0)
|
33
33
|
net-scp (1.1.2)
|
34
34
|
net-ssh (>= 2.6.5)
|
35
35
|
net-ssh (2.8.0)
|
@@ -38,8 +38,8 @@ GEM
|
|
38
38
|
hashie (>= 1.1.0)
|
39
39
|
net-scp (~> 1.1.0)
|
40
40
|
net-ssh (~> 2.8.0)
|
41
|
-
nokogiri (1.6.1)
|
42
|
-
mini_portile (
|
41
|
+
nokogiri (1.6.2.1)
|
42
|
+
mini_portile (= 0.6.0)
|
43
43
|
pry (0.9.12.6)
|
44
44
|
coderay (~> 1.0)
|
45
45
|
method_source (~> 0.8)
|
data/Rakefile
CHANGED
@@ -5,3 +5,19 @@ ENV['HOBO_BUILD'] = '1'
|
|
5
5
|
|
6
6
|
desc "Build and install"
|
7
7
|
task :build_install => [:build, :install]
|
8
|
+
|
9
|
+
desc "Install dev deps"
|
10
|
+
task :install_dev_deps do
|
11
|
+
sh 'rm -rf .bundle/config'
|
12
|
+
sh 'HOBO_ENV=dev bundle install'
|
13
|
+
end
|
14
|
+
|
15
|
+
namespace :test do
|
16
|
+
task :specs => [ 'install_dev_deps' ] do
|
17
|
+
sh 'HOBO_ENV=dev bundle exec rspec'
|
18
|
+
end
|
19
|
+
|
20
|
+
task :acceptance => [ 'install_dev_deps' ] do
|
21
|
+
sh 'HOBO_ENV=dev bundle exec cucumber'
|
22
|
+
end
|
23
|
+
end
|
data/bin/hobo
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
$:.push File.expand_path(File.join("..", "..", "lib"), __FILE__)
|
5
5
|
|
6
6
|
def init_hobo
|
7
|
-
require 'hobo/init/bundler_context' unless $HOBO_BUNDLE_MODE
|
8
7
|
require 'hobo'
|
9
8
|
|
10
9
|
# Default main classes
|
@@ -47,7 +46,6 @@ def init_hobo
|
|
47
46
|
Hobo.ui.interactive = !(opts[:'non-interactive'] == true)
|
48
47
|
|
49
48
|
begin
|
50
|
-
Hobo::Lib::HostCheck.check(:filter => /not_using_system_ruby/, :raise => true) unless opts[:'skip-host-checks']
|
51
49
|
Hobo.cli = Hobo::Cli.new(slop: slop)
|
52
50
|
Hobo.cli.start
|
53
51
|
rescue Exception => error
|
@@ -57,23 +55,47 @@ def init_hobo
|
|
57
55
|
end
|
58
56
|
end
|
59
57
|
|
58
|
+
Gem.configuration.verbose = false
|
59
|
+
|
60
|
+
require 'hobo/util'
|
61
|
+
|
62
|
+
unless Hobo.windows?
|
63
|
+
if Process.uid == 0
|
64
|
+
puts
|
65
|
+
puts "Hobo must not be run as root"
|
66
|
+
puts
|
67
|
+
exit 147
|
68
|
+
end
|
69
|
+
|
70
|
+
require "hobo/util"
|
71
|
+
|
72
|
+
if Hobo.windows? and not Hobo.system_ruby?
|
73
|
+
puts
|
74
|
+
puts "Hobo is not compatible with system ruby installs"
|
75
|
+
puts
|
76
|
+
puts "Please see the installation instructions for hobo on the wiki at https://github.com/inviqa/hobo-gem/wiki"
|
77
|
+
puts "It is also recommended that you wipe system gems so as to avoid interference. You can achieve this with the following command:"
|
78
|
+
puts
|
79
|
+
puts " gem list --no-version | xargs sudo gem uninstall -aIx"
|
80
|
+
puts
|
81
|
+
exit 148
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
60
85
|
require 'hobo/patches/rubygems'
|
86
|
+
require 'hobo/bundler'
|
61
87
|
require 'bundler'
|
62
88
|
|
63
89
|
# Suppress Net/SSH/Simple warning on windows
|
64
|
-
# Note that $HOBO_ARGV is used as an indicator in the gemspec as to whether it needs to build a filelist
|
65
|
-
# Removing it or moving it after the bundler setup will cause "fatal: Not a git repository" errors
|
66
90
|
$SUPPRESS_32BIT_WARNING=1
|
67
91
|
$HOBO_ARGV = ARGV
|
68
|
-
# Bundler.environment tries to do Bundler.setup!
|
69
|
-
# In the event that bundle is missing deps, the means BUNDLE_GEMFILE will not be set!
|
70
|
-
$HOBO_BUNDLE_MODE = (!!ENV['BUNDLE_GEMFILE'] && Bundler.environment.specs.to_hash['hobo-inviqa'])
|
71
92
|
$OLD_BUNDLE_GEMFILE = ENV['BUNDLE_GEMFILE']
|
93
|
+
$HOBO_BUNDLE_MODE = Hobo::Bundler.is_hobo_bundled?
|
72
94
|
|
73
95
|
if $HOBO_BUNDLE_MODE
|
74
96
|
init_hobo
|
75
97
|
else
|
76
|
-
Bundler.
|
98
|
+
Hobo::Bundler.isolate do
|
77
99
|
init_hobo
|
78
100
|
end
|
79
101
|
end
|
data/hobo.gemspec
CHANGED
@@ -33,9 +33,6 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_dependency "net-ssh-simple", "~> 1.6.3"
|
34
34
|
spec.add_dependency "pry", "~> 0.9.12"
|
35
35
|
|
36
|
-
# Not actually a dep! gem insists on installing 1.6.2.rc2 however!
|
37
|
-
#spec.add_dependency "nokogiri", "= 1.6.1"
|
38
|
-
|
39
36
|
# This prevents Bundler.setup from complaining that rubygems did not install dev deps
|
40
37
|
# If you want to run dev deps you need to ensure HOBO_ENV=dev is set for bundle install & bundle exec
|
41
38
|
if ENV['HOBO_ENV'] == 'dev'
|
@@ -46,5 +43,6 @@ Gem::Specification.new do |spec|
|
|
46
43
|
spec.add_development_dependency "guard", "~> 2.2.5"
|
47
44
|
spec.add_development_dependency "guard-rspec", "~> 4.2.4"
|
48
45
|
spec.add_development_dependency "guard-cucumber", "~> 1.4.1"
|
46
|
+
spec.add_development_dependency "simplecov", "~> 0.7.1"
|
49
47
|
end
|
50
48
|
end
|
@@ -1,15 +1,38 @@
|
|
1
|
+
# Built in applicators
|
1
2
|
Hobo.asset_applicators.register /.*\.sql\.gz/ do |file|
|
2
3
|
matches = file.match(/^([^\.]+).*\.sql\.gz/)
|
3
4
|
db = File.basename(matches[1])
|
4
5
|
|
6
|
+
status = {
|
7
|
+
:db_exists => false,
|
8
|
+
:db_has_tables => false
|
9
|
+
}
|
10
|
+
|
5
11
|
begin
|
6
|
-
shell(vm_mysql(:
|
7
|
-
|
12
|
+
result = shell(vm_mysql(:db => db) << 'SHOW TABLES; SELECT FOUND_ROWS();', :capture => true)
|
13
|
+
status[:db_exists] = true
|
14
|
+
status[:db_has_tables] = !(result.split("\n").last.strip == '0')
|
15
|
+
rescue Hobo::ExternalCommandError
|
16
|
+
# This will fail later with a more useful error message
|
17
|
+
end
|
18
|
+
|
19
|
+
if status[:db_exists] && status[:db_has_tables]
|
8
20
|
Hobo.ui.warning "Already applied (#{file})"
|
9
|
-
raise e if e.exit_code != 1
|
10
21
|
next
|
11
22
|
end
|
12
23
|
|
13
|
-
|
14
|
-
|
15
|
-
|
24
|
+
if status[:db_exists] && !status[:db_has_tables]
|
25
|
+
# Db exists but is empty
|
26
|
+
shell(vm_mysql(:mysql => 'mysqladmin', :append => " --force drop #{db.shellescape}"))
|
27
|
+
end
|
28
|
+
|
29
|
+
begin
|
30
|
+
Hobo.ui.title "Applying mysqldump (#{file})"
|
31
|
+
shell(vm_mysql(:mysql => 'mysqladmin', :append => " create #{db.shellescape}"))
|
32
|
+
shell(vm_mysql(:auto_echo => false, :db => db) < "zcat #{file.shellescape}")
|
33
|
+
rescue Hobo::ExternalCommandError => exception
|
34
|
+
Hobo.ui.error "Could not apply #{file} due to the following error:\n"
|
35
|
+
Hobo.ui.error File.read(exception.output.path).strip
|
36
|
+
raise exception
|
37
|
+
end
|
38
|
+
end
|
data/lib/hobo/bundler.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
module Hobo
|
2
|
+
module Bundler
|
3
|
+
require 'rubygems/user_interaction'
|
4
|
+
|
5
|
+
class GemUi < Gem::SilentUI
|
6
|
+
def download_reporter(*args)
|
7
|
+
VerboseDownloadReporter.new(STDOUT, *args)
|
8
|
+
end
|
9
|
+
def progress_reporter(*args)
|
10
|
+
SilentProgressReporter.new(STDOUT, *args)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.install_missing_dependencies
|
15
|
+
require 'bundler'
|
16
|
+
require 'bundler/ui'
|
17
|
+
require 'bundler/cli'
|
18
|
+
require 'bundler/cli/install'
|
19
|
+
|
20
|
+
# Override Gem output handlers
|
21
|
+
Gem::DefaultUserInteraction.ui = GemUi.new
|
22
|
+
Gem.configuration.verbose = false
|
23
|
+
|
24
|
+
# Reset bundler & trigger install task
|
25
|
+
::Bundler.definition true
|
26
|
+
bundler_install = ::Bundler::CLI::Install.new({})
|
27
|
+
|
28
|
+
begin
|
29
|
+
bundler_install.run
|
30
|
+
Kernel.exec('hobo', *$HOBO_ARGV)
|
31
|
+
rescue Exception => e
|
32
|
+
puts
|
33
|
+
puts "Failed to install dependencies. Hobo can not proceed."
|
34
|
+
puts "Please see the error below:"
|
35
|
+
puts
|
36
|
+
throw exception
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.isolate
|
41
|
+
::Bundler.with_clean_env do
|
42
|
+
# Override gemfile for bundler to use
|
43
|
+
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../Gemfile', __FILE__)
|
44
|
+
|
45
|
+
# Ensure Bundler is not caching anything
|
46
|
+
::Bundler.instance_variable_set('@load', nil)
|
47
|
+
::Bundler.definition true
|
48
|
+
|
49
|
+
begin
|
50
|
+
::Bundler.setup(:default)
|
51
|
+
rescue ::Bundler::GemNotFound => exception
|
52
|
+
puts "Missing runtime dependencies: #{exception}"
|
53
|
+
puts "Installing..."
|
54
|
+
|
55
|
+
Hobo::Bundler.install_missing_dependencies
|
56
|
+
end
|
57
|
+
yield
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.is_hobo_bundled?
|
62
|
+
begin
|
63
|
+
::Bundler.root
|
64
|
+
::Bundler.definition.dependencies.select do |dep|
|
65
|
+
dep.name == 'hobo-inviqa'
|
66
|
+
end.length > 0
|
67
|
+
rescue ::Bundler::GemfileNotFound
|
68
|
+
false
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/hobo/cli.rb
CHANGED
@@ -38,6 +38,8 @@ module Hobo
|
|
38
38
|
when "Hobo::HostCheckError"
|
39
39
|
Hobo.ui.error "\nHobo has detected a problem with your system configuration:\n"
|
40
40
|
Hobo.ui.warning error.advice.gsub(/^/, ' ')
|
41
|
+
when "Hobo::Error"
|
42
|
+
Hobo.ui.error "\n#{error.message}\n"
|
41
43
|
else
|
42
44
|
File.write(log_file, "(#{error.class}) #{error.message}\n\n#{error.backtrace.join("\n")}")
|
43
45
|
Hobo.ui.error <<-ERROR
|
@@ -14,8 +14,9 @@ You can install it with the following command:
|
|
14
14
|
Once installed, run the following to set it as the default ruby and re-install hobo-inviqa:
|
15
15
|
rbenv install 1.9.3-p448 && rbenv global 1.9.3-448 && gem install hobo-inviqa
|
16
16
|
EOF
|
17
|
-
|
18
|
-
|
17
|
+
require "rbconfig"
|
18
|
+
which = File.join(RbConfig::CONFIG["bindir"], RbConfig::CONFIG["ruby_install_name"])
|
19
|
+
unless which =~ /\.rbenv|\.rvm|jruby/
|
19
20
|
raise Hobo::HostCheckError.new("Hobo is running under a system ruby", advice)
|
20
21
|
end
|
21
22
|
end
|
data/lib/hobo/lib/s3/sync.rb
CHANGED
@@ -14,9 +14,11 @@ module Hobo
|
|
14
14
|
:max_retries => 15
|
15
15
|
}.merge(opts)
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
handle_s3_error do
|
18
|
+
# AWS::S3 is flakey about actually raising this error when nil is provided
|
19
|
+
[:access_key_id, :secret_access_key].each do |k|
|
20
|
+
raise AWS::Errors::MissingCredentialsError if @opts[k].nil?
|
21
|
+
end
|
20
22
|
end
|
21
23
|
|
22
24
|
logger.debug("s3sync: Options #{@opts}")
|
@@ -26,7 +28,10 @@ module Hobo
|
|
26
28
|
delta = {:add => [], :remove => []}
|
27
29
|
|
28
30
|
handle_s3_error do
|
29
|
-
opts = {
|
31
|
+
opts = {
|
32
|
+
:dry => false,
|
33
|
+
:progress => Hobo.method(:progress)
|
34
|
+
}.merge(opts)
|
30
35
|
|
31
36
|
source_io = io_handler(source)
|
32
37
|
destination_io = io_handler(dest)
|
@@ -42,6 +47,7 @@ module Hobo
|
|
42
47
|
|
43
48
|
delta = delta(source_listing, destination_listing)
|
44
49
|
logger.debug("s3sync: Delta #{delta}")
|
50
|
+
break if opts[:dry]
|
45
51
|
|
46
52
|
delta[:add].each do |file|
|
47
53
|
logger.debug("s3sync: Synchronizing #{file}")
|
@@ -54,7 +60,7 @@ module Hobo
|
|
54
60
|
destination_file.write({ :size => source_file.size }) do |buffer, bytes|
|
55
61
|
chunk = source_file.read(bytes)
|
56
62
|
buffer.write(chunk)
|
57
|
-
opts[:progress].call(file, chunk.length, size, :update)
|
63
|
+
opts[:progress].call(file, (chunk || '').length, size, :update)
|
58
64
|
end
|
59
65
|
|
60
66
|
destination_file.close
|
@@ -79,19 +85,24 @@ module Hobo
|
|
79
85
|
end
|
80
86
|
|
81
87
|
def handle_s3_error
|
88
|
+
exception = Hobo::Error.new("Could not sync assets")
|
82
89
|
begin
|
83
90
|
yield
|
84
91
|
rescue Errno::ENETUNREACH
|
85
92
|
Hobo.ui.error " Could not contact Amazon servers."
|
86
93
|
Hobo.ui.error " This can sometimes be caused by missing AWS credentials"
|
94
|
+
raise exception
|
87
95
|
rescue AWS::S3::Errors::NoSuchBucket
|
88
96
|
Hobo.ui.error " Asset bucket #{Hobo.project_config.asset_bucket} does not exist!"
|
97
|
+
# We allow this one to be skipped as there are obviously no assets to sync
|
89
98
|
rescue AWS::S3::Errors::AccessDenied
|
90
99
|
Hobo.ui.error " Your AWS key does not have access to the #{Hobo.project_config.asset_bucket} S3 bucket!"
|
91
100
|
Hobo.ui.error " Please request access to this bucket from your TTL or via an internal support request"
|
101
|
+
raise exception
|
92
102
|
rescue AWS::Errors::MissingCredentialsError
|
93
103
|
Hobo.ui.warning " AWS credentials not set!"
|
94
|
-
Hobo.ui.warning "
|
104
|
+
Hobo.ui.warning " Please request credentials from internalsupport@inivqa.com or in #devops and configure them with `hobo config`"
|
105
|
+
raise exception
|
95
106
|
end
|
96
107
|
end
|
97
108
|
|
data/lib/hobo/tasks/assets.rb
CHANGED
@@ -1,40 +1,74 @@
|
|
1
1
|
desc "Project asset commands"
|
2
2
|
project_only
|
3
3
|
namespace :assets do
|
4
|
+
def render_delta delta, type
|
5
|
+
if delta[:add] and delta[:add].length > 0
|
6
|
+
x = type == 'download' ? 'download from S3' : 'upload to S3'
|
7
|
+
Hobo.ui.section " Files to #{x}:" do
|
8
|
+
delta[:add].each do |f|
|
9
|
+
Hobo.ui.success " #{f}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
4
13
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
14
|
+
if delta[:remove] and delta[:remove].length > 0
|
15
|
+
x = type == 'download' ? 'locally' : 'from S3'
|
16
|
+
puts Hobo.ui.color " Files to delete #{x}:", :error
|
17
|
+
delta[:remove].each do |f|
|
18
|
+
puts Hobo.ui.color " #{f}", :error
|
19
|
+
end
|
20
|
+
Hobo.ui.separator
|
21
|
+
end
|
22
|
+
end
|
9
23
|
|
24
|
+
def do_sync src, dst, env, type
|
10
25
|
unless Hobo.project_config.asset_bucket.nil?
|
11
|
-
env = task.opts[:env] || args[:env] || 'development'
|
12
|
-
s3_uri = "s3://#{Hobo.project_config.asset_bucket}/#{env}/"
|
13
26
|
sync = Hobo::Lib::S3::Sync.new(Hobo.aws_credentials)
|
14
|
-
changes = sync.sync(
|
15
|
-
|
27
|
+
changes = sync.sync(src, dst, :dry => true)
|
28
|
+
|
29
|
+
if (changes[:add] + changes[:remove]).length > 0
|
30
|
+
answer = if type == 'download' && changes[:remove].length == 0
|
31
|
+
'y'
|
32
|
+
else
|
33
|
+
render_delta changes, type
|
34
|
+
Hobo.ui.ask "Proceed? (Y/N)", :default => 'Y'
|
35
|
+
end
|
36
|
+
|
37
|
+
if answer.downcase == 'y'
|
38
|
+
sync.sync(src, dst)
|
39
|
+
else
|
40
|
+
raise Hobo::Error.new "Asset sync aborted"
|
41
|
+
end
|
42
|
+
else
|
43
|
+
Hobo.ui.warning " No changes required"
|
44
|
+
end
|
16
45
|
else
|
17
46
|
Hobo.ui.warning " No asset bucket configured. Skipping..."
|
18
47
|
end
|
19
|
-
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Download project assets"
|
51
|
+
option "-e=", "--env=", "Environment"
|
52
|
+
task :download do |task, args|
|
53
|
+
Hobo.ui.section "Synchronizing assets (download)" do
|
54
|
+
env = task.opts[:env] || args[:env] || 'development'
|
55
|
+
src = "s3://#{Hobo.project_config.asset_bucket}/#{env}/"
|
56
|
+
dst = "tools/assets/#{env}"
|
57
|
+
do_sync src, dst, env, "download"
|
58
|
+
end
|
20
59
|
end
|
21
60
|
|
22
61
|
desc "Upload project assets"
|
23
62
|
option "-e=", "--env=", "Environment"
|
24
63
|
task :upload do |task, args|
|
25
|
-
Hobo.ui.
|
26
|
-
|
27
|
-
unless Hobo.project_config.asset_bucket.nil?
|
64
|
+
Hobo.ui.section "Synchronizing assets (upload)" do
|
28
65
|
env = task.opts[:env] || args[:env] || 'development'
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
Hobo.ui.warning "
|
33
|
-
|
34
|
-
Hobo.ui.warning " No asset bucket configured. Skipping..."
|
66
|
+
dst = "s3://#{Hobo.project_config.asset_bucket}/#{env}/"
|
67
|
+
src = "tools/assets/#{env}"
|
68
|
+
Hobo.ui.warning "Please note that asset uploads can be destructive and will affect the whole team!"
|
69
|
+
Hobo.ui.warning "Only upload if you're sure your assets are free from errors and will not impact other team members"
|
70
|
+
do_sync src, dst, env, "upload"
|
35
71
|
end
|
36
|
-
|
37
|
-
Hobo.ui.separator
|
38
72
|
end
|
39
73
|
|
40
74
|
desc "Apply project assets"
|
data/lib/hobo/tasks/deps.rb
CHANGED
@@ -24,14 +24,16 @@ namespace :deps do
|
|
24
24
|
args = [ "php bin/composer.phar install #{ansi} --prefer-dist", { realtime: true, indent: 2 } ]
|
25
25
|
complete = false
|
26
26
|
|
27
|
-
|
27
|
+
if maybe(Hobo.project_config.tasks.deps.composer.disable_host_run)
|
28
|
+
check = Hobo::Lib::HostCheck.check(:filter => /php_present/)
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
30
|
+
if check[:php_present] == :ok
|
31
|
+
begin
|
32
|
+
shell *args
|
33
|
+
complete = true
|
34
|
+
rescue Hobo::ExternalCommandError
|
35
|
+
Hobo.ui.warning "Installing composer dependencies locally failed!"
|
36
|
+
end
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -76,7 +78,13 @@ namespace :deps do
|
|
76
78
|
locate "*Berksfile" do
|
77
79
|
Hobo.ui.title "Installing chef dependencies via berkshelf"
|
78
80
|
bundle_shell "berks", "install", :realtime => true, :indent => 2
|
79
|
-
bundle_shell "berks", "
|
81
|
+
version = bundle_shell "berks", "-v", :capture => true
|
82
|
+
if version =~ /^[3-9]/
|
83
|
+
shell "rm -rf cookbooks"
|
84
|
+
bundle_shell "berks", "vendor", "cookbooks"
|
85
|
+
else
|
86
|
+
bundle_shell "berks", "install", "--path", "cookbooks"
|
87
|
+
end
|
80
88
|
Hobo.ui.separator
|
81
89
|
end
|
82
90
|
end
|
data/lib/hobo/util.rb
CHANGED
@@ -53,5 +53,10 @@ module Hobo
|
|
53
53
|
require 'rbconfig'
|
54
54
|
!!(RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/)
|
55
55
|
end
|
56
|
+
|
57
|
+
def system_ruby?
|
58
|
+
require 'rbconfig'
|
59
|
+
File.join(RbConfig::CONFIG["bindir"], RbConfig::CONFIG["ruby_install_name"]).match(/\/rvm\/|\/\.rvm\/|\/\.rbenv/) != nil
|
60
|
+
end
|
56
61
|
end
|
57
62
|
end
|
data/lib/hobo/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,181 +1,181 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobo-inviqa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Simons
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slop
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 3.4.7
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.4.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: highline
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.6.20
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.6.20
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 10.1.1
|
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
54
|
version: 10.1.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake-hooks
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 1.2.3
|
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
68
|
version: 1.2.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 1.5.2
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.5.2
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: deepstruct
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.0.5
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.0.5
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: semantic
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: 1.3.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 1.3.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: aws-sdk
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 1.34.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - ~>
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 1.34.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: ruby-progressbar
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - ~>
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 1.4.1
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - ~>
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.4.1
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: teerb
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - ~>
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: 0.0.1
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - ~>
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 0.0.1
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: net-ssh-simple
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - ~>
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: 1.6.3
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - ~>
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 1.6.3
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: pry
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - ~>
|
171
|
+
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: 0.9.12
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - ~>
|
178
|
+
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 0.9.12
|
181
181
|
description: Inviqan toolbelt
|
@@ -186,7 +186,8 @@ executables:
|
|
186
186
|
extensions: []
|
187
187
|
extra_rdoc_files: []
|
188
188
|
files:
|
189
|
-
- .editorconfig
|
189
|
+
- ".editorconfig"
|
190
|
+
- ".gitignore"
|
190
191
|
- Gemfile
|
191
192
|
- Gemfile.lock
|
192
193
|
- Guardfile
|
@@ -207,6 +208,7 @@ files:
|
|
207
208
|
- lib/hobo/asset_applicator.rb
|
208
209
|
- lib/hobo/asset_applicators/files.rb
|
209
210
|
- lib/hobo/asset_applicators/sqldump.rb
|
211
|
+
- lib/hobo/bundler.rb
|
210
212
|
- lib/hobo/cli.rb
|
211
213
|
- lib/hobo/config.rb
|
212
214
|
- lib/hobo/config/file.rb
|
@@ -219,7 +221,6 @@ files:
|
|
219
221
|
- lib/hobo/helper/http_download.rb
|
220
222
|
- lib/hobo/helper/shell.rb
|
221
223
|
- lib/hobo/helper/vm_command.rb
|
222
|
-
- lib/hobo/init/bundler_context.rb
|
223
224
|
- lib/hobo/lib/host_check.rb
|
224
225
|
- lib/hobo/lib/host_check/deps.rb
|
225
226
|
- lib/hobo/lib/host_check/git.rb
|
@@ -289,12 +290,12 @@ require_paths:
|
|
289
290
|
- lib
|
290
291
|
required_ruby_version: !ruby/object:Gem::Requirement
|
291
292
|
requirements:
|
292
|
-
- -
|
293
|
+
- - ">="
|
293
294
|
- !ruby/object:Gem::Version
|
294
295
|
version: '0'
|
295
296
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
296
297
|
requirements:
|
297
|
-
- -
|
298
|
+
- - ">="
|
298
299
|
- !ruby/object:Gem::Version
|
299
300
|
version: '0'
|
300
301
|
requirements: []
|
@@ -1,41 +0,0 @@
|
|
1
|
-
# Hack to override Gemfile to that of hobo (otherwise it'll use project specific one!)
|
2
|
-
ENV['BUNDLE_GEMFILE'] = File.expand_path('../../../../Gemfile', __FILE__)
|
3
|
-
|
4
|
-
require 'shellwords'
|
5
|
-
|
6
|
-
begin
|
7
|
-
Bundler.setup(:default)
|
8
|
-
rescue Bundler::GemNotFound => exception
|
9
|
-
puts exception
|
10
|
-
puts
|
11
|
-
puts 'Missing dependencies detected!'
|
12
|
-
print 'These will automatically be installed now, please wait'
|
13
|
-
rval = nil
|
14
|
-
|
15
|
-
fake_progress = Thread.new do
|
16
|
-
while true
|
17
|
-
print '.'
|
18
|
-
sleep 10
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
IO::popen("bundle install --gemfile=#{ENV['BUNDLE_GEMFILE'].shellescape}") do |io|
|
23
|
-
while line = io.gets
|
24
|
-
print '.'
|
25
|
-
end
|
26
|
-
fake_progress.exit
|
27
|
-
puts ' done'
|
28
|
-
io.close
|
29
|
-
rval = $?.to_i
|
30
|
-
end
|
31
|
-
|
32
|
-
if rval == 0
|
33
|
-
Kernel.exec('hobo', *$HOBO_ARGV)
|
34
|
-
else
|
35
|
-
puts
|
36
|
-
puts "Failed to install dependencies. Hobo can not proceed."
|
37
|
-
puts "Please see the error below:"
|
38
|
-
puts
|
39
|
-
throw e
|
40
|
-
end
|
41
|
-
end
|