Top Level Namespace
Defined Under Namespace
Modules: CONFIG
Classes: ConfigManager, DockerManager
Instance Method Summary
collapse
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
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, message
port = ask "#{message} (#{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}): "
error_message = 'Invalid name. Only letters and numbers. Must start with letter'
if name == ""
return default
end
if !name.match(/^[[:alpha:]][[:alnum:]]+$/)
puts error_message
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
error_message = 'Invalid name. Only letters and numbers. Must start with letter'
if !name.match(/^[[:alpha:]][[:alnum:]]+$/)
puts error_message
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
|