11import { stream } from 'fast-glob'
22import { promises as fs , existsSync } from 'fs'
3- import { resolve , dirname , join , relative } from 'path'
3+ import { dirname , join , relative , extname } from 'path'
44import unixify from 'unixify'
55import { getVueMessages , mergeFtl } from '../..'
66
@@ -14,24 +14,34 @@ const log = console.log.bind(console)
1414
1515export const run = async ( flags : Options ) => {
1616 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 ) ] } ) ) {
1818 count ++
1919 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 )
2031
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 )
3133
32- await fs . writeFile ( outputPath , newData )
34+ await fs . writeFile ( outputPath , newData )
35+ }
3336 }
3437 }
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+ }
3545 }
3646
3747 log ( `Extracted messages from ${ count } files` )
0 commit comments