dc-deck 0.1.0 → 0.2.0
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/bin/deck +4 -0
- data/lib/deck.rb +12 -8
- data/lib/deck/command_line.rb +65 -0
- data/lib/deck/command_line/container_helper.rb +55 -0
- data/lib/deck/config.rb +21 -0
- data/lib/deck/container.rb +75 -0
- data/lib/deck/container/add.rb +22 -0
- data/lib/deck/{build → container}/archive.rb +14 -6
- data/lib/deck/container/cmd.rb +25 -0
- data/lib/deck/container/env.rb +25 -0
- data/lib/deck/container/expose.rb +17 -0
- data/lib/deck/{build → container}/from.rb +5 -5
- data/lib/deck/{build → container}/name.rb +3 -3
- data/lib/deck/container/publish.rb +14 -0
- data/lib/deck/{build → container}/repository.rb +3 -3
- data/lib/deck/{build → container}/start.rb +3 -3
- data/lib/deck/container/tag.rb +18 -0
- data/lib/deck/container/variable.rb +30 -0
- data/lib/deck/{build → container}/work_dir.rb +3 -3
- data/lib/deck/repeatable.rb +26 -0
- data/lib/deck/submodule.rb +40 -1
- metadata +70 -58
- data/lib/deck/build.rb +0 -34
- data/lib/deck/build/cmd.rb +0 -18
- data/lib/deck/build/expose.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 005566227f6f22c0e3623c54bfd82637b2a8bab8
|
4
|
+
data.tar.gz: ee82398dfbf26bfabdf60420b5b234d097b7e92c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1715957696c24eb1e0ac4bc7499e139da4b6b4f41208a0058df0b785254ef4a327a1d19f113c2a610a300558e1d9483cc160dd5609797f7f243d31606ea9280b
|
7
|
+
data.tar.gz: 6587a23e6cbabedbafe51c3d0d11dcd55ca9a09d1ad42008507e299022a3d2f7c9e2e9f28dcdcbbbb9d6d63a2a016f9c970658dd4c30a7ef27fd689096cd30bf
|
data/bin/deck
ADDED
data/lib/deck.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
1
|
module Deck
|
2
|
-
autoload :
|
3
|
-
autoload :
|
4
|
-
autoload :
|
2
|
+
autoload :Config, 'deck/config'
|
3
|
+
autoload :Submodule, 'deck/submodule'
|
4
|
+
autoload :Repeatable, 'deck/repeatable'
|
5
|
+
autoload :Container, 'deck/container'
|
6
|
+
autoload :Run, 'deck/run'
|
7
|
+
autoload :CommandLine, 'deck/command_line'
|
5
8
|
|
6
9
|
class << self
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
10
|
+
def design(name, tag: nil, &block)
|
11
|
+
container = Container.new
|
12
|
+
container.name name
|
13
|
+
container.tag tag unless tag.nil?
|
14
|
+
container.instance_eval &block
|
15
|
+
container
|
12
16
|
end
|
13
17
|
|
14
18
|
def run
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'yaml'
|
3
|
+
require 'erb'
|
4
|
+
|
5
|
+
class Deck::CommandLine < Thor
|
6
|
+
require_relative 'command_line/container_helper'
|
7
|
+
class_option :dir, aliases: [:d], desc: 'path to locate definitions', default: Deck::Config['dir']
|
8
|
+
|
9
|
+
desc 'design NAME', 'build a docker image'
|
10
|
+
option :value, aliases: [:V], banner: 'KEY=VALUE', desc: 'override variable. format: key=value,key=value[,key=value...]'
|
11
|
+
def design(name)
|
12
|
+
reload_local_config
|
13
|
+
ensure_user_config
|
14
|
+
|
15
|
+
helper = ContainerHelper.new name, options
|
16
|
+
|
17
|
+
system helper.build_command
|
18
|
+
system helper.update_latest_tag
|
19
|
+
end
|
20
|
+
|
21
|
+
=begin
|
22
|
+
desc 'load NAME', 'running a docker container from image'
|
23
|
+
option :value, aliases: [:V], banner: 'KEY=VALUE', desc: 'override variable. format: key=value,key=value[,key=value...]'
|
24
|
+
def load(name)
|
25
|
+
reload_local_config
|
26
|
+
|
27
|
+
helper = ContainerHelper.new name, options
|
28
|
+
|
29
|
+
puts helper.run_command
|
30
|
+
end
|
31
|
+
|
32
|
+
desc 'config [NAME [VALUE]]', 'get/set configuration value'
|
33
|
+
def config(name = nil, value = nil)
|
34
|
+
reload_local_config
|
35
|
+
|
36
|
+
return config_list if name.nil? and value.nil?
|
37
|
+
return if value.nil? and !Deck::Config.keys.include? name
|
38
|
+
return puts(Deck::Config[name.to_sym]) if value.nil?
|
39
|
+
write_config name, value
|
40
|
+
end
|
41
|
+
=end
|
42
|
+
|
43
|
+
private
|
44
|
+
def reload_local_config
|
45
|
+
dir = options[:dir]
|
46
|
+
Deck::Config.source "#{dir}/config.yml"
|
47
|
+
Deck::Config.reload!
|
48
|
+
end
|
49
|
+
|
50
|
+
def config_list
|
51
|
+
maximum_length = Deck::Config.keys.reduce(0) { |memo,k| k.length > memo ? k.length : memo}
|
52
|
+
Deck::Config.keys.each do |key|
|
53
|
+
printf " %#{maximum_length}s : %s\n", key, Deck::Config[key]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def write_config(name, value)
|
58
|
+
hash = YAML.load(ERB.new(File.read "#{options[:dir]}/config.yml").result)
|
59
|
+
hash = {} if hash.nil? or hash.empty?
|
60
|
+
hash[name] = value
|
61
|
+
File.open("#{options[:dir]}/config.yml", 'w') do |f|
|
62
|
+
f.write(YAML.dump(hash))
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
class Deck::CommandLine::ContainerHelper
|
2
|
+
attr_reader :container
|
3
|
+
|
4
|
+
def initialize(name, options)
|
5
|
+
@options = options
|
6
|
+
|
7
|
+
load_blueprint name
|
8
|
+
end
|
9
|
+
|
10
|
+
def run_command
|
11
|
+
command = @container.run_command
|
12
|
+
process_meta command
|
13
|
+
end
|
14
|
+
|
15
|
+
def build_command
|
16
|
+
command = raw_build_command
|
17
|
+
process_meta command
|
18
|
+
end
|
19
|
+
|
20
|
+
def update_latest_tag
|
21
|
+
process_meta "docker tag -f #{@container.image_name} #{@container.repository}/#{@container.name}:latest"
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def load_blueprint(name)
|
26
|
+
@container = Deck.send(:eval, File.read("#{@options[:dir]}/#{name}.deck"))
|
27
|
+
|
28
|
+
process_variables
|
29
|
+
end
|
30
|
+
|
31
|
+
def process_meta(command)
|
32
|
+
result = command
|
33
|
+
@container.meta.each do |_, v|
|
34
|
+
result = v.process(result) if v.respond_to? :process
|
35
|
+
end
|
36
|
+
|
37
|
+
result
|
38
|
+
end
|
39
|
+
|
40
|
+
def process_variables
|
41
|
+
Hash[*(@options[:value].split(',').map { |item| item.split('=') }.flatten)].each do |key, value|
|
42
|
+
@container.meta[:variable].set key, value
|
43
|
+
end unless @options[:value].nil? or @options[:value].empty?
|
44
|
+
|
45
|
+
@container
|
46
|
+
end
|
47
|
+
|
48
|
+
def raw_build_command
|
49
|
+
<<-EOF
|
50
|
+
docker build --rm -t #{@container.image_name} - <<DOCKERFILE
|
51
|
+
#{@container.build_command}
|
52
|
+
DOCKERFILE
|
53
|
+
EOF
|
54
|
+
end
|
55
|
+
end
|
data/lib/deck/config.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'settingslogic'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
USER_CONF_LOCATION = "#{ENV['HOME']}/.deck.d"
|
5
|
+
DEFAULT_CONF_LOCATION = ['/etc/deck', USER_CONF_LOCATION]
|
6
|
+
|
7
|
+
class Deck::Config < Settingslogic
|
8
|
+
DEFAULT_CONF_LOCATION.each do |location|
|
9
|
+
source "#{location}/config.yml"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
if Deck::Config['dir'].nil?
|
14
|
+
Deck::Config['dir'] = USER_CONF_LOCATION
|
15
|
+
else
|
16
|
+
Deck::Config.source "#{Deck::Config.dir}/config.yml"
|
17
|
+
end
|
18
|
+
|
19
|
+
def ensure_user_config
|
20
|
+
FileUtils.mkdir_p USER_CONF_LOCATION
|
21
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
class Deck::Container
|
2
|
+
autoload :Repository, 'deck/container/repository'
|
3
|
+
autoload :Name, 'deck/container/name'
|
4
|
+
autoload :From, 'deck/container/from'
|
5
|
+
autoload :Expose, 'deck/container/expose'
|
6
|
+
autoload :Cmd, 'deck/container/cmd'
|
7
|
+
autoload :Archive, 'deck/container/archive'
|
8
|
+
autoload :Add, 'deck/container/add'
|
9
|
+
autoload :Start, 'deck/container/start'
|
10
|
+
autoload :WorkDir, 'deck/container/work_dir'
|
11
|
+
autoload :Tag, 'deck/container/tag'
|
12
|
+
autoload :Variable, 'deck/container/variable'
|
13
|
+
autoload :Publish, 'deck/container/publish'
|
14
|
+
autoload :Env, 'deck/container/env'
|
15
|
+
|
16
|
+
attr_reader :meta
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
@information = {}
|
20
|
+
@meta = {}
|
21
|
+
@call_order = []
|
22
|
+
self.class.constants.each do |sub|
|
23
|
+
sub = self.class.const_get(sub).new
|
24
|
+
if sub.class.meta?
|
25
|
+
@meta[sub.class.register_name] = sub
|
26
|
+
else
|
27
|
+
@information[sub.class.register_name] = sub
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def build_command
|
33
|
+
dockerfile = ''
|
34
|
+
@call_order.each do |info|
|
35
|
+
command = @information[info].build_command(@information)
|
36
|
+
dockerfile += "#{command}\n" unless command.nil?
|
37
|
+
@information[info].next if @information[info].class.include? Deck::Repeatable
|
38
|
+
end
|
39
|
+
dockerfile
|
40
|
+
end
|
41
|
+
|
42
|
+
def image_name
|
43
|
+
"#{repository.to_s}/#{name.to_s}:#{tag.to_s}"
|
44
|
+
end
|
45
|
+
|
46
|
+
def run_command
|
47
|
+
"docker run #{image_name}"
|
48
|
+
end
|
49
|
+
|
50
|
+
def method_missing(name, *args, &block)
|
51
|
+
return handle_information(name, *args, &block) if @information.include? name.to_sym
|
52
|
+
return handle_meta(name, *args, &block) if @meta.include? name.to_sym
|
53
|
+
raise NoMethodError, "do not define such method : #{name.inspect}"
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def handle_information(name, *args, &block)
|
58
|
+
if args.nil? || args.empty?
|
59
|
+
@information[name.to_sym].send :get
|
60
|
+
else
|
61
|
+
info = @information[name.to_sym]
|
62
|
+
value = info.send :set, *args
|
63
|
+
@call_order << name.to_sym unless @call_order.include? name.to_sym and not info.class.repeatable?
|
64
|
+
value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def handle_meta(name, *args, &block)
|
69
|
+
if args.nil? || args.empty?
|
70
|
+
@meta[name.to_sym].send :get
|
71
|
+
else
|
72
|
+
@meta[name.to_sym].send :set, *args
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Deck::Container::Add
|
2
|
+
include Deck::Submodule
|
3
|
+
include Deck::Repeatable
|
4
|
+
|
5
|
+
repeatable true
|
6
|
+
register_name :add
|
7
|
+
|
8
|
+
def define(file, path: '/')
|
9
|
+
step do
|
10
|
+
attributes[:file] = file
|
11
|
+
attributes[:path] = path
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def export
|
16
|
+
attributes[:file]
|
17
|
+
end
|
18
|
+
|
19
|
+
def build_command(deps)
|
20
|
+
cmd = "ADD #{attributes[:file]} #{attributes[:path]}\n"
|
21
|
+
end
|
22
|
+
end
|
@@ -1,15 +1,19 @@
|
|
1
|
-
class Deck::
|
1
|
+
class Deck::Container::Archive
|
2
2
|
include Deck::Submodule
|
3
|
+
include Deck::Repeatable
|
3
4
|
|
5
|
+
repeatable true
|
4
6
|
register_name :archive
|
5
7
|
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
def define(file, path: '/', type: :tar)
|
9
|
+
step do
|
10
|
+
attributes[:file] = file
|
11
|
+
attributes[:path] = path
|
12
|
+
attributes[:type] = type
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
|
-
def
|
16
|
+
def export
|
13
17
|
attributes[:file]
|
14
18
|
end
|
15
19
|
|
@@ -26,6 +30,10 @@ class Deck::Build::Archive
|
|
26
30
|
"cd #{attributes[:path]} && tar zxf #{filename}"
|
27
31
|
end
|
28
32
|
|
33
|
+
def zip
|
34
|
+
"cd #{attributes[:path]} && unzip #{filename}"
|
35
|
+
end
|
36
|
+
|
29
37
|
def filename
|
30
38
|
File.basename attributes[:file]
|
31
39
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Deck::Container::Cmd
|
2
|
+
include Deck::Submodule
|
3
|
+
include Deck::Repeatable
|
4
|
+
|
5
|
+
register_name :cmd
|
6
|
+
repeatable true
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
end
|
10
|
+
|
11
|
+
def define(command, workdir: '/')
|
12
|
+
step do
|
13
|
+
attributes[:command] = command
|
14
|
+
attributes[:workdir] = workdir
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def export
|
19
|
+
attributes[:command]
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_command(deps)
|
23
|
+
"RUN cd #{attributes[:workdir]} && #{attributes[:command]}"
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Deck::Container::Env
|
2
|
+
include Deck::Submodule
|
3
|
+
include Deck::Repeatable
|
4
|
+
|
5
|
+
register_name :env
|
6
|
+
repeatable true
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
end
|
10
|
+
|
11
|
+
def define(name, value)
|
12
|
+
step do
|
13
|
+
attributes[:name] = name
|
14
|
+
attributes[:value] = value
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def export
|
19
|
+
{attributes[:name].to_sym => attributes[:value]}
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_command(deps)
|
23
|
+
"ENV #{attributes[:name]} #{attributes[:value]}"
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Deck::Container::Expose
|
2
|
+
include Deck::Submodule
|
3
|
+
|
4
|
+
register_name :expose
|
5
|
+
|
6
|
+
def define(*ports)
|
7
|
+
attributes[:port] = ports
|
8
|
+
end
|
9
|
+
|
10
|
+
def export
|
11
|
+
attributes[:port]
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_command(deps)
|
15
|
+
"EXPOSE #{export.join(' ')}"
|
16
|
+
end
|
17
|
+
end
|
@@ -1,21 +1,21 @@
|
|
1
|
-
class Deck::
|
1
|
+
class Deck::Container::From
|
2
2
|
include Deck::Submodule
|
3
3
|
|
4
4
|
register_name :from
|
5
5
|
dependancies :repository
|
6
6
|
|
7
|
-
def
|
7
|
+
def define(name, of: nil)
|
8
8
|
attributes[:name] = name
|
9
9
|
attributes[:repository] = of
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def export
|
13
13
|
attributes[:name]
|
14
14
|
end
|
15
15
|
|
16
16
|
def build_command(deps)
|
17
17
|
repository = attributes[:repository]
|
18
|
-
repository = deps[:repository].
|
19
|
-
"FROM #{repository}/#{
|
18
|
+
repository = deps[:repository].get if repository.nil?
|
19
|
+
"FROM #{repository}/#{export}"
|
20
20
|
end
|
21
21
|
end
|
@@ -1,14 +1,14 @@
|
|
1
|
-
class Deck::
|
1
|
+
class Deck::Container::Name
|
2
2
|
include Deck::Submodule
|
3
3
|
|
4
4
|
register_name :name
|
5
5
|
dependancies :repository
|
6
6
|
|
7
|
-
def
|
7
|
+
def define(name)
|
8
8
|
attributes[:name] = name
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def export
|
12
12
|
attributes[:name]
|
13
13
|
end
|
14
14
|
|
@@ -1,13 +1,13 @@
|
|
1
|
-
class Deck::
|
1
|
+
class Deck::Container::Repository
|
2
2
|
include Deck::Submodule
|
3
3
|
|
4
4
|
register_name :repository
|
5
5
|
|
6
|
-
def
|
6
|
+
def define(name)
|
7
7
|
attributes[:repository] = name
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def export
|
11
11
|
attributes[:repository]
|
12
12
|
end
|
13
13
|
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
class Deck::
|
1
|
+
class Deck::Container::Start
|
2
2
|
include Deck::Submodule
|
3
3
|
|
4
4
|
register_name :start
|
5
5
|
|
6
|
-
def
|
6
|
+
def define(type, command, workdir: '.')
|
7
7
|
attributes[:type] = type
|
8
8
|
attributes[:command] = command
|
9
9
|
attributes[:workdir] = workdir
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def export
|
13
13
|
attributes[:command]
|
14
14
|
end
|
15
15
|
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Deck::Container::Variable
|
2
|
+
include Deck::Submodule
|
3
|
+
|
4
|
+
register_name :variable
|
5
|
+
type :meta
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@variables = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def define(name, value)
|
12
|
+
@variables[name.to_sym] = value
|
13
|
+
end
|
14
|
+
|
15
|
+
def prepare
|
16
|
+
Hash[*@variables.map { |k,v| [k, "::#{k}::"]}.flatten].dup.freeze
|
17
|
+
end
|
18
|
+
|
19
|
+
def process(command)
|
20
|
+
@variables.each do |k,v|
|
21
|
+
command.gsub! "::#{k}::", v.to_s
|
22
|
+
end
|
23
|
+
|
24
|
+
command
|
25
|
+
end
|
26
|
+
|
27
|
+
def meta
|
28
|
+
@variables.dup.freeze
|
29
|
+
end
|
30
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
class Deck::
|
1
|
+
class Deck::Container::WorkDir
|
2
2
|
include Deck::Submodule
|
3
3
|
|
4
4
|
register_name :workdir
|
5
5
|
|
6
|
-
def
|
6
|
+
def define(workdir)
|
7
7
|
attributes[:workdir] = workdir
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
10
|
+
def export
|
11
11
|
attributes[:workdir]
|
12
12
|
end
|
13
13
|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Deck::Repeatable
|
2
|
+
class Step
|
3
|
+
attr_reader :attributes
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@attributes = {}
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def step(&block)
|
11
|
+
@repeatable_attr ||= []
|
12
|
+
step = Step.new
|
13
|
+
step.instance_eval(&block) if block_given?
|
14
|
+
|
15
|
+
@repeatable_attr << step.attributes
|
16
|
+
end
|
17
|
+
|
18
|
+
def attributes
|
19
|
+
@index ||= 0
|
20
|
+
@repeatable_attr[@index]
|
21
|
+
end
|
22
|
+
|
23
|
+
def next
|
24
|
+
@index += 1
|
25
|
+
end
|
26
|
+
end
|
data/lib/deck/submodule.rb
CHANGED
@@ -1,4 +1,17 @@
|
|
1
1
|
module Deck::Submodule
|
2
|
+
def map
|
3
|
+
{
|
4
|
+
build: {
|
5
|
+
set: :define,
|
6
|
+
get: :export
|
7
|
+
},
|
8
|
+
meta: {
|
9
|
+
set: :define,
|
10
|
+
get: :prepare
|
11
|
+
}
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
2
15
|
def attributes
|
3
16
|
@attributes ||= {}
|
4
17
|
@attributes
|
@@ -8,13 +21,39 @@ module Deck::Submodule
|
|
8
21
|
attributes
|
9
22
|
end
|
10
23
|
|
11
|
-
def
|
24
|
+
def set(*args)
|
25
|
+
method = map[self.class.type][:set]
|
26
|
+
public_send method, *args if respond_to? method
|
27
|
+
end
|
28
|
+
|
29
|
+
def get
|
30
|
+
method = map[self.class.type][:get]
|
31
|
+
public_send method if respond_to? method
|
12
32
|
end
|
13
33
|
|
14
34
|
def build_command(deps)
|
15
35
|
end
|
16
36
|
|
17
37
|
module ClassMethods
|
38
|
+
def meta?
|
39
|
+
type == :meta
|
40
|
+
end
|
41
|
+
|
42
|
+
def repeatable?
|
43
|
+
@repeatable
|
44
|
+
end
|
45
|
+
|
46
|
+
def type(type=nil)
|
47
|
+
@type ||= :build
|
48
|
+
@type = type unless type.nil?
|
49
|
+
@type
|
50
|
+
end
|
51
|
+
|
52
|
+
def repeatable(value=nil)
|
53
|
+
@repeatable = value unless type.nil?
|
54
|
+
@repeatable
|
55
|
+
end
|
56
|
+
|
18
57
|
def register_name(name=nil)
|
19
58
|
@name = name unless name.nil?
|
20
59
|
@name
|
metadata
CHANGED
@@ -1,166 +1,177 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dc-deck
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeong, Jiung
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.19.1
|
20
17
|
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: '0.19'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.19.1
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.19'
|
27
30
|
- - ">="
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 0.19.1
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: dc-settingslogic
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
30
37
|
- - "~>"
|
31
38
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
39
|
+
version: '2.1'
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.1'
|
33
47
|
- !ruby/object:Gem::Dependency
|
34
48
|
name: rake
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
36
50
|
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 10.3.2
|
40
51
|
- - "~>"
|
41
52
|
- !ruby/object:Gem::Version
|
42
53
|
version: '10.3'
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 10.3.2
|
43
57
|
type: :runtime
|
44
58
|
prerelease: false
|
45
59
|
version_requirements: !ruby/object:Gem::Requirement
|
46
60
|
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: 10.3.2
|
50
61
|
- - "~>"
|
51
62
|
- !ruby/object:Gem::Version
|
52
63
|
version: '10.3'
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 10.3.2
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: wirble
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
56
70
|
requirements:
|
57
|
-
- - ">="
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.1.3
|
60
71
|
- - "~>"
|
61
72
|
- !ruby/object:Gem::Version
|
62
73
|
version: '0.1'
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 0.1.3
|
63
77
|
type: :development
|
64
78
|
prerelease: false
|
65
79
|
version_requirements: !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 0.1.3
|
70
81
|
- - "~>"
|
71
82
|
- !ruby/object:Gem::Version
|
72
83
|
version: '0.1'
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 0.1.3
|
73
87
|
- !ruby/object:Gem::Dependency
|
74
88
|
name: bundler
|
75
89
|
requirement: !ruby/object:Gem::Requirement
|
76
90
|
requirements:
|
77
|
-
- - ">="
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
version: 1.5.3
|
80
91
|
- - "~>"
|
81
92
|
- !ruby/object:Gem::Version
|
82
93
|
version: '1.5'
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.5.3
|
83
97
|
type: :development
|
84
98
|
prerelease: false
|
85
99
|
version_requirements: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 1.5.3
|
90
101
|
- - "~>"
|
91
102
|
- !ruby/object:Gem::Version
|
92
103
|
version: '1.5'
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 1.5.3
|
93
107
|
- !ruby/object:Gem::Dependency
|
94
108
|
name: pry
|
95
109
|
requirement: !ruby/object:Gem::Requirement
|
96
110
|
requirements:
|
97
|
-
- - ">="
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: 0.9.12
|
100
111
|
- - "~>"
|
101
112
|
- !ruby/object:Gem::Version
|
102
113
|
version: '0.9'
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 0.9.12
|
103
117
|
type: :development
|
104
118
|
prerelease: false
|
105
119
|
version_requirements: !ruby/object:Gem::Requirement
|
106
120
|
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: 0.9.12
|
110
121
|
- - "~>"
|
111
122
|
- !ruby/object:Gem::Version
|
112
123
|
version: '0.9'
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 0.9.12
|
113
127
|
- !ruby/object:Gem::Dependency
|
114
128
|
name: yard
|
115
129
|
requirement: !ruby/object:Gem::Requirement
|
116
130
|
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: 0.8.7
|
120
131
|
- - "~>"
|
121
132
|
- !ruby/object:Gem::Version
|
122
133
|
version: '0.8'
|
123
|
-
type: :development
|
124
|
-
prerelease: false
|
125
|
-
version_requirements: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
134
|
- - ">="
|
128
135
|
- !ruby/object:Gem::Version
|
129
136
|
version: 0.8.7
|
130
|
-
- - "~>"
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0.8'
|
133
|
-
- !ruby/object:Gem::Dependency
|
134
|
-
name: rspec
|
135
|
-
requirement: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - "~>"
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '2.99'
|
140
137
|
type: :development
|
141
138
|
prerelease: false
|
142
139
|
version_requirements: !ruby/object:Gem::Requirement
|
143
140
|
requirements:
|
144
141
|
- - "~>"
|
145
142
|
- !ruby/object:Gem::Version
|
146
|
-
version: '
|
143
|
+
version: '0.8'
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: 0.8.7
|
147
147
|
description: Docker CLI helper
|
148
148
|
email:
|
149
149
|
- ethernuiel@gmail.com
|
150
|
-
executables:
|
150
|
+
executables:
|
151
|
+
- deck
|
151
152
|
extensions: []
|
152
153
|
extra_rdoc_files: []
|
153
154
|
files:
|
155
|
+
- bin/deck
|
154
156
|
- lib/deck.rb
|
155
|
-
- lib/deck/
|
156
|
-
- lib/deck/
|
157
|
-
- lib/deck/
|
158
|
-
- lib/deck/
|
159
|
-
- lib/deck/
|
160
|
-
- lib/deck/
|
161
|
-
- lib/deck/
|
162
|
-
- lib/deck/
|
163
|
-
- lib/deck/
|
157
|
+
- lib/deck/command_line.rb
|
158
|
+
- lib/deck/command_line/container_helper.rb
|
159
|
+
- lib/deck/config.rb
|
160
|
+
- lib/deck/container.rb
|
161
|
+
- lib/deck/container/add.rb
|
162
|
+
- lib/deck/container/archive.rb
|
163
|
+
- lib/deck/container/cmd.rb
|
164
|
+
- lib/deck/container/env.rb
|
165
|
+
- lib/deck/container/expose.rb
|
166
|
+
- lib/deck/container/from.rb
|
167
|
+
- lib/deck/container/name.rb
|
168
|
+
- lib/deck/container/publish.rb
|
169
|
+
- lib/deck/container/repository.rb
|
170
|
+
- lib/deck/container/start.rb
|
171
|
+
- lib/deck/container/tag.rb
|
172
|
+
- lib/deck/container/variable.rb
|
173
|
+
- lib/deck/container/work_dir.rb
|
174
|
+
- lib/deck/repeatable.rb
|
164
175
|
- lib/deck/run.rb
|
165
176
|
- lib/deck/submodule.rb
|
166
177
|
homepage:
|
@@ -188,3 +199,4 @@ signing_key:
|
|
188
199
|
specification_version: 4
|
189
200
|
summary: Docker Command line helper
|
190
201
|
test_files: []
|
202
|
+
has_rdoc:
|
data/lib/deck/build.rb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
class Deck::Build
|
2
|
-
autoload :Repository, 'deck/build/repository'
|
3
|
-
autoload :Name, 'deck/build/name'
|
4
|
-
autoload :From, 'deck/build/from'
|
5
|
-
autoload :Expose, 'deck/build/expose'
|
6
|
-
autoload :Cmd, 'deck/build/cmd'
|
7
|
-
autoload :Archive, 'deck/build/archive'
|
8
|
-
autoload :Start, 'deck/build/start'
|
9
|
-
autoload :WorkDir, 'deck/build/work_dir'
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@informations = {}
|
13
|
-
@call_order = []
|
14
|
-
self.class.constants.each do |sub|
|
15
|
-
sub = self.class.const_get(sub).new
|
16
|
-
@informations[sub.class.register_name] = sub
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def build_command
|
21
|
-
@call_order.each do |info|
|
22
|
-
puts @informations[info].build_command(@informations) unless @informations[info].build_command(@informations).nil?
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def execute
|
27
|
-
end
|
28
|
-
|
29
|
-
def method_missing(name, *args, &block)
|
30
|
-
raise NoMethodError, 'do not define such method' unless @informations.include? name.to_sym
|
31
|
-
@informations[name.to_sym].send :execute, *args
|
32
|
-
@call_order << name.to_sym unless @call_order.include? name.to_sym
|
33
|
-
end
|
34
|
-
end
|
data/lib/deck/build/cmd.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
class Deck::Build::Cmd
|
2
|
-
include Deck::Submodule
|
3
|
-
|
4
|
-
register_name :cmd
|
5
|
-
|
6
|
-
def execute(command, workdir: '/')
|
7
|
-
attributes[:command] = command
|
8
|
-
attributes[:workdir] = workdir
|
9
|
-
end
|
10
|
-
|
11
|
-
def value
|
12
|
-
attributes[:command]
|
13
|
-
end
|
14
|
-
|
15
|
-
def build_command(deps)
|
16
|
-
"RUN cd #{attributes[:workdir]} && #{attributes[:command]}"
|
17
|
-
end
|
18
|
-
end
|
data/lib/deck/build/expose.rb
DELETED