1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const path_1 = __importDefault(require("path"));
|
7 | const fs_extra_1 = __importDefault(require("fs-extra"));
|
8 | const xml2js_1 = require("xml2js");
|
9 | async function getProjectStylesXMLPathAsync(projectDir) {
|
10 | try {
|
11 | const shellPath = path_1.default.join(projectDir, 'android');
|
12 | if ((await fs_extra_1.default.stat(shellPath)).isDirectory()) {
|
13 | const stylesPath = path_1.default.join(shellPath, 'app/src/main/res/values/styles.xml');
|
14 | await fs_extra_1.default.ensureFile(stylesPath);
|
15 | return stylesPath;
|
16 | }
|
17 | }
|
18 | catch (error) {
|
19 | throw new Error(`Could not create android/app/src/main/res/values/styles.xml`);
|
20 | }
|
21 | return null;
|
22 | }
|
23 | exports.getProjectStylesXMLPathAsync = getProjectStylesXMLPathAsync;
|
24 | async function readStylesXMLAsync(stylesPath) {
|
25 | const contents = await fs_extra_1.default.readFile(stylesPath, { encoding: 'utf8', flag: 'r' });
|
26 | const parser = new xml2js_1.Parser();
|
27 | const manifest = parser.parseStringPromise(contents);
|
28 | return manifest;
|
29 | }
|
30 | exports.readStylesXMLAsync = readStylesXMLAsync;
|
31 | async function writeStylesXMLAsync(stylesPath, stylesContent) {
|
32 | const stylesXml = new xml2js_1.Builder().buildObject(stylesContent);
|
33 | await fs_extra_1.default.ensureDir(path_1.default.dirname(stylesPath));
|
34 | await fs_extra_1.default.writeFile(stylesPath, stylesXml);
|
35 | }
|
36 | exports.writeStylesXMLAsync = writeStylesXMLAsync;
|
37 | function setStylesItem(itemToAdd, styleFileContentsJSON) {
|
38 | let appTheme = styleFileContentsJSON.resources.style.filter((e) => e['$']['name'] === 'AppTheme')[0];
|
39 | if (appTheme.item) {
|
40 | let existingItem = appTheme.item.filter((item) => item['$'].name === itemToAdd[0].$.name)[0];
|
41 |
|
42 | if (existingItem) {
|
43 | existingItem['_'] = itemToAdd[0]['_'];
|
44 | }
|
45 | else {
|
46 | appTheme.item = appTheme.item.concat(itemToAdd);
|
47 | }
|
48 | }
|
49 | else {
|
50 | appTheme.item = itemToAdd;
|
51 | }
|
52 | return styleFileContentsJSON;
|
53 | }
|
54 | exports.setStylesItem = setStylesItem;
|
55 |
|
\ | No newline at end of file |