UNPKG

9.6 kBJavaScriptView Raw
1#! /usr/bin/env node
2
3var argv = require('minimist')(process.argv.slice(2));
4var fs = require('fs-extended');
5var ejs = require("ejs");
6var path = require("path");
7var child = require("child_process");
8var gitconfig = require('git-config');
9var prompt = require('prompt');
10
11
12//Variables para el package.json
13var author, email;
14var name = argv.n || '';
15var repo_url = argv.u || '';
16var directorio = argv.c;
17var help = argv.h;
18
19
20//Despliegue en iaas
21var deploy = argv.d;
22var ip_iaas = argv.iaas_ip || '';
23var path_iaas = argv.iaas_path || '';
24
25
26function crear_estructura(dir){
27 console.log("\n============ CREANDO ESTRUCTURA GITBOOK ============")
28
29 //creamos el directorio raiz
30 fs.createDir(path.join(process.cwd(), dir), function(err){
31 if(err)
32 console.log(err);
33 });
34
35 //creamos el directorio txt
36 fs.createDir(path.join(process.cwd(), dir , 'txt'), function(err){
37 if(err)
38 console.log(err);
39 });
40
41 //creamos el directorio scripts
42 fs.createDir(path.join(process.cwd(), dir , 'scripts'), function(err){
43 if(err)
44 console.log(err);
45 });
46
47 //copiamos lo que hay en txt y lo ponemos en el txt creado
48 fs.copyDir(path.join(__dirname, '..', 'template', 'txt'), path.join(process.cwd(), dir , 'txt'), function (err) {
49 if (err)
50 console.error(err)
51 });
52
53 //copiamos lo que hay en scripts y lo ponemos en el spripts creado
54 fs.copyDir(path.join(__dirname, '..','template', 'scripts'), path.join(process.cwd(), dir , 'scripts'), function (err) {
55 if (err)
56 console.error(err)
57 });
58
59 //copiamos gulpfile
60 fs.copyFile(path.join(__dirname,'..','gulpfile.js'), path.join(process.cwd(), dir , 'gulpfile.js'),function(err){
61 if(err)
62 console.log(err);
63 });
64
65 //copiamos el book
66 fs.copyFile(path.join(__dirname,'..','template','book.json'),path.join(process.cwd(), dir , 'book.json'),function(err){
67 if(err)
68 console.log(err);
69 });
70
71 //copiamos server.js
72 fs.copyFile(path.join(__dirname,'..','template','server.js'),path.join(process.cwd(), dir , 'server.js'),function(err){
73 if(err)
74 console.log(err);
75 });
76
77 //copiamos .gitignore
78 fs.copyFileSync(path.join(__dirname,'..','template','.npmignore'), path.join(process.cwd(), dir , '.gitignore'),function(err){
79 if(err)
80 console.log(err);
81 });
82
83 //copiamos .env
84 fs.copyFileSync(path.join(__dirname,'..','template','.env'), path.join(process.cwd(), dir , '.env'),function(err){
85 if(err)
86 console.log(err);
87 });
88
89 //copiamos procfile
90 fs.copyFileSync(path.join(__dirname,'..','template','Procfile'), path.join(process.cwd(), dir , 'Procfile'),function(err){
91 if(err)
92 console.log(err);
93 });
94
95
96 //Coger usuario y email de git
97 gitconfig(function(err,config){
98 if(err) console.log(err);
99
100 author = config.user.name || argv.n;
101 email = config.user.email || '';
102
103
104 //renderizando package.json
105 ejs.renderFile(path.join(__dirname,'..','template','package.ejs'),{ autor: author, autore: email, nombre: name, repourl: repo_url, ip_iaas_ull: ip_iaas , path_iaas_ull: path_iaas},
106 function(err,data){
107 if(err) {
108 console.error(err);
109 }
110 if(data) {
111 fs.writeFile(path.join(process.cwd(),nombre_dir,'package.json'), data);
112 }
113 });
114 });
115
116 console.log("Estructura de directorios creada!")
117}
118
119
120function desplegar(nombre_dir, paquete){
121
122 if(ip_iaas && path_iaas){
123
124 var paque = require(path.resolve(process.cwd(),"package.json"));
125 paque.iaas.IP=ip_iaas;
126 paque.iaas.PATH=path_iaas;
127
128
129 fs.writeFile(path.resolve(process.cwd(),'package.json'), JSON.stringify(paque, null, ' '), function (err) {
130 if(err)
131 console.error(err)
132 })
133 }
134
135
136 child.exec('npm install -g gitbook-start-'+paquete+'-alex-moi', function(error, stdout, stderr){
137 if(error)
138 console.log(error)
139
140 console.log(stderr);
141 console.log(stdout);
142 })
143
144 child.exec('npm install --save-dev gitbook-start-'+paquete+'-alex-moi', function(error, stdout, stderr){
145 if(error)
146 console.log(error)
147
148 console.log(stderr);
149 console.log(stdout);
150
151 //añadir las tareas al gulp
152 var servicio = require(path.join(process.cwd(),'node_modules','gitbook-start-'+paquete+'-alex-moi','gitbook-start-'+paquete+''));
153 servicio.initialize(nombre_dir);
154 })
155
156
157
158}
159
160
161if(help){
162 console.log("\nAyuda GitBook-Start-Alex-Moi-Nitesh:"
163 +"\n\nLos argumentos aceptados son:"
164 +"\n -a: Especificar el autor del gitbook"
165 +"\n -n: Especificar el nombre del gitbook"
166 +"\n -c: Especificar el nombre del directorio"
167 +"\n -u: Especificar la url del repositorio git"
168 +"\n -h: Help (Ayuda)"
169 +"\n -d: Deploy en IaaS(iaas.ull.es)"
170 +"\n --iaas_ip: Especificar la IP del IaaS"
171 +"\n --iaas_path: Especificar la PATH de IaaS\n");
172
173}
174else{
175
176 if(!name && !repo_url && !directorio && !ip_iaas && !path_iaas && !deploy && !help)
177 return console.log("Debe especificar -c para generar la estructura o -d para realizar el despliegue si ya esta creada la estructura")
178
179 if(directorio)
180 {
181 var existe
182 fs.existsSync(path.join(process.cwd(), directorio)) ? existe=true : existe=false;
183 console.log(path.join(process.cwd(), directorio))
184
185
186 var nombre_dir;
187 if(!existe)
188 {
189 nombre_dir = directorio
190
191 if(!deploy)
192 crear_estructura(nombre_dir);
193 else
194 return console.log("No es posible hacer un deploy sin antes generar la estructura de directorios")
195 }
196 else
197 console.log("Ya esta creada")
198 }
199
200 if(!directorio)
201 {
202 if(deploy)
203 {
204 var carpeta;
205 prompt.start();
206 prompt.get([
207 { name: 'carpeta', required: true, description: "Introduzca el nombre de la carpeta en la que esta el GitBook" },
208 ], function (err, result) {
209 if(err)
210 return err;
211 carpeta = result.carpeta
212 var pwd = process.cwd().split("/");
213
214
215 if( pwd[pwd.length-1] == carpeta )
216 {
217 if( Array.isArray( deploy ) == false)
218 {
219
220 switch (deploy) {
221 case 'iaas-ull-es':
222 desplegar(nombre_dir, 'iaas-ull-es');
223 break;
224
225 case 'heroku':
226 desplegar(nombre_dir, 'heroku')
227 break;
228
229 case 'heroku-token':
230 desplegar(nombre_dir, 'heroku-token')
231 break;
232
233 case 'heroku-token-oauth':
234 desplegar(nombre_dir, 'heroku-token-oauth')
235 break;
236
237 case 'heroku-localstrategy':
238 desplegar(nombre_dir, 'heroku-localstrategy')
239 break;
240
241 case 'github':
242 desplegar(nombre_dir, 'github')
243 break;
244
245 default:
246 console.log("La opcion " + deploy + " no es valida");
247 }
248 }
249
250 else if( Array.isArray( deploy ) == true)
251 {
252 //OPCION 5: deploy en mas de un servicio
253 var leng = deploy.length
254
255 if(leng >1){
256
257 //Comprobar que los valores del array son los correctos
258 var valido=true;
259 for (var i=0; i<leng;i++){
260 if(deploy[i]!='iaas-ull-es' && deploy[i]!='heroku' && deploy[i]!='github' ){
261 console.log("Al menos uno de los argumentos pasados es incorrecto revise la documentacion")
262 valido=false;
263 }
264 }
265
266 //Desplegar si se han introducido diferentes despliegues
267 var array=[]
268 if(valido == true)
269 for (var i = 0; i < leng; i++) {
270 if( !(deploy[i] in array ) ){
271 array.push(deploy[i])
272 array[deploy[i]]++;
273 desplegar(nombre_dir, deploy[i])
274 }
275 else
276 {
277 console.log("Error se han introducido despliegues repetidos")
278 }
279 }
280 }
281 }
282 }
283 else
284 {
285 return console.log("No puede hacer un despliegue fuera de la carpeta del book")
286 }
287
288 });
289 }
290 else
291 return console.log("Se debe especificar el deploy -d sin la opcion -c")
292 }
293}
\No newline at end of file