| 
									
										
										
										
											2020-10-27 11:27:17 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | const { join } = require('path'); | 
					
						
							|  |  |  | const { promisify } = require('util'); | 
					
						
							| 
									
										
										
										
											2020-10-27 11:27:17 +01:00
										 |  |  | const fs = require('fs-extra'); | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | const glob = promisify(require('glob').glob); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  | const cleanFile = async filePath => { | 
					
						
							|  |  |  |   try { | 
					
						
							|  |  |  |     const mainTranslationFileArray = filePath.split('/'); | 
					
						
							|  |  |  |     mainTranslationFileArray.splice(-1, 1); | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |     const mainTranslationFile = join(...mainTranslationFileArray, 'en.json'); | 
					
						
							|  |  |  |     const mainTranslationFileJSON = await fs.readJSON(mainTranslationFile); | 
					
						
							|  |  |  |     const currentTranslationFileJSON = await fs.readJSON(filePath); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const cleanedFile = Object.keys(mainTranslationFileJSON).reduce((acc, current) => { | 
					
						
							|  |  |  |       if (currentTranslationFileJSON[current]) { | 
					
						
							|  |  |  |         acc[current] = currentTranslationFileJSON[current]; | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |       return acc; | 
					
						
							|  |  |  |     }, {}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |     await fs.writeJson(filePath, cleanedFile, { spaces: 2 }); | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |     return Promise.resolve(); | 
					
						
							|  |  |  |   } catch (err) { | 
					
						
							|  |  |  |     return Promise.reject(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  | const reorderTrads = async filePath => { | 
					
						
							|  |  |  |   try { | 
					
						
							|  |  |  |     const data = await fs.readJSON(filePath); | 
					
						
							| 
									
										
										
										
											2020-07-16 11:31:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |     const orderedData = Object.keys(data) | 
					
						
							|  |  |  |       .sort() | 
					
						
							|  |  |  |       .reduce((acc, current) => { | 
					
						
							|  |  |  |         acc[current] = data[current]; | 
					
						
							| 
									
										
										
										
											2020-07-16 11:31:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |         return acc; | 
					
						
							|  |  |  |       }, {}); | 
					
						
							| 
									
										
										
										
											2020-07-16 11:31:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |     await fs.writeJSON(filePath, orderedData, { spaces: 2 }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return Promise.resolve(); | 
					
						
							|  |  |  |   } catch (err) { | 
					
						
							|  |  |  |     return Promise.reject(err); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | async function run() { | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |   const corePackageDirs = await glob('packages/core/*'); | 
					
						
							|  |  |  |   const pluginsPackageDirs = await glob('packages/plugins/*'); | 
					
						
							|  |  |  |   const packageDirs = [...corePackageDirs, ...pluginsPackageDirs]; | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  |   const pathToTranslationsFolder = ['admin', 'src', 'translations']; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-23 19:03:52 +02:00
										 |  |  |   const translationFiles = packageDirs | 
					
						
							|  |  |  |     .filter(dir => { | 
					
						
							|  |  |  |       return fs.existsSync(join(dir, ...pathToTranslationsFolder, 'en.json')); | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |     .reduce((acc, dir) => { | 
					
						
							|  |  |  |       const files = fs.readdirSync(join(dir, ...pathToTranslationsFolder)); | 
					
						
							|  |  |  |       const filePaths = files | 
					
						
							|  |  |  |         .map(file => { | 
					
						
							|  |  |  |           return join(dir, ...pathToTranslationsFolder, file); | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .filter(file => { | 
					
						
							|  |  |  |           return file.split('.')[1] !== 'js' && !fs.lstatSync(file).isDirectory(); | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return [...acc, ...filePaths]; | 
					
						
							|  |  |  |     }, []); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // Reorder
 | 
					
						
							|  |  |  |   await Promise.all(translationFiles.map(reorderTrads)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // CleanFiles
 | 
					
						
							|  |  |  |   await Promise.all(translationFiles.map(cleanFile)); | 
					
						
							| 
									
										
										
										
											2020-07-15 12:05:25 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | run().catch(err => console.error(err)); |