-
-
Notifications
You must be signed in to change notification settings - Fork 128
/
generateFlags.js
52 lines (47 loc) · 1.26 KB
/
generateFlags.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const fs = require('fs')
const path = require('path')
const { promisify } = require('util')
const countryList = require('./countryCodeList.json')
const writeFilePromise = promisify(fs.writeFile)
const FLAGS_PATH = 'flags'
writeToFlagsJsFiles(countryList)
function hasCode(country) {
return !!countryCode(country)
}
function countryCode(country) {
return country.alpha2
}
function codeToModule(code) {
return code.replace('-', '_')
}
function writeToFlagsJsFiles(countryList) {
fs.mkdirSync(FLAGS_PATH, { recursive: true })
const sizes = ['l', 'm', 's']
const countries = countryList.filter(hasCode)
countries.forEach((country) => {
const code = countryCode(country)
writeFilePromise(
path.join(FLAGS_PATH, `${code}.js`),
[
...sizes.map((size) => `import ${size} from '../svg/${size}/${code}.svg'`),
`export default {${sizes.join(',')}}`
].join('\n'),
'utf8'
)
})
writeFilePromise(
path.join(FLAGS_PATH, 'index.js'),
[
...countries
.map(countryCode)
.map((code) => `import ${codeToModule(code)} from './${code}'`),
`export default {${
countries
.map(countryCode)
.map(codeToModule)
.join(',')
}}`
].join('\n'),
'utf8'
)
}