1 | #! /usr/bin/env node
|
2 |
|
3 | var argv = require('minimist')(process.argv.slice(2));
|
4 | var fs = require('fs-extended');
|
5 | var ejs = require("ejs");
|
6 | var path = require("path");
|
7 | var child = require("child_process");
|
8 | var gitconfig = require('git-config');
|
9 | var prompt = require('prompt');
|
10 |
|
11 |
|
12 |
|
13 | var author, email;
|
14 | var name = argv.n || '';
|
15 | var repo_url = argv.u || '';
|
16 | var directorio = argv.c;
|
17 | var help = argv.h;
|
18 |
|
19 |
|
20 |
|
21 | var deploy = argv.d;
|
22 | var ip_iaas = argv.iaas_ip || '';
|
23 | var path_iaas = argv.iaas_path || '';
|
24 |
|
25 |
|
26 | function crear_estructura(dir){
|
27 | console.log("\n============ CREANDO ESTRUCTURA GITBOOK ============")
|
28 |
|
29 |
|
30 | fs.createDir(path.join(process.cwd(), dir), function(err){
|
31 | if(err)
|
32 | console.log(err);
|
33 | });
|
34 |
|
35 |
|
36 | fs.createDir(path.join(process.cwd(), dir , 'txt'), function(err){
|
37 | if(err)
|
38 | console.log(err);
|
39 | });
|
40 |
|
41 |
|
42 | fs.createDir(path.join(process.cwd(), dir , 'scripts'), function(err){
|
43 | if(err)
|
44 | console.log(err);
|
45 | });
|
46 |
|
47 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
120 | function 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 |
|
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 |
|
161 | if(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 | }
|
174 | else{
|
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 |
|
253 | var leng = deploy.length
|
254 |
|
255 | if(leng >1){
|
256 |
|
257 |
|
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 |
|
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 |