ploy 0.0.5 → 0.0.6
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 +4 -4
- data/lib/ploy/command.rb +2 -0
- data/lib/ploy/command/client.rb +106 -0
- data/lib/ploy/packageset.rb +23 -0
- data/lib/ploy/s3storage.rb +5 -1
- data/lib/ploy/yamlreader.rb +18 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2144fca6b9fec5eeed9fb7a1bf24221b968b3854
|
4
|
+
data.tar.gz: 8b26ad40c631590974ebb6a25bf1a51457c29bb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b79fc823b4544bf03a4971d7675dcc99bdb53b02b3f829d2547fb76690e89371786954eee2a60d59c81a7ebca89576b9e0fa3be0dcd59bb11b4df2b1826f48c1
|
7
|
+
data.tar.gz: abfeecafbdadfa36996e9b8886dac2af96e154831465308335b9310700a78be1376b4527190682dd210de1fe03b4bc39dfb2130908e5cc0b35226e2a32664e2c
|
data/lib/ploy/command.rb
CHANGED
@@ -3,6 +3,7 @@ require 'ploy/command/publish'
|
|
3
3
|
require 'ploy/command/help'
|
4
4
|
require 'ploy/command/bless'
|
5
5
|
require 'ploy/command/oracle'
|
6
|
+
require 'ploy/command/client'
|
6
7
|
|
7
8
|
module Ploy
|
8
9
|
module Command
|
@@ -13,6 +14,7 @@ module Ploy
|
|
13
14
|
'help' => Ploy::Command::Help,
|
14
15
|
'publish' => Ploy::Command::Publish,
|
15
16
|
'oracle' => Ploy::Command::Oracle,
|
17
|
+
'client' => Ploy::Command::Client,
|
16
18
|
}
|
17
19
|
mod = lookup[topic] || lookup['help']
|
18
20
|
return mod.new
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'ploy/command/base'
|
2
|
+
require 'ploy/yamlreader'
|
3
|
+
require 'ploy/packageset'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
module Ploy
|
7
|
+
module Command
|
8
|
+
class Client < Base
|
9
|
+
def run(argv)
|
10
|
+
o = {
|
11
|
+
:target_packages => []
|
12
|
+
}
|
13
|
+
optparser(o).parse!(argv)
|
14
|
+
conf = conf_from_opts(o)
|
15
|
+
|
16
|
+
if conf then
|
17
|
+
ps = Ploy::PackageSet.new(conf)
|
18
|
+
if ps.locked?
|
19
|
+
puts "locked. taking no action."
|
20
|
+
else
|
21
|
+
ips = installable_packages(o[:target_packages], ps.packages)
|
22
|
+
ips.each do |package|
|
23
|
+
if package.check_new_version then
|
24
|
+
package.install
|
25
|
+
puts "installed #{package.deploy_name}"
|
26
|
+
else
|
27
|
+
puts "no new #{package.deploy_name} available"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
else
|
32
|
+
puts "error reading conf"
|
33
|
+
help()
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def help
|
38
|
+
return <<helptext
|
39
|
+
usage: ploy client OPTS
|
40
|
+
|
41
|
+
#{optparser}
|
42
|
+
|
43
|
+
Examples:
|
44
|
+
|
45
|
+
$ ploy client -f set.yml -d foo -d bar
|
46
|
+
$ ploy client -b bucket -n this/that/set.yml -d foo -d bar
|
47
|
+
$ ploy client -u http://example.com/set.yml -d foo -d bar
|
48
|
+
|
49
|
+
All of those examples will try to install the same packages, but use
|
50
|
+
different sources for configuration. The first uses a file, the second
|
51
|
+
uses S3, and the third uses a web service.
|
52
|
+
|
53
|
+
Summary:
|
54
|
+
|
55
|
+
The client command is like an "install" command that uses external
|
56
|
+
configuration instead of command-line options. It can use a file,
|
57
|
+
or talk to S3 or a web service.
|
58
|
+
|
59
|
+
helptext
|
60
|
+
end
|
61
|
+
|
62
|
+
def installable_packages(target_packages, packages)
|
63
|
+
tph = {}
|
64
|
+
target_packages.each { |tp| tph[tp] = true }
|
65
|
+
packages.find_all { |p| tph[p.deploy_name] }
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
def conf_from_opts(o)
|
70
|
+
yr = Ploy::YamlReader.new
|
71
|
+
conf = nil
|
72
|
+
if o[:bucket] and o[:stack] then
|
73
|
+
conf = yr.from_s3(o[:bucket], o[:s3_name])
|
74
|
+
elsif o[:hub_host] then
|
75
|
+
conf = yr.from_http(o[:http_url])
|
76
|
+
elsif o[:path] then
|
77
|
+
conf = yr.from_file(o[:path])
|
78
|
+
end
|
79
|
+
return conf
|
80
|
+
end
|
81
|
+
|
82
|
+
def optparser(o = {})
|
83
|
+
options = OptionParser.new do |opts|
|
84
|
+
opts.banner = ''
|
85
|
+
opts.on("-b", "--bucket BUCKET", "use the given S3 bucket") do |bucket|
|
86
|
+
o[:bucket] = bucket
|
87
|
+
end
|
88
|
+
opts.on("-n", "--s3-name S3_NAME", "use the given resource name") do |name|
|
89
|
+
o[:s3_name] = name
|
90
|
+
end
|
91
|
+
opts.on("-u", "--http-url HTTP_URL", "read config from an http URL") do |url|
|
92
|
+
o[:http_url] = url
|
93
|
+
end
|
94
|
+
opts.on("-f", "--file PATH", "read config from file") do |path|
|
95
|
+
o[:path] = path
|
96
|
+
end
|
97
|
+
opts.on("-d", "--deploy DEPLOY_NAME", "a deploy/remote package to install, subject to hub config") do |name|
|
98
|
+
o[:target_packages].push(name)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
return options
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Ploy
|
2
|
+
class PackageSet
|
3
|
+
attr_accessor :packages
|
4
|
+
|
5
|
+
def initialize(conf)
|
6
|
+
self.packages = []
|
7
|
+
conf['packages'].each do |k,v|
|
8
|
+
self.packages.push Ploy::Package.new(
|
9
|
+
conf['bucket'] || v['bucket'],
|
10
|
+
k,
|
11
|
+
v['branch'],
|
12
|
+
v['version']
|
13
|
+
)
|
14
|
+
end
|
15
|
+
@locked = conf['locked']
|
16
|
+
end
|
17
|
+
|
18
|
+
def locked?
|
19
|
+
return @locked ? true : false
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/ploy/s3storage.rb
CHANGED
@@ -16,7 +16,11 @@ module Ploy
|
|
16
16
|
def copy(from, to)
|
17
17
|
AWS::S3.new.buckets[@bucketname].objects[from].copy_to(to)
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
|
+
def read(from)
|
21
|
+
AWS::S3.new.buckets[@bucketname].objects[from].read
|
22
|
+
end
|
23
|
+
|
20
24
|
def get(from, fileio)
|
21
25
|
AWS::S3.new.buckets[@bucketname].objects[from].read do |chunk|
|
22
26
|
fileio.write(chunk)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'net/http'
|
2
|
+
|
3
|
+
module Ploy
|
4
|
+
class YamlReader
|
5
|
+
def from_file(path)
|
6
|
+
YAML.load(File.read(path))
|
7
|
+
end
|
8
|
+
|
9
|
+
def from_s3(bucket, name)
|
10
|
+
YAML.load(Ploy::S3Storage.new(bucket).read(name))
|
11
|
+
end
|
12
|
+
|
13
|
+
def from_http(url)
|
14
|
+
txt = Net::HTTP.get(URI(url))
|
15
|
+
YAML.load(txt)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bruce
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- lib/ploy/cli.rb
|
63
63
|
- lib/ploy/command/base.rb
|
64
64
|
- lib/ploy/command/bless.rb
|
65
|
+
- lib/ploy/command/client.rb
|
65
66
|
- lib/ploy/command/help.rb
|
66
67
|
- lib/ploy/command/install.rb
|
67
68
|
- lib/ploy/command/oracle.rb
|
@@ -74,8 +75,10 @@ files:
|
|
74
75
|
- lib/ploy/metaoracle.rb
|
75
76
|
- lib/ploy/metasrc.rb
|
76
77
|
- lib/ploy/package.rb
|
78
|
+
- lib/ploy/packageset.rb
|
77
79
|
- lib/ploy/publisher.rb
|
78
80
|
- lib/ploy/s3storage.rb
|
81
|
+
- lib/ploy/yamlreader.rb
|
79
82
|
- bin/ploy
|
80
83
|
homepage:
|
81
84
|
licenses: []
|