1
1
#!/usr/bin/env node
2
2
'use strict'
3
3
4
- const fs = require ( 'fs' )
5
- const glob = require ( 'glob' )
4
+ const fs = require ( 'fs' ) . promises
5
+ // const glob = require('glob')
6
6
const path = require ( 'path' )
7
7
const mkdirp = require ( 'mkdirp' )
8
8
const pug = require ( 'pug' )
9
- const { basename, dirname, resolve, extname, sep } = path
10
-
11
- const argv = require ( 'minimist' ) ( process . argv . slice ( 2 ) , {
12
- // boolean: ['enablePrettier', 'injectVendors', 'injectSvg']
13
- } )
14
- console . dir ( argv )
15
- const { src } = argv
16
- const { dest } = argv
17
-
18
- // Get all pug files
19
- const getAllFiles = src => {
20
- // const cwd = 'pug/'
21
- const pattern = `${ src } /**/*.pug`
22
- const options = {
23
- ignore : `${ src } /_*/**`
24
- }
25
- return new glob . sync ( pattern , options )
26
- }
9
+ const { basename, dirname, resolve, sep } = path
10
+
11
+ const globby = require ( 'globby' )
27
12
28
- const isPug = filename => extname ( filename ) === '.pug'
13
+ // These are the filetypes we only care about replacing the version
14
+ const GLOB = [
15
+ '**/*.pug'
16
+ ]
17
+
18
+ const SRC = 'src/pug/views/'
19
+
20
+ const GLOBBY_OPTIONS = {
21
+ cwd : path . join ( __dirname , '..' , SRC )
22
+ }
29
23
30
24
const compile = ( filename , basedir ) => {
31
- const levels = basedir . split ( `${ sep } ` ) . filter ( el => el !== '' ) . length
25
+ const levels = basedir . split ( `${ sep } ` ) . filter ( el => el !== '' ) . length
32
26
const base = levels => {
33
27
let path = './'
34
28
while ( levels > 0 ) {
@@ -49,38 +43,43 @@ const compile = (filename, basedir) => {
49
43
return html
50
44
}
51
45
52
- const checkPath = ( src , dest ) => {
53
- // Check if path is file or directory
54
- if ( fs . statSync ( src ) . isDirectory ( ) ) {
55
- const files = getAllFiles ( src )
56
- files . forEach ( file => {
57
- if ( isPug ( file ) ) {
58
- compilePugToHtml ( resolve ( file ) , dest )
46
+ // Build html files
47
+ const compilePugToHtml = ( file , dest ) => {
48
+ const dir = dirname ( file )
49
+ const filename = basename ( file ) . replace ( '.pug' , '.html' )
50
+ const relative = path . relative ( path . join ( __dirname , '..' ) , dir . replace ( SRC , '' ) )
51
+ const html = compile ( path . join ( __dirname , '..' , SRC , file ) , `${ relative } ` )
52
+
53
+ mkdirp ( path . join ( __dirname , '..' , dest , relative ) ) . then ( ( ) => {
54
+ fs . writeFile ( resolve ( __dirname , '..' , dest , relative , filename ) , html , err => {
55
+ if ( err ) {
56
+ throw err
59
57
}
60
- // TODO: handle errors
58
+
59
+ console . log ( `${ resolve ( __dirname , '..' , dest , relative , filename ) } file saved!` )
61
60
} )
62
- } else if ( isPug ( src ) ) {
63
- compilePugToHtml ( resolve ( src ) , dest )
64
- }
65
- // TODO: handle errors
61
+ } )
66
62
}
67
63
68
- // Build html files
69
- const compilePugToHtml = ( src , dest ) => {
70
- const dir = dirname ( src )
71
- const file = basename ( src ) . replace ( '.pug' , '.html' )
72
- const relative = path . relative ( resolve ( __dirname , '..' ) , dir . replace ( `src${ sep } pug${ sep } views` , '' ) )
73
- const html = compile ( src , `${ relative } ` )
74
- mkdirp . sync ( resolve ( __dirname , '..' , dest , relative ) )
64
+ const args = require ( 'minimist' ) ( process . argv . slice ( 2 ) )
75
65
66
+ async function main ( args ) {
67
+ const { dest } = args
76
68
77
- fs . writeFile ( resolve ( __dirname , '..' , dest , relative , file ) , html , err => {
78
- if ( err ) {
79
- throw err
80
- }
69
+ if ( ! dest ) {
70
+ console . error ( 'USAGE: change-version old_version new_version [--verbose] [--dry[-run]]' )
71
+ console . error ( 'Got arguments:' , args )
72
+ process . exit ( 1 )
73
+ }
81
74
82
- console . log ( `${ resolve ( __dirname , '..' , dest , relative , file ) } file saved!` )
83
- } )
75
+ try {
76
+ const files = await globby ( GLOB , GLOBBY_OPTIONS )
77
+
78
+ await Promise . all ( files . map ( file => compilePugToHtml ( file , dest ) ) )
79
+ } catch ( error ) {
80
+ console . error ( error )
81
+ process . exit ( 1 )
82
+ }
84
83
}
85
84
86
- checkPath ( src , dest )
85
+ main ( args )
0 commit comments