-
Notifications
You must be signed in to change notification settings - Fork 0
/
govi_boxes.drush.inc
153 lines (117 loc) · 5.16 KB
/
govi_boxes.drush.inc
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?php
require_once(dirname(__FILE__) . '/includes/govi_boxes.class.inc');
require_once(dirname(__FILE__) . '/includes/connection.class.inc');
require_once(dirname(__FILE__) . '/includes/dnsmasq.class.inc');
require_once(dirname(__FILE__) . '/includes/proxy.class.inc');
require_once(dirname(__FILE__) . '/includes/mariadb.class.inc');
require_once(dirname(__FILE__) . '/includes/node.class.inc');
/**
* Implements hook_drush_command
*/
function govi_boxes_drush_command() {
$items = array();
$items['govi-boxes-env'] = array(
'description' => 'El comando govi-boxes-env permite gestionar el ambiente de ejecución para la Distribución Distrital CMS: Govimentum',
'aliases' => ['gbxe'],
'arguments' => array(
'status' => 'Muestra el estado de los contenedores del ambiente de ejecución de Govimentum',
'up' => 'Inicializa los contenedores del ambiente de ejecución de Govimentum',
'down' => 'Detiene los contenedores del ambiente de ejecución de Govimentum'
),
'examples' => array(
'drush gbxe status' => 'Muestra el estado de los contenedores del ambiente de Govimentum',
'drush gbxe up' => 'Inicializa el ambiente de ejecución Govimentum',
'drush gbxe down' => 'Detiene el ambiente de ejecución de Govimentum'
),
'bootstrap' => DRUSH_BOOTSTRAP_NONE
);
$items['govi-boxes-node'] = array(
'description' => 'El comando govi-boxes-node permite gestionar los contenedores de aplicaciones con la Distribución CMS: Govimentum o sitios en Drupal',
'aliases' => ['gbxn'],
'arguments' => array(
'ops' => 'Operaciones del nodo (add,remove,start,stop,show)',
),
'options' => array(
'sitename' => array(
'description' => 'nombre del prefijo de URL de acceso al contenedor que compone el nombre de dominio de acceso al sitio con el esquema [site-name].govi.box',
),
'fresh-install' => array(
'description' => 'opción que define si el contenedor iniciará con una instalación nueva de Drupal',
),
'path' => array(
'description' => 'Ruta relativa donde se almacena la aplicación en la máquina host'
),
'branch' => array(
'description' => 'Nombre de la rama del repositorio Git que contiene el estado de la aplicación para ser desplegado en el contenedor.'
),
'with-status' => array(
'description' => 'Muestra el estado de los nodos (contenedores) de Govimentum existentes'
),
),
'examples' => array(
'drush gbxn add --prefix-url=mi-sitio --path=/home/user/projects/mi-sitio --branch=desarrollo' => 'Agrega un nuevo nodo de la aplicación',
'drush gbxn remove --sitename mi-sitio' => 'Elimina el contenedor del nodo mi-sitio',
'drush gbxn start --sitename mi-sitio' => 'Inicia el contenedor del nodo mi-sitio existente',
'drush gbxn start --fresh-install' => 'Inicia el contenedor para ejecutar una instalación nueva de Drupal',
'drush gbxn stop --sitename mi-sitio' => 'Detiene el contenedor del nodo mi-sitio',
'drush gbxn stop-all' => 'Detiene todos los nodos activos',
'drush gbxn show' => 'Muestra los nodos',
'drush gbxn show --with-status' => 'Agrega el estado a la lista de nodos'
),
'bootstrap' => DRUSH_BOOTSTRAP_NONE
);
return $items;
}
function govi_boxes_drush_help($section) {
switch ($section) {
case 'drush:govi-boxes-env':
return "Este comando gestiona el ambiente de ejecución de Govimentum que incluye servidor dnsmasq, proxy reverso dinámico y motor de base de datos";
case 'drush:govi-boxes-node':
return "Este comando gestiona los nodos (contenedores de Docker) de la aplicación que conforman los ambientes de despliegue de Govimentum o Drupal" ;
case 'drush:govi-boxes:title':
return "Gestión de contenedores para Govimentum";
case 'drush:govi-boxes:summary':
return 'Automatiza la gestión del ambiente de ejecución y contenedores de Govimentum';
}
}
function drush_govi_boxes_env($arg = 'status') {
$docker = Connection::check();
if (!$docker) return;
$boxes = new GoviBoxes(
new Dnsmasq,
new Proxy,
new DB,
new Node
);
switch ($arg) {
case 'status':
return $boxes->getEnvStatus();
case 'up':
return $boxes->setEnvUp();
case 'down':
return $boxes->setEnvDown();
}
}
function drush_govi_boxes_node($arg = 'show') {
$docker = Connection::check();
if (!$docker) return;
$addOptions = array();
$addOptions['sitename'] = drush_get_option('sitename');
$addOptions['fresh-install'] = drush_get_option('fresh-install');
$addOptions['path'] = drush_get_option('path');
$addOptions['branch'] = drush_get_option('branch');
$showOptions['with-status'] = drush_get_option('with-status');
$show = drush_get_option('show');
$boxes = new GoviBoxes(
new Dnsmasq,
new Proxy,
new DB,
new Node
);
switch ($arg) {
case 'add':
return $boxes->addNode($addOptions);
case 'show':
return $boxes->showNodes($showOptions);
}
}