engineyard-serverside-adapter 2.0.4 → 2.0.5
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 +7 -2
- data/Guardfile +13 -0
- data/engineyard-serverside-adapter.gemspec +1 -1
- data/lib/engineyard-serverside-adapter/action.rb +24 -12
- data/lib/engineyard-serverside-adapter/arguments.rb +9 -4
- data/lib/engineyard-serverside-adapter/command.rb +9 -7
- data/lib/engineyard-serverside-adapter/version.rb +1 -1
- metadata +9 -8
data/Gemfile
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
source
|
1
|
+
source "https://rubygems.org"
|
2
2
|
|
3
|
-
# Specify your gem's dependencies in engineyard-serverside-adapter.gemspec
|
4
3
|
gemspec
|
4
|
+
|
5
|
+
group :guard do
|
6
|
+
gem 'guard', :require => false
|
7
|
+
gem 'guard-rspec', :require => false
|
8
|
+
gem 'rb-fsevent', '~> 0.9.1', :require => false
|
9
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
guard 'rspec', :all_after_pass => true, :all_on_start => true, :cli => '--color' do
|
2
|
+
|
3
|
+
lib = "lib/engineyard-serverside-adapter"
|
4
|
+
|
5
|
+
watch(%r{^spec/(.+)_spec\.rb$})
|
6
|
+
watch(%r{^#{lib}.rb$}) { "spec" }
|
7
|
+
watch(%r{^#{lib}/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
8
|
+
watch(%r{^#{lib}/action.rb$}) { "spec" }
|
9
|
+
watch(%r{^#{lib}/command.rb$}) { "spec" }
|
10
|
+
watch(%r{^#{lib}/option.rb$}) { "spec" }
|
11
|
+
watch('spec/spec_helper.rb') { "spec" }
|
12
|
+
|
13
|
+
end
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.rubyforge_project = "engineyard-serverside-adapter"
|
16
16
|
|
17
17
|
s.add_dependency "escape", "~> 0.0.4"
|
18
|
-
s.add_dependency "
|
18
|
+
s.add_dependency "multi_json", "~> 1.6"
|
19
19
|
s.add_development_dependency "rspec", "~> 2.0"
|
20
20
|
s.add_development_dependency "rake"
|
21
21
|
|
@@ -8,12 +8,20 @@ module EY
|
|
8
8
|
class Adapter
|
9
9
|
class Action
|
10
10
|
|
11
|
+
GEM_NAME = 'engineyard-serverside'
|
12
|
+
BIN_NAME = GEM_NAME
|
13
|
+
|
11
14
|
def initialize(options = {}, &block)
|
12
15
|
@gem_bin_path = Pathname.new(options[:gem_bin_path] || "")
|
13
|
-
|
16
|
+
|
17
|
+
@arguments = options[:arguments] || Arguments.new
|
18
|
+
@serverside_gem_name = options[:serverside_gem_name] || GEM_NAME
|
19
|
+
@serverside_bin_name = options[:serverside_bin_name] || BIN_NAME
|
20
|
+
|
14
21
|
block.call @arguments if block
|
15
|
-
|
16
|
-
@serverside_version
|
22
|
+
|
23
|
+
@serverside_version = Gem::Version.create(@arguments.serverside_version || ENGINEYARD_SERVERSIDE_VERSION.dup)
|
24
|
+
|
17
25
|
validate!
|
18
26
|
end
|
19
27
|
|
@@ -46,11 +54,11 @@ module EY
|
|
46
54
|
end
|
47
55
|
|
48
56
|
def check_command
|
49
|
-
escaped_serverside_version = @serverside_version.to_s
|
57
|
+
escaped_serverside_version = Regexp.escape(@serverside_version.to_s)
|
50
58
|
|
51
59
|
[
|
52
|
-
Escape.shell_command([
|
53
|
-
Escape.shell_command(["grep", "
|
60
|
+
Escape.shell_command([gem_command_path, "list", @serverside_gem_name]),
|
61
|
+
Escape.shell_command(["grep", "#{@serverside_gem_name} "]), # trailing space for better matching
|
54
62
|
Escape.shell_command(["egrep", "-q", "#{escaped_serverside_version}[,)]"]),
|
55
63
|
].join(" | ")
|
56
64
|
end
|
@@ -62,20 +70,24 @@ module EY
|
|
62
70
|
#
|
63
71
|
# rubygems help suggests that --remote will disable this
|
64
72
|
# behavior, but it doesn't.
|
65
|
-
install_command = "cd `mktemp -d` && #{
|
73
|
+
install_command = "cd `mktemp -d` && #{gem_command_path} install #{@serverside_gem_name} --no-rdoc --no-ri -v #{@serverside_version}"
|
66
74
|
Escape.shell_command(['sudo', 'sh', '-c', install_command])
|
67
75
|
end
|
68
76
|
|
69
|
-
def
|
77
|
+
def gem_command_path
|
70
78
|
@gem_bin_path.join('gem').to_s
|
71
79
|
end
|
72
80
|
|
81
|
+
def serverside_command_path
|
82
|
+
@gem_bin_path.join(@serverside_bin_name).to_s
|
83
|
+
end
|
84
|
+
|
73
85
|
def action_command
|
74
|
-
|
75
|
-
|
76
|
-
|
86
|
+
Command.new(serverside_command_path, @serverside_version, *task) do |cmd|
|
87
|
+
applicable_options.each do |option|
|
88
|
+
cmd.send("#{option.type}_argument", option.to_switch, @arguments[option.name])
|
89
|
+
end
|
77
90
|
end
|
78
|
-
cmd
|
79
91
|
end
|
80
92
|
|
81
93
|
def validate!
|
@@ -5,6 +5,10 @@ module EY
|
|
5
5
|
|
6
6
|
def self.nonempty_writer(*names)
|
7
7
|
names.each do |name|
|
8
|
+
define_method(name) do
|
9
|
+
self[name]
|
10
|
+
end
|
11
|
+
|
8
12
|
define_method(:"#{name}=") do |value|
|
9
13
|
if value.nil? || value.to_s.empty?
|
10
14
|
raise ArgumentError, "Value for '#{name}' must be non-empty."
|
@@ -16,6 +20,10 @@ module EY
|
|
16
20
|
|
17
21
|
def self.writer(*names)
|
18
22
|
names.each do |name|
|
23
|
+
define_method(name) do
|
24
|
+
self[name]
|
25
|
+
end
|
26
|
+
|
19
27
|
define_method(:"#{name}=") do |value|
|
20
28
|
self[name] = value
|
21
29
|
end
|
@@ -63,14 +71,11 @@ module EY
|
|
63
71
|
self[:instances] = instances
|
64
72
|
end
|
65
73
|
|
74
|
+
# Uses Gem::Version.create to validate the version string
|
66
75
|
def serverside_version=(value)
|
67
76
|
self[:serverside_version] = Gem::Version.create(value.dup) # dup b/c Gem::Version sometimes modifies its argument :(
|
68
77
|
end
|
69
78
|
|
70
|
-
def method_missing(meth, *)
|
71
|
-
key?(meth) ? self[meth] : super
|
72
|
-
end
|
73
|
-
|
74
79
|
end
|
75
80
|
end
|
76
81
|
end
|
@@ -1,19 +1,21 @@
|
|
1
1
|
require 'escape'
|
2
|
-
require '
|
2
|
+
require 'multi_json'
|
3
3
|
|
4
4
|
module EY
|
5
5
|
module Serverside
|
6
6
|
class Adapter
|
7
7
|
class Command
|
8
|
-
def initialize(
|
9
|
-
@binary
|
10
|
-
@
|
11
|
-
@task
|
8
|
+
def initialize(binary_path, version, *task)
|
9
|
+
@binary = binary_path.to_s
|
10
|
+
@version = version
|
11
|
+
@task = task
|
12
12
|
@arguments = []
|
13
|
+
|
14
|
+
yield self if block_given?
|
13
15
|
end
|
14
16
|
|
15
17
|
def to_s
|
16
|
-
Escape.shell_command [@binary, "_#{@
|
18
|
+
Escape.shell_command [@binary, "_#{@version}_"] + @task + @arguments.sort_by { |x| x.first }.flatten
|
17
19
|
end
|
18
20
|
|
19
21
|
def array_argument(switch, values)
|
@@ -51,7 +53,7 @@ module EY
|
|
51
53
|
|
52
54
|
def json_argument(switch, value)
|
53
55
|
if value
|
54
|
-
string_argument(switch, value
|
56
|
+
string_argument(switch, MultiJson.dump(value))
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module EY
|
2
2
|
module Serverside
|
3
3
|
class Adapter
|
4
|
-
VERSION = "2.0.
|
4
|
+
VERSION = "2.0.5"
|
5
5
|
# For backwards compatibility, the serverside version default will be maintained until 2.1
|
6
6
|
# It is recommended that you supply a serverside_version to engineyard-serverside-adapter
|
7
7
|
# rather than relying on the default version here. This default will go away soon.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: engineyard-serverside-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: escape
|
@@ -29,21 +29,21 @@ dependencies:
|
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: 0.0.4
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
32
|
+
name: multi_json
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
36
|
-
- -
|
36
|
+
- - ~>
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: '
|
38
|
+
version: '1.6'
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '1.6'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,6 +87,7 @@ extra_rdoc_files: []
|
|
87
87
|
files:
|
88
88
|
- .gitignore
|
89
89
|
- Gemfile
|
90
|
+
- Guardfile
|
90
91
|
- LICENSE
|
91
92
|
- README.md
|
92
93
|
- Rakefile
|
@@ -126,7 +127,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
127
|
version: '0'
|
127
128
|
segments:
|
128
129
|
- 0
|
129
|
-
hash:
|
130
|
+
hash: 3338596083708066819
|
130
131
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
132
|
none: false
|
132
133
|
requirements:
|