Top Level Namespace
Defined Under Namespace
Modules: CONFIG Classes: ConfigManager, DockerManager
Instance Method Summary collapse
- #auto_ports?(default_web_port, default_db_port) ⇒ Boolean
- #check_docker_exist ⇒ Object
- #create_file(id, name, table_prefix, web_port, db_port) ⇒ Object
- #get_port(default_port, message) ⇒ Object
- #get_proyect_name ⇒ Object
- #get_table_prefix(name) ⇒ Object
- #wp_docker_create ⇒ Object
- #wp_docker_exec ⇒ Object
- #wp_docker_execute_cli ⇒ Object
- #wp_docker_help ⇒ Object
- #wp_docker_list ⇒ Object
- #wp_docker_logs ⇒ Object
- #wp_docker_open_browser ⇒ Object
- #wp_docker_remove ⇒ Object
- #wp_docker_shell ⇒ Object
- #wp_docker_start ⇒ Object
- #wp_docker_stop ⇒ Object
Instance Method Details
#auto_ports?(default_web_port, default_db_port) ⇒ Boolean
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/commands/create.rb', line 38 def auto_ports? default_web_port, default_db_port puts "Auto-assigned ports" puts "Web: #{default_web_port}" puts "Database: #{default_db_port}" puts response = "" while response != "y" && response != "n" response = ask "Use auto-assigned ports? (y/n)" end return response == "y" end |
#check_docker_exist ⇒ Object
101 102 103 104 105 106 |
# File 'lib/commands/create.rb', line 101 def check_docker_exist if File.file?("docker-compose.yml") puts "Error: docker-compose.yml exists" exit end end |
#create_file(id, name, table_prefix, web_port, db_port) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/commands/create.rb', line 109 def create_file id, name, table_prefix, web_port, db_port template = File.join(File.dirname(File.realpath(__FILE__)), '../../templates/docker-compose.yml.tpl') file = File.open(template, "r") data = file.read file.close data = data.gsub! '{id}', id.to_s data = data.gsub! '{name}', name data = data.gsub! '{web_port}', web_port.to_s data = data.gsub! '{db_port}', db_port.to_s data = data.gsub! '{table_prefix}', table_prefix out_file = File.new("docker-compose.yml", "w") out_file.puts(data) out_file.close # puts data end |
#get_port(default_port, message) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/commands/create.rb', line 81 def get_port default_port, port = ask "#{} (#{default_port}): " if port == "" return "#{default_port}" end i_port = port.to_i if i_port < 8000 puts "Error: port must be a number higher than 8000: Actually #{port}" exit end if i_port > 65535 puts "Error: port must be a number lower than 65535: Actually #{port}" exit end return port end |
#get_proyect_name ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/commands/create.rb', line 52 def get_proyect_name default = Dir.pwd.split('/').last.tr('^A-Za-z0-9', '').downcase name = ask "Enter container name (#{default}): " = 'Invalid name. Only letters and numbers. Must start with letter' if name == "" return default end if !name.match(/^[[:alpha:]][[:alnum:]]+$/) puts exit end return name end |
#get_table_prefix(name) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/commands/create.rb', line 68 def get_table_prefix name prefix = ask "Enter mysql table prefix ('#{name}' for 'wp_#{name}_'): " if prefix == "" return name end = 'Invalid name. Only letters and numbers. Must start with letter' if !name.match(/^[[:alpha:]][[:alnum:]]+$/) puts exit end return prefix end |
#wp_docker_create ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/commands/create.rb', line 1 def wp_docker_create check_docker_exist docker_manager = DockerManager.new id = docker_manager.get_new_wpd_id puts "New Instance Id: #{id}" name = get_proyect_name table_prefix = get_table_prefix name web_port = 18000 + id db_port = 13300 + id if !auto_ports? web_port, db_port web_port = get_port DEFAULT_WEB_PORT, "Enter Web Port" db_port = get_port DEFAULT_DB_PORT, "Enter Database Port" end create_file id, name, table_prefix, web_port, db_port dockerfile_wp = File.join(File.dirname(File.realpath(__FILE__)), '../../templates/Dockerfile-wp') FileUtils.copy dockerfile_wp, "./" Dir.mkdir './src' gitignore = File.join(File.dirname(File.realpath(__FILE__)), '../../templates/gitignore.tpl') FileUtils.copy gitignore, "./src/.gitignore" start_docker = "" while start_docker != "y" && start_docker != "n" start_docker = ask "Start? (y/n)" end if start_docker == "y" docker_start web_port end end |
#wp_docker_exec ⇒ Object
1 2 3 4 5 6 7 8 9 |
# File 'lib/commands/exec.rb', line 1 def wp_docker_exec config_manager = ConfigManager.new name = config_manager.get_wp_container_name args = ARGV args.slice!(0) command="docker exec -it " + name + " " + args.join(" ") system(command) end |
#wp_docker_execute_cli ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/commands/cli.rb', line 1 def wp_docker_execute_cli config_manager = ConfigManager.new unless config_manager.is_docker_compose_folder puts "docker-compose.yml does not exists in current folder." puts exit end name = config_manager.get_wp_container_name args = ARGV args.slice!(0) command="docker exec -t " + name + " wp --allow-root " + args.join(" ") system(command) puts end |
#wp_docker_help ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/commands/help.rb', line 1 def wp_docker_help puts """ Usage wp-docker <command> [<options>] Commands: create Create new wp-docker environment list Show available environments cli <command> Execute wp-cli in current wp-docker environment open Open browser shell [<environment>] Open shell in web container exec <command> Execute command in current wp-docker environment start [<environment>] Start wp-docker environment (default: current) stop [<environment>] Stop wp-docker environment (default: current) remove [<environment>] Remove wp-docker environment (default: current) logs [-t] Show apache web logs help Show this help """ end |
#wp_docker_list ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 |
# File 'lib/commands/list.rb', line 1 def wp_docker_list docker_manager = DockerManager.new environments = docker_manager.get_environments puts fill_spaces("Environment", UI_ENV_SPACES) + fill_spaces("Web Port", UI_WEB_SPACES) + fill_spaces("DB Port", UI_DB_SPACES) puts ("-" * (UI_ENV_SPACES + UI_WEB_SPACES + UI_DB_SPACES)) environments.each do |env| puts fill_spaces(env["env"], UI_ENV_SPACES) + fill_spaces(env["web_port"], UI_WEB_SPACES) + fill_spaces(env["db_port"], UI_DB_SPACES) end puts end |
#wp_docker_logs ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/commands/logs.rb', line 1 def wp_docker_logs config_manager = ConfigManager.new name = config_manager.get_wp_container_name tail_option = "" if ARGV.count == 2 if ARGV[1] == "-t" tail_option = " -f" else wp_docker_help exit end end command="docker logs " + name + tail_option system(command) end |
#wp_docker_open_browser ⇒ Object
1 2 3 4 5 6 7 |
# File 'lib/commands/browser.rb', line 1 def wp_docker_open_browser config_manager = ConfigManager.new port = config_manager.get_wp_container_port command="open http://localhost:" + port system(command) end |
#wp_docker_remove ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/commands/remove.rb', line 1 def wp_docker_remove config_manager = ConfigManager.new if ARGV.count == 2 env = ARGV[1] else env = config_manager.get_wp_environment_name end if env != nil docker_manager = DockerManager.new docker_manager.remove env end end |
#wp_docker_shell ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/commands/shell.rb', line 1 def wp_docker_shell config_manager = ConfigManager.new if ARGV.count == 2 container = "wpd_web_" + ARGV[1] else container = config_manager.get_wp_container_name end if container != nil command = "docker exec -it " + container + " /bin/bash" puts " - Executing: " + command puts system(command) end end |
#wp_docker_start ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/commands/start.rb', line 1 def wp_docker_start config_manager = ConfigManager.new if ARGV.count == 2 env = ARGV[1] else env = config_manager.get_wp_environment_name end if env != nil docker_manager = DockerManager.new docker_manager.start env end end |
#wp_docker_stop ⇒ Object
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/commands/stop.rb', line 1 def wp_docker_stop config_manager = ConfigManager.new if ARGV.count == 2 env = ARGV[1] else env = config_manager.get_wp_environment_name end if env != nil docker_manager = DockerManager.new docker_manager.stop env end end |