UNPKG

2.34 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6const path_1 = __importDefault(require("path"));
7const fs_extra_1 = __importDefault(require("fs-extra"));
8const xml2js_1 = require("xml2js");
9async 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}
23exports.getProjectStylesXMLPathAsync = getProjectStylesXMLPathAsync;
24async 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}
30exports.readStylesXMLAsync = readStylesXMLAsync;
31async 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}
36exports.writeStylesXMLAsync = writeStylesXMLAsync;
37function 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 // Don't want to 2 of the same item, so if one exists, we overwrite it
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}
54exports.setStylesItem = setStylesItem;
55//# sourceMappingURL=Styles.js.map
\No newline at end of file