-
-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathconvertBadges.ts
More file actions
82 lines (76 loc) · 2.54 KB
/
convertBadges.ts
File metadata and controls
82 lines (76 loc) · 2.54 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { copyFile, existsSync, writeFileSync } from 'fs';
import path from 'path';
import { ConfigTaskOutput } from './convertConfig';
import { createOutputDir, deleteOutputDir } from './fileUtils';
import { Promisable, Task, TaskOutput } from './Task';
export async function convertBadges(
badgesDir: string,
configData: ConfigTaskOutput,
verbose: number
) {
const dstBadgeDir = path.join('src/gen-assets', 'badges');
if (!configData.data.mainFeatures['share-apple-app-link']) {
deleteOutputDir(dstBadgeDir);
return;
}
createOutputDir(dstBadgeDir);
// Badge languages from config
const languages = Object.keys(configData.data.interfaceLanguages!.writingSystems);
// Make sure there is english for fallback
if (languages.length > 1 && !languages.includes('en')) {
languages.push('en');
}
const foundLanguages = [];
for (const language of languages) {
const srcFile = path.join(badgesDir, language + '_app_store.svg');
const dstFile = path.join(dstBadgeDir, language + '_app_store.svg');
if (existsSync(srcFile)) {
foundLanguages.push(language);
copyFile(srcFile, dstFile, function (err: any) {
if (err) {
throw err;
}
if (verbose) {
console.log(`copied ${srcFile} to ${dstFile}`);
}
});
}
}
//write index file
writeFileSync(
path.join(dstBadgeDir, 'languages.json'),
`[${(() => {
//export badge languages as array
let s = '';
let i = 0;
for (const language of foundLanguages) {
s += '"' + language + '"' + (i + 1 < foundLanguages.length ? ', ' : '');
i++;
}
return s;
})()}]`
);
}
export interface BadgesTaskOutput extends TaskOutput {
taskName: 'ConvertBadges';
}
export class ConvertBadges extends Task {
public triggerFiles: string[] = ['appdef.xml'];
public badgesDir: string;
constructor(dataDir: string) {
super(dataDir);
this.badgesDir = path.join(__dirname, 'badges');
}
public run(
verbose: number,
outputs: Map<string, TaskOutput>,
modifiedPaths: string[]
): Promisable<BadgesTaskOutput> {
const config = outputs.get('ConvertConfig') as ConfigTaskOutput;
convertBadges(this.badgesDir, config, verbose);
return {
taskName: 'ConvertBadges',
files: []
};
}
}