aboutsummaryrefslogtreecommitdiff
path: root/cordova/node_modules/xcode/lib/pbxFile.js
diff options
context:
space:
mode:
authorKumar Priyansh <[email protected]>2019-01-19 12:37:14 +0530
committerKumar Priyansh <[email protected]>2019-01-19 12:37:14 +0530
commitdcdfc94cb39dfe2c39925a0145ffa45e2d061c30 (patch)
tree4f6379d955555b298c0e7b83a67e264240ee5614 /cordova/node_modules/xcode/lib/pbxFile.js
parent76f7b3678d3f1ff99c3935a774d420453b0c3cb9 (diff)
downloadWeatherApp-dcdfc94cb39dfe2c39925a0145ffa45e2d061c30.tar.xz
WeatherApp-dcdfc94cb39dfe2c39925a0145ffa45e2d061c30.zip
Initial Upload via GIT
Diffstat (limited to 'cordova/node_modules/xcode/lib/pbxFile.js')
-rwxr-xr-xcordova/node_modules/xcode/lib/pbxFile.js215
1 files changed, 215 insertions, 0 deletions
diff --git a/cordova/node_modules/xcode/lib/pbxFile.js b/cordova/node_modules/xcode/lib/pbxFile.js
new file mode 100755
index 0000000..768122a
--- /dev/null
+++ b/cordova/node_modules/xcode/lib/pbxFile.js
@@ -0,0 +1,215 @@
+var path = require('path'),
+ util = require('util');
+
+var DEFAULT_SOURCETREE = '"<group>"',
+ DEFAULT_PRODUCT_SOURCETREE = 'BUILT_PRODUCTS_DIR',
+ DEFAULT_FILEENCODING = 4,
+ DEFAULT_GROUP = 'Resources',
+ DEFAULT_FILETYPE = 'unknown';
+
+var FILETYPE_BY_EXTENSION = {
+ a: 'archive.ar',
+ app: 'wrapper.application',
+ appex: 'wrapper.app-extension',
+ bundle: 'wrapper.plug-in',
+ dylib: 'compiled.mach-o.dylib',
+ framework: 'wrapper.framework',
+ h: 'sourcecode.c.h',
+ m: 'sourcecode.c.objc',
+ markdown: 'text',
+ mdimporter: 'wrapper.cfbundle',
+ octest: 'wrapper.cfbundle',
+ pch: 'sourcecode.c.h',
+ plist: 'text.plist.xml',
+ sh: 'text.script.sh',
+ swift: 'sourcecode.swift',
+ tbd: 'sourcecode.text-based-dylib-definition',
+ xcassets: 'folder.assetcatalog',
+ xcconfig: 'text.xcconfig',
+ xcdatamodel: 'wrapper.xcdatamodel',
+ xcodeproj: 'wrapper.pb-project',
+ xctest: 'wrapper.cfbundle',
+ xib: 'file.xib',
+ strings: 'text.plist.strings'
+ },
+ GROUP_BY_FILETYPE = {
+ 'archive.ar': 'Frameworks',
+ 'compiled.mach-o.dylib': 'Frameworks',
+ 'sourcecode.text-based-dylib-definition': 'Frameworks',
+ 'wrapper.framework': 'Frameworks',
+ 'embedded.framework': 'Embed Frameworks',
+ 'sourcecode.c.h': 'Resources',
+ 'sourcecode.c.objc': 'Sources',
+ 'sourcecode.swift': 'Sources'
+ },
+ PATH_BY_FILETYPE = {
+ 'compiled.mach-o.dylib': 'usr/lib/',
+ 'sourcecode.text-based-dylib-definition': 'usr/lib/',
+ 'wrapper.framework': 'System/Library/Frameworks/'
+ },
+ SOURCETREE_BY_FILETYPE = {
+ 'compiled.mach-o.dylib': 'SDKROOT',
+ 'sourcecode.text-based-dylib-definition': 'SDKROOT',
+ 'wrapper.framework': 'SDKROOT'
+ },
+ ENCODING_BY_FILETYPE = {
+ 'sourcecode.c.h': 4,
+ 'sourcecode.c.h': 4,
+ 'sourcecode.c.objc': 4,
+ 'sourcecode.swift': 4,
+ 'text': 4,
+ 'text.plist.xml': 4,
+ 'text.script.sh': 4,
+ 'text.xcconfig': 4,
+ 'text.plist.strings': 4
+ };
+
+
+function unquoted(text){
+ return text.replace (/(^")|("$)/g, '')
+}
+
+function detectType(filePath) {
+ var extension = path.extname(filePath).substring(1),
+ filetype = FILETYPE_BY_EXTENSION[unquoted(extension)];
+
+ if (!filetype) {
+ return DEFAULT_FILETYPE;
+ }
+
+ return filetype;
+}
+
+function defaultExtension(fileRef) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType;
+
+ for(var extension in FILETYPE_BY_EXTENSION) {
+ if(FILETYPE_BY_EXTENSION.hasOwnProperty(unquoted(extension)) ) {
+ if(FILETYPE_BY_EXTENSION[unquoted(extension)] === filetype )
+ return extension;
+ }
+ }
+}
+
+function defaultEncoding(fileRef) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ encoding = ENCODING_BY_FILETYPE[unquoted(filetype)];
+
+ if (encoding) {
+ return encoding;
+ }
+}
+
+function detectGroup(fileRef, opt) {
+ var extension = path.extname(fileRef.basename).substring(1),
+ filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ groupName = GROUP_BY_FILETYPE[unquoted(filetype)];
+
+ if (extension === 'xcdatamodeld') {
+ return 'Sources';
+ }
+
+ if (opt.customFramework && opt.embed) {
+ return GROUP_BY_FILETYPE['embedded.framework'];
+ }
+
+ if (!groupName) {
+ return DEFAULT_GROUP;
+ }
+
+ return groupName;
+}
+
+function detectSourcetree(fileRef) {
+
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ sourcetree = SOURCETREE_BY_FILETYPE[unquoted(filetype)];
+
+ if (fileRef.explicitFileType) {
+ return DEFAULT_PRODUCT_SOURCETREE;
+ }
+
+ if (fileRef.customFramework) {
+ return DEFAULT_SOURCETREE;
+ }
+
+ if (!sourcetree) {
+ return DEFAULT_SOURCETREE;
+ }
+
+ return sourcetree;
+}
+
+function defaultPath(fileRef, filePath) {
+ var filetype = fileRef.lastKnownFileType || fileRef.explicitFileType,
+ defaultPath = PATH_BY_FILETYPE[unquoted(filetype)];
+
+ if (fileRef.customFramework) {
+ return filePath;
+ }
+
+ if (defaultPath) {
+ return path.join(defaultPath, path.basename(filePath));
+ }
+
+ return filePath;
+}
+
+function defaultGroup(fileRef) {
+ var groupName = GROUP_BY_FILETYPE[fileRef.lastKnownFileType];
+
+ if (!groupName) {
+ return DEFAULT_GROUP;
+ }
+
+ return defaultGroup;
+}
+
+function pbxFile(filepath, opt) {
+ var opt = opt || {};
+
+ this.basename = path.basename(filepath);
+ this.lastKnownFileType = opt.lastKnownFileType || detectType(filepath);
+ this.group = detectGroup(this, opt);
+
+ // for custom frameworks
+ if (opt.customFramework == true) {
+ this.customFramework = true;
+ this.dirname = path.dirname(filepath).replace(/\\/g, '/');
+ }
+
+ this.path = defaultPath(this, filepath).replace(/\\/g, '/');
+ this.fileEncoding = this.defaultEncoding = opt.defaultEncoding || defaultEncoding(this);
+
+ // When referencing products / build output files
+ if (opt.explicitFileType) {
+ this.explicitFileType = opt.explicitFileType;
+ this.basename = this.basename + '.' + defaultExtension(this);
+ delete this.path;
+ delete this.lastKnownFileType;
+ delete this.group;
+ delete this.defaultEncoding;
+ }
+
+ this.sourceTree = opt.sourceTree || detectSourcetree(this);
+ this.includeInIndex = 0;
+
+ if (opt.weak && opt.weak === true)
+ this.settings = { ATTRIBUTES: ['Weak'] };
+
+ if (opt.compilerFlags) {
+ if (!this.settings)
+ this.settings = {};
+ this.settings.COMPILER_FLAGS = util.format('"%s"', opt.compilerFlags);
+ }
+
+ if (opt.embed && opt.sign) {
+ if (!this.settings)
+ this.settings = {};
+ if (!this.settings.ATTRIBUTES)
+ this.settings.ATTRIBUTES = [];
+ this.settings.ATTRIBUTES.push('CodeSignOnCopy');
+ }
+}
+
+module.exports = pbxFile;