Skip to content

Instantly share code, notes, and snippets.

@njleonzhang
Forked from Delagen/cordova-ios-disable-push.js
Created September 24, 2016 02:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save njleonzhang/b3e552f60d49ea93284afaff8bb511c3 to your computer and use it in GitHub Desktop.
Save njleonzhang/b3e552f60d49ea93284afaff8bb511c3 to your computer and use it in GitHub Desktop.
"use strict";
/*use in config.xml <hook type="after_platform_add" src="../path/to/cordova-ios-disable-push.js"/>*/
var fs = require("fs");
var path = require("path");
var COMMENT_KEY = /_comment$/;
function nonComments(obj) {
var newObj = {};
Object.keys(obj).forEach(function(key) {
if (!COMMENT_KEY.test(key)) {
newObj[key] = obj[key];
}
});
return newObj;
}
module.exports = function(ctx) {
var GCC_PREPROCESSOR_DEFINITIONS = '"$(inherited) DISABLE_PUSH_NOTIFICATIONS=1"';
var q = ctx.requireCordovaModule("q");
var deferred = q.defer();
var cordovaConfigPath = path.join(ctx.opts.projectRoot, "config.xml");
fs.readFile(cordovaConfigPath, {encoding: "utf-8"}, function(errConfigRead, configContent) {
if (errConfigRead) {
return deferred.reject(errConfigRead);
}
var projectName = /<name[^>]*>([\s\S]*)<\/name>/mi.exec(configContent)[1].trim();
var xcodeProjectName = [projectName, ".xcodeproj"].join("");
var xcodeProjectPath = path.join(ctx.opts.projectRoot, "platforms", "ios", xcodeProjectName, "project.pbxproj");
var xcode = ctx.requireCordovaModule("xcode");
var xcodeProject = xcode.project(xcodeProjectPath);
xcodeProject.parse(function(parseError) {
if (parseError) {
return deferred.reject(parseError);
}
var configurations = nonComments(xcodeProject.pbxXCBuildConfigurationSection());
Object.keys(configurations).forEach(function(config) {
var buildSettings = configurations[config].buildSettings;
buildSettings.GCC_PREPROCESSOR_DEFINITIONS = GCC_PREPROCESSOR_DEFINITIONS;
});
fs.writeFile(xcodeProjectPath, /*eslint-disable no-sync*/xcodeProject.writeSync()/*eslint-enable*/, {encoding: "utf-8"}, function(projectWriteError) {
if (projectWriteError) {
return deferred.reject(projectWriteError);
}
deferred.resolve();
});
});
});
return deferred.promise;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment