You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by er...@apache.org on 2025/07/17 14:29:06 UTC

(cordova-browser) branch master updated: Inline browser_parser into Api (#98)

This is an automated email from the ASF dual-hosted git repository.

erisu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cordova-browser.git


The following commit(s) were added to refs/heads/master by this push:
     new be8f21b  Inline browser_parser into Api (#98)
be8f21b is described below

commit be8f21b561fd8ac08d5a52f62a149276ff5a9903
Author: Raphael von der GrĂ¼n <ra...@gmail.com>
AuthorDate: Thu Jul 17 16:29:01 2025 +0200

    Inline browser_parser into Api (#98)
    
    * refactor(browser_parser):  remove unused stuff
    * refactor(browser_parser): inline into Api
---
 bin/template/cordova/Api.js            | 48 +++++++++++++++++++++++++++++-----
 bin/template/cordova/browser_parser.js | 44 +++----------------------------
 2 files changed, 45 insertions(+), 47 deletions(-)

diff --git a/bin/template/cordova/Api.js b/bin/template/cordova/Api.js
index 72fbcd2..f1f43a6 100644
--- a/bin/template/cordova/Api.js
+++ b/bin/template/cordova/Api.js
@@ -35,8 +35,9 @@ const xmlHelpers = cdvcmn.xmlHelpers;
 const PlatformJson = cdvcmn.PlatformJson;
 const PlatformMunger = cdvcmn.ConfigChanges.PlatformMunger;
 const PluginInfoProvider = cdvcmn.PluginInfoProvider;
+const CordovaError = cdvcmn.CordovaError;
+const FileUpdater = cdvcmn.FileUpdater;
 
-const BrowserParser = require('./browser_parser');
 const PLATFORM_NAME = 'browser';
 
 function setupEvents (externalEventEmitter) {
@@ -52,13 +53,26 @@ function setupEvents (externalEventEmitter) {
     return selfEvents;
 }
 
+/**
+ * Logs all file operations via the verbose event stream, indented.
+ */
+function logFileOp (message) {
+    selfEvents.emit('verbose', '  ' + message);
+}
+
+function dirExists (dir) {
+    return fs.existsSync(dir) && fs.statSync(dir).isDirectory();
+}
+
 function Api (platform, platformRootDir, events) {
     this.platform = platform || PLATFORM_NAME;
 
     // MyApp/platforms/browser
     this.root = path.resolve(__dirname, '..');
     this.events = setupEvents(events);
-    this.parser = new BrowserParser(this.root);
+    if (!dirExists(this.root) || !dirExists(path.join(this.root, 'cordova'))) {
+        throw new CordovaError('The provided path "' + this.root + '" is not a valid browser project.');
+    }
     this._handler = require('./browser_handler');
 
     this.locations = {
@@ -127,7 +141,7 @@ Api.prototype.getPlatformInfo = function () {
     };
 };
 
-Api.prototype.prepare = function (cordovaProject, options) {
+Api.prototype.prepare = async function (cordovaProject, options) {
     // First cleanup current config and merge project's one into own
     const defaultConfigPath = path.join(this.locations.platformRootDir, 'cordova',
         'defaults.xml');
@@ -156,7 +170,7 @@ Api.prototype.prepare = function (cordovaProject, options) {
     this.config.write();
 
     // Update own www dir with project's www assets and plugins' assets and js-files
-    this.parser.update_www(cordovaProject, options);
+    this._updateWww(cordovaProject);
 
     // Copy or Create manifest.json
     // todo: move this to a manifest helper module
@@ -254,8 +268,30 @@ Api.prototype.prepare = function (cordovaProject, options) {
         fs.writeFileSync(manifestPath, JSON.stringify(manifestJson, null, 2), 'utf8');
     }
 
-    // update project according to config.xml changes.
-    return this.parser.update_project(this.config, options);
+    // Copy munged config.xml to platform www dir
+    shell.cp('-rf', this.locations.configXml, this.locations.www);
+};
+
+// Replace the www dir with contents of platform_www and app www.
+Api.prototype._updateWww = function (cordovaProject) {
+    // add cordova www and platform_www to sourceDirs
+    const sourceDirs = [
+        path.relative(cordovaProject.root, cordovaProject.locations.www),
+        path.relative(cordovaProject.root, this.locations.platformWww)
+    ];
+
+    // If project contains 'merges' for our platform, use them as another overrides
+    const merges_path = path.join(cordovaProject.root, 'merges', 'browser');
+    if (fs.existsSync(merges_path)) {
+        selfEvents.emit('verbose', 'Found "merges/browser" folder. Copying its contents into the browser project.');
+        // add merges/browser to sourceDirs
+        sourceDirs.push(path.join('merges', 'browser'));
+    }
+
+    // targetDir points to browser/www
+    const targetDir = path.relative(cordovaProject.root, this.locations.www);
+    selfEvents.emit('verbose', 'Merging and updating files from [' + sourceDirs.join(', ') + '] to ' + targetDir);
+    FileUpdater.mergeAndUpdateDir(sourceDirs, targetDir, { rootDir: cordovaProject.root }, logFileOp);
 };
 
 Api.prototype.addPlugin = function (pluginInfo, installOptions) {
diff --git a/bin/template/cordova/browser_parser.js b/bin/template/cordova/browser_parser.js
index e545684..485b5fc 100644
--- a/bin/template/cordova/browser_parser.js
+++ b/bin/template/cordova/browser_parser.js
@@ -37,27 +37,10 @@ function browser_parser (project) {
 
 module.exports = browser_parser;
 
-// Returns a promise.
-browser_parser.prototype.update_from_config = function () {
-    return Promise.resolve();
-};
-
 browser_parser.prototype.www_dir = function () {
     return path.join(this.path, 'www');
 };
 
-// Used for creating platform_www in projects created by older versions.
-browser_parser.prototype.cordovajs_path = function (libDir) {
-    const jsPath = path.join(libDir, 'cordova-lib', 'cordova.js');
-    return path.resolve(jsPath);
-};
-
-browser_parser.prototype.cordovajs_src_path = function (libDir) {
-    // console.log("cordovajs_src_path");
-    const jsPath = path.join(libDir, 'cordova-js-src');
-    return path.resolve(jsPath);
-};
-
 /**
  * Logs all file operations via the verbose event stream, indented.
  */
@@ -89,32 +72,11 @@ browser_parser.prototype.update_www = function (cordovaProject, opts) {
     FileUpdater.mergeAndUpdateDir(sourceDirs, targetDir, { rootDir: cordovaProject.root }, logFileOp);
 };
 
-browser_parser.prototype.update_overrides = function () {
-    // console.log("update_overrides");
-
-    // TODO: ?
-    // var projectRoot = util.isCordova(this.path);
-    // var mergesPath = path.join(util.appDir(projectRoot), 'merges', 'browser');
-    // if(fs.existsSync(mergesPath)) {
-    //     var overrides = path.join(mergesPath, '*');
-    //     shell.cp('-rf', overrides, this.www_dir());
-    // }
-};
-
 browser_parser.prototype.config_xml = function () {
     return path.join(this.path, 'config.xml');
 };
 
-// Returns a promise.
-browser_parser.prototype.update_project = function (cfg) {
-    // console.log("update_project ",cfg);
-    const defer = this.update_from_config();
-    const self = this;
-    const www_dir = self.www_dir();
-    defer.then(function () {
-        self.update_overrides();
-        // Copy munged config.xml to platform www dir
-        shell.cp('-rf', path.join(www_dir, '..', 'config.xml'), www_dir);
-    });
-    return defer;
+browser_parser.prototype.update_project = async function (cfg) {
+    // Copy munged config.xml to platform www dir
+    shell.cp('-rf', this.config_xml(), this.www_dir());
 };


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org