class Dockerkit::Base
Public Instance Methods
alias(name = nil, *cmds)
click to toggle source
# File lib/dockerkit.rb, line 45 def alias(name = nil, *cmds) return say((Alias.all[name] || "No such Alias:#{name}").red) if options['help'] return Alias.list_alias unless name return Alias.delete_alias(name) if name && options['delete'] return Alias.create_alias(name, cmds) if cmds end
init()
click to toggle source
# File lib/dockerkit.rb, line 61 def init dir = options['dir'] load_config(dir) do |config| config[:image_name] = ask_with_default('Image name?', "#{File.basename(Dir.getwd)}:latest") config[:repository_urls] = multi_ask('Add new repository_url?') end inside(dir) do init_dockerfile if file_not_exist?(DOCKER_FILE.to_s) && ask('Need Create Dockerfile?'.red, limited_to: %w[y n]) == 'y' init_docker_compose_file if file_not_exist?(DOCKER_COMPOSE_FILE.to_s) && ask('Need Create docker-compose file?'.red, limited_to: %w[y n]) == 'y' end end
method_missing(method, *args)
click to toggle source
# File lib/dockerkit.rb, line 76 def method_missing(method, *args) return Alias.run(method.to_s, args) if Alias.all.key?(method.to_s) return send(:docker, *args.unshift(method.to_s.gsub(/^_/, ''))) if method.to_s.start_with?('_') end
Private Instance Methods
ask_with_default(question, default)
click to toggle source
# File lib/dockerkit.rb, line 115 def ask_with_default(question, default) answer = ask("#{question.red} [default:#{default.blue}]:").chomp answer.empty? ? default : answer end
docker(*args)
click to toggle source
# File lib/dockerkit.rb, line 145 def docker(*args) hammer.run("docker #{args.join(' ')}") end
file_not_exist?(file)
click to toggle source
# File lib/dockerkit.rb, line 131 def file_not_exist?(file) !File.exist?(file) end
init_docker_compose_file(dir = '.')
click to toggle source
# File lib/dockerkit.rb, line 93 def init_docker_compose_file(dir = '.') load_config(dir) do |config| config[:service_name] = ask_with_default('Service Name is ?', 'app') @config = config template("#{self.class.source_root}/templates/docker-compose.yml", DOCKER_COMPOSE_FILE) end end
init_dockerfile(dir = '.')
click to toggle source
# File lib/dockerkit.rb, line 83 def init_dockerfile(dir = '.') load_config(dir) do |config| config[:author] = ask_with_default('Author is ?', ENV['USER'].camelize) config[:base_image] = ask_with_default('Base Image?', 'alpine') config[:deamon_cmd] = ask_with_default('Deamon CMD?', 'tail -f /dev/null') @config = config template("#{self.class.source_root}/templates/Dockerfile", DOCKER_FILE) end end
load_config(dir) { |config| ... }
click to toggle source
# File lib/dockerkit.rb, line 120 def load_config(dir) inside dir do create_file(DOCKER_CONFIG_FILE) unless File.exist?(DOCKER_CONFIG_FILE) config = YAML.load_file(DOCKER_CONFIG_FILE) || {} if block_given? yield config create_file(DOCKER_CONFIG_FILE, config.to_yaml) end end end
multi_ask(question, **opt)
click to toggle source
# File lib/dockerkit.rb, line 135 def multi_ask(question, **opt) ret = [] answer = 'start' until answer.empty? answer = ask("#{question.red},(null input to end the question)", opt).chomp ret.push answer unless answer.empty? end ret end
precheck()
click to toggle source
# File lib/dockerkit.rb, line 149 def precheck true end
search_with_ask(name, klass, question)
click to toggle source
# File lib/dockerkit.rb, line 101 def search_with_ask(name, klass, question) ret = klass.search(name) return ret.first if ret.size == 1 unless ret.empty? q = ret.each_with_index.map { |image, i| "[#{i + 1}] #{image}" } q.unshift(klass.headers) # print_table(q) say(q.join('')) answer = ask(question, limited_to: ('1'..ret.size.to_s).to_a.unshift('q')) return if answer == 'q' ret[answer.to_i - 1] end end