1
1
import { stream } from 'fast-glob'
2
2
import { promises as fs , existsSync } from 'fs'
3
- import { resolve , dirname , join , relative } from 'path'
3
+ import { dirname , join , relative , extname } from 'path'
4
4
import unixify from 'unixify'
5
5
import { getVueMessages , mergeFtl } from '../..'
6
6
@@ -14,24 +14,34 @@ const log = console.log.bind(console)
14
14
15
15
export const run = async ( flags : Options ) => {
16
16
let count = 0
17
- for await ( const file of stream ( unixify ( flags . inDir ) + '/**' , { ignore : [ '**/node_modules' ] } ) ) {
17
+ for await ( const file of stream ( unixify ( flags . inDir ) + '/**' , { ignore : [ '**/node_modules' , unixify ( flags . outDir ) ] } ) ) {
18
18
count ++
19
19
const data = await fs . readFile ( file )
20
+ const isVueFile = extname ( file . toString ( ) ) === '.vue'
21
+ const isFtlFile = extname ( file . toString ( ) ) === '.ftl'
22
+ if ( isVueFile ) {
23
+ const vueMessages = getVueMessages ( data . toString ( ) )
24
+ for ( const { locale, source, messages } of vueMessages ) {
25
+ const outputPath = join ( flags . outDir , locale , relative ( flags . inDir , `${ file } .ftl` ) )
26
+ await fs . mkdir ( dirname ( outputPath ) , { recursive : true } )
27
+ if ( flags . clean || ! existsSync ( outputPath ) ) {
28
+ await fs . writeFile ( outputPath , source )
29
+ } else {
30
+ const existingFtlData = await fs . readFile ( outputPath )
20
31
21
- const vueMessages = getVueMessages ( data . toString ( ) )
22
- for ( const { locale, source, messages } of vueMessages ) {
23
- const outputPath = join ( flags . outDir , locale , relative ( flags . inDir , `${ file } .ftl` ) )
24
- await fs . mkdir ( dirname ( outputPath ) , { recursive : true } )
25
- if ( flags . clean || ! existsSync ( outputPath ) ) {
26
- await fs . writeFile ( outputPath , source )
27
- } else {
28
- const existingFtlData = await fs . readFile ( outputPath )
29
-
30
- const newData = mergeFtl ( existingFtlData . toString ( ) , messages )
32
+ const newData = mergeFtl ( existingFtlData . toString ( ) , messages )
31
33
32
- await fs . writeFile ( outputPath , newData )
34
+ await fs . writeFile ( outputPath , newData )
35
+ }
33
36
}
34
37
}
38
+ else if ( isFtlFile ) {
39
+ const fileData = file . toString ( ) . split ( '.' )
40
+ const locale = fileData [ fileData . length - 2 ]
41
+ const outputPath = join ( flags . outDir , locale , relative ( flags . inDir , `${ file } ` ) )
42
+ await fs . mkdir ( dirname ( outputPath ) , { recursive : true } )
43
+ await fs . copyFile ( file , outputPath )
44
+ }
35
45
}
36
46
37
47
log ( `Extracted messages from ${ count } files` )
0 commit comments