summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms/ios/cordova/lib/PodsJson.js
diff options
context:
space:
mode:
Diffstat (limited to 'StoneIsland/platforms/ios/cordova/lib/PodsJson.js')
-rw-r--r--[-rwxr-xr-x]StoneIsland/platforms/ios/cordova/lib/PodsJson.js154
1 files changed, 124 insertions, 30 deletions
diff --git a/StoneIsland/platforms/ios/cordova/lib/PodsJson.js b/StoneIsland/platforms/ios/cordova/lib/PodsJson.js
index 04705273..598d9607 100755..100644
--- a/StoneIsland/platforms/ios/cordova/lib/PodsJson.js
+++ b/StoneIsland/platforms/ios/cordova/lib/PodsJson.js
@@ -17,20 +17,23 @@
under the License.
*/
-var fs = require('fs');
-var path = require('path');
-var util = require('util');
-var events = require('cordova-common').events;
-var CordovaError = require('cordova-common').CordovaError;
+const fs = require('fs-extra');
+const path = require('path');
+const util = require('util');
+const events = require('cordova-common').events;
+const CordovaError = require('cordova-common').CordovaError;
PodsJson.FILENAME = 'pods.json';
+PodsJson.LIBRARY = 'libraries';
+PodsJson.SOURCE = 'sources';
+PodsJson.DECLARATION = 'declarations';
function PodsJson (podsJsonPath) {
this.path = podsJsonPath;
this.contents = null;
this.__dirty = false;
- var filename = this.path.split(path.sep).pop();
+ const filename = this.path.split(path.sep).pop();
if (filename !== PodsJson.FILENAME) {
throw new CordovaError(util.format('PodsJson: The file at %s is not `%s`.', this.path, PodsJson.FILENAME));
}
@@ -43,25 +46,81 @@ function PodsJson (podsJsonPath) {
} else {
events.emit('verbose', 'pods.json found in platforms/ios');
// load contents
- this.contents = fs.readFileSync(this.path, 'utf8');
- this.contents = JSON.parse(this.contents);
+ const contents = fs.readFileSync(this.path, 'utf8');
+ this.contents = JSON.parse(contents);
}
+ this.__updateFormatIfNecessary();
}
-PodsJson.prototype.get = function (name) {
- return this.contents[name];
+PodsJson.prototype.__isOldFormat = function () {
+ if (this.contents !== null) {
+ if (this.contents.declarations === undefined ||
+ this.contents.sources === undefined ||
+ this.contents.libraries === undefined) {
+ return true;
+ }
+ }
+ return false;
};
-PodsJson.prototype.remove = function (name) {
- if (this.contents[name]) {
- delete this.contents[name];
+PodsJson.prototype.__updateFormatIfNecessary = function () {
+ if (this.__isOldFormat()) {
+ this.contents = {
+ declarations: {},
+ sources: {},
+ libraries: this.contents
+ };
this.__dirty = true;
- events.emit('verbose', util.format('Remove from pods.json for `%s`', name));
+ events.emit('verbose', 'Update format of pods.json');
}
};
+PodsJson.prototype.getLibraries = function () {
+ return this.contents[PodsJson.LIBRARY];
+};
+
+PodsJson.prototype.__get = function (kind, name) {
+ return this.contents[kind][name];
+};
+
+PodsJson.prototype.getLibrary = function (name) {
+ return this.__get(PodsJson.LIBRARY, name);
+};
+
+PodsJson.prototype.getSource = function (name) {
+ return this.__get(PodsJson.SOURCE, name);
+};
+
+PodsJson.prototype.getDeclaration = function (name) {
+ return this.__get(PodsJson.DECLARATION, name);
+};
+
+PodsJson.prototype.__remove = function (kind, name) {
+ if (this.contents[kind][name]) {
+ delete this.contents[kind][name];
+ this.__dirty = true;
+ events.emit('verbose', util.format('Remove from pods.json for `%s` - `%s`', name));
+ }
+};
+
+PodsJson.prototype.removeLibrary = function (name) {
+ this.__remove(PodsJson.LIBRARY, name);
+};
+
+PodsJson.prototype.removeSource = function (name) {
+ this.__remove(PodsJson.SOURCE, name);
+};
+
+PodsJson.prototype.removeDeclaration = function (name) {
+ this.__remove(PodsJson.DECLARATION, name);
+};
+
PodsJson.prototype.clear = function () {
- this.contents = {};
+ this.contents = {
+ declarations: {},
+ sources: {},
+ libraries: {}
+ };
this.__dirty = true;
};
@@ -78,34 +137,69 @@ PodsJson.prototype.write = function () {
}
};
-PodsJson.prototype.set = function (name, type, spec, count) {
- this.setJson(name, { name: name, type: type, spec: spec, count: count });
-};
-
-PodsJson.prototype.increment = function (name) {
- var val = this.get(name);
+PodsJson.prototype.__increment = function (kind, name) {
+ const val = this.__get(kind, name);
if (val) {
val.count++;
- this.setJson(val);
}
};
-PodsJson.prototype.decrement = function (name) {
- var val = this.get(name);
+PodsJson.prototype.incrementLibrary = function (name) {
+ this.__increment(PodsJson.LIBRARY, name);
+};
+
+PodsJson.prototype.incrementSource = function (name) {
+ this.__increment(PodsJson.SOURCE, name);
+};
+
+PodsJson.prototype.incrementDeclaration = function (name) {
+ this.__increment(PodsJson.DECLARATION, name);
+};
+
+PodsJson.prototype.__decrement = function (kind, name) {
+ const val = this.__get(kind, name);
if (val) {
val.count--;
if (val.count <= 0) {
- this.remove(name);
- } else {
- this.setJson(val);
+ this.__remove(kind, name);
}
}
};
-PodsJson.prototype.setJson = function (name, json) {
- this.contents[name] = json;
+PodsJson.prototype.decrementLibrary = function (name) {
+ this.__decrement(PodsJson.LIBRARY, name);
+};
+
+PodsJson.prototype.decrementSource = function (name) {
+ this.__decrement(PodsJson.SOURCE, name);
+};
+
+PodsJson.prototype.decrementDeclaration = function (name) {
+ this.__decrement(PodsJson.DECLARATION, name);
+};
+
+PodsJson.prototype.__setJson = function (kind, name, json) {
+ this.contents[kind][name] = Object.assign({}, json);
this.__dirty = true;
- events.emit('verbose', util.format('Set pods.json for `%s`', name));
+ events.emit('verbose', util.format('Set pods.json for `%s` - `%s`', kind, name));
+};
+
+// sample json for library
+// { name: "Eureka", spec: "4.2.0", "swift-version": "4.1", count: 1 }
+PodsJson.prototype.setJsonLibrary = function (name, json) {
+ this.__setJson(PodsJson.LIBRARY, name, json);
+};
+
+// sample json for source
+// { source: "https://github.com/brightcove/BrightcoveSpecs.git", count: 1 }
+PodsJson.prototype.setJsonSource = function (name, json) {
+ this.__setJson(PodsJson.SOURCE, name, json);
+};
+
+// sample json for declaration
+// { declaration: ""}
+PodsJson.prototype.setJsonDeclaration = function (name, json) {
+ this.__setJson(PodsJson.DECLARATION, name, json);
};
PodsJson.prototype.isDirty = function () {