GitHub PullRequestReviewCommentEvent at 2014-07-16 18:11:01
Repository: hyperloop-ios
Actor: pec1985
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/comments/15016650","id":15016650,"diff_hunk":"@@ -228,199 +229,208 @@ function packageApp(options,args,callback) {\n \t\t\tinfoplist = options.infoplist || {},\n \t\t\tappdelegate = options.appdelegate || 'AppDelegate';\n \n-\t\tlinkflags.push('-L'+path.resolve(options.dest));\n-\t\tlinkflags.push('-lhyperloop');\n-\t\tlinkflags.push('-l'+libname);\n+\t\tthirdPartyFrameworks.forEach(function(f){\n+\t\t\tlinkflags.push('-F' + path.resolve(f.directory, '..', '..'));\n+\t\t\tlinkflags.push('-framework ' + f.name);\n+\t\t});\n \n-\t\t// these two flags do dead-code stripping\n-\t\tlinkflags.push('-gfull');\n-\t\tlinkflags.push('-dead_strip');\n+\t\tioslib.xcode.systemFrameworks(function(err,sysframeworks) {\n \n-\t\t// for some reason we need to export this\n-\t\tlinkflags.push('-weak_framework MediaPlayer');\n \n-\t\tcflags.push('-I'+builddir);\n+\t\t\tlinkflags.push('-L'+path.resolve(options.dest));\n+\t\t\tlinkflags.push('-lhyperloop');\n+\t\t\tlinkflags.push('-l'+libname);\n \n-\t\tcflags.forEach(function(flag){\n-\t\t\tif (/^-F/.test(flag)) {\n-\t\t\t\tlinkflags.push(flag);\n-\t\t\t}\n-\t\t});\n+\t\t\t// these two flags do dead-code stripping\n+\t\t\tlinkflags.push('-gfull');\n+\t\t\tlinkflags.push('-dead_strip');\n \n-\t\tvar spacer = '\\t\\t\\t\\t\\t';\n+\t\t\t// for some reason we need to export this\n+\t\t\tlinkflags.push('-weak_framework MediaPlayer');\n \n-\t\tvar copyValues = {\n-\t\t\tPRODUCTNAME: safeName,\n-\t\t\tLIBDIR: path.relative(builddir,options.dest),\n-\t\t\tLIBNAME: libname,\n-\t\t\tHYPERLOOP_OTHER_CFLAGS: cflags.map(function(k){return '\"'+k+'\"'}).join(',\\n'+spacer),\n-\t\t\tHYPERLOOP_OTHER_LDFLAGS: linkflags.map(function(k){return '\"'+k+'\"'}).join(',\\n'+spacer)\n-\t\t};\n+\t\t\tcflags.push('-I'+builddir);\n \n-\t\tvar xcodeProjectTemplate = path.join(xcodeTemplateDir,'PRODUCTNAME.xcodeproj','project.pbxproj'),\n-\t\t\txcodeProjectDest = path.join(builddir,safeName+'.xcodeproj','project.pbxproj'),\n-\t\t\txcodeSrcDest = path.join(builddir,safeName),\n-\t\t\tprefixTemplate = path.join(templateDir,'Prefix.pch'),\n-\t\t\tprefixDest = path.join(xcodeSrcDest,safeName+'-Prefix.pch'),\n-\t\t\tinfoplistTemplate = path.join(templateDir,'info.plist'),\n-\t\t\tinfoplistDest = path.join(xcodeSrcDest,safeName+'-Info.plist');\n-\n-\t\twrench.mkdirSyncRecursive(path.dirname(xcodeProjectDest));\n-\t\twrench.mkdirSyncRecursive(xcodeSrcDest);\n-\n-\t\tutil.copyAndFilterString(xcodeProjectTemplate,xcodeProjectDest,copyValues);\n-\t\tutil.copyAndFilterString(prefixTemplate,prefixDest,copyValues);\n-\n-\t\tutil.copyAndFilterEJS(path.join(templateDir,'HyperloopApp.h'),path.join(xcodeSrcDest,'HyperloopApp.h'),{\n-\t\t\tproduct_name: safeName,\n-\t\t\tbundle_id: options.appid,\n-\t\t\tmain_js: main_js,\n-\t\t\tprefix: options.classprefix,\n-\t\t\tappdelegate: appdelegate\n-\t\t});\n-\t\tutil.copyAndFilterEJS(path.join(templateDir,'HyperloopApp.mm'),path.join(xcodeSrcDest,'HyperloopApp.mm'),{\n-\t\t\tproduct_name: safeName,\n-\t\t\tbundle_id: options.appid,\n-\t\t\tmain_js: main_js,\n-\t\t\tprefix: options.classprefix,\n-\t\t\tappdelegate: appdelegate\n-\t\t});\n-\t\tutil.copyAndFilterEJS(path.join(templateDir,'AppDelegate.h'),path.join(xcodeSrcDest,'AppDelegate.h'),{\n-\t\t\tproduct_name: safeName,\n-\t\t\tbundle_id: options.appid,\n-\t\t\tmain_js: main_js,\n-\t\t\tprefix: options.classprefix\n-\t\t});\n-\t\tutil.copyAndFilterEJS(path.join(templateDir,'AppDelegate.m'),path.join(xcodeSrcDest,'AppDelegate.m'),{\n-\t\t\tproduct_name: safeName,\n-\t\t\tbundle_id: options.appid,\n-\t\t\tmain_js: main_js,\n-\t\t\tprefix: options.classprefix\n-\t\t});\n-\t\tutil.copyAndFilterEJS(path.join(templateDir,'main.mm'),path.join(xcodeSrcDest,'main.mm'),{\n-\t\t\tproduct_name: safeName,\n-\t\t\tbundle_id: options.appid,\n-\t\t\tmain_js: main_js,\n-\t\t\tprefix: options.classprefix,\n-\t\t\tappdelegate: appdelegate\n-\t\t});\n-\t\tutil.copyAndFilterEJS(infoplistTemplate,infoplistDest,{\n-\t\t\tproduct_name: safeName,\n-\t\t\tbundle_id: options.appid,\n-\t\t\tmain_js: main_js\n-\t\t});\n+\t\t\tcflags.forEach(function(flag){\n+\t\t\t\tif (/^-F/.test(flag)) {\n+\t\t\t\t\tlinkflags.push(flag);\n+\t\t\t\t}\n+\t\t\t});\n \n-\t\t// if we have any modifications to the info.plist, add them\n-\t\tif (infoplist) {\n-\t\t\tvar jobs = [];\n-\t\t\tObject.keys(infoplist).forEach(function(k){\n-\t\t\t\tjobs.push(function(callback) {\n-\t\t\t\t\tvar entry = infoplist[k],\n-\t\t\t\t\t\ttype = entry.type\n-\t\t\t\t\t\tvalue = entry.value,\n-\t\t\t\t\t\tcmd = '/usr/libexec/PlistBuddy -c \"add '+\"'\"+k+\"' \"+type+\" '\"+value+\"'\"+'\" \"'+infoplistDest+'\"';\n-\t\t\t\t\tlog.debug(cmd);\n-\t\t\t\t\texec(cmd,callback);\n-\t\t\t\t});\n+\t\t\tvar spacer = '\\t\\t\\t\\t\\t';\n+\n+\t\t\tvar copyValues = {\n+\t\t\t\tPRODUCTNAME: safeName,\n+\t\t\t\tLIBDIR: path.relative(builddir,options.dest),\n+\t\t\t\tLIBNAME: libname,\n+\t\t\t\tHYPERLOOP_OTHER_CFLAGS: cflags.map(function(k){return '\"'+k+'\"'}).join(',\\n'+spacer),\n+\t\t\t\tHYPERLOOP_OTHER_LDFLAGS: linkflags.map(function(k){return '\"'+k+'\"'}).join(',\\n'+spacer)\n+\t\t\t};\n+\n+\t\t\tvar xcodeProjectTemplate = path.join(xcodeTemplateDir,'PRODUCTNAME.xcodeproj','project.pbxproj'),\n+\t\t\t\txcodeProjectDest = path.join(builddir,safeName+'.xcodeproj','project.pbxproj'),\n+\t\t\t\txcodeSrcDest = path.join(builddir,safeName),\n+\t\t\t\tprefixTemplate = path.join(templateDir,'Prefix.pch'),\n+\t\t\t\tprefixDest = path.join(xcodeSrcDest,safeName+'-Prefix.pch'),\n+\t\t\t\tinfoplistTemplate = path.join(templateDir,'info.plist'),\n+\t\t\t\tinfoplistDest = path.join(xcodeSrcDest,safeName+'-Info.plist');\n+\n+\t\t\twrench.mkdirSyncRecursive(path.dirname(xcodeProjectDest));\n+\t\t\twrench.mkdirSyncRecursive(xcodeSrcDest);\n+\n+\t\t\tutil.copyAndFilterString(xcodeProjectTemplate,xcodeProjectDest,copyValues);\n+\t\t\tutil.copyAndFilterString(prefixTemplate,prefixDest,copyValues);\n+\n+\t\t\tutil.copyAndFilterEJS(path.join(templateDir,'HyperloopApp.h'),path.join(xcodeSrcDest,'HyperloopApp.h'),{\n+\t\t\t\tproduct_name: safeName,\n+\t\t\t\tbundle_id: options.appid,\n+\t\t\t\tmain_js: main_js,\n+\t\t\t\tprefix: options.classprefix,\n+\t\t\t\tappdelegate: appdelegate\n \t\t\t});\n-\t\t\tasync.series(jobs,run);\n-\t\t}\n-\t\telse {\n-\t\t\trun();\n-\t\t}\n+\t\t\tutil.copyAndFilterEJS(path.join(templateDir,'HyperloopApp.mm'),path.join(xcodeSrcDest,'HyperloopApp.mm'),{\n+\t\t\t\tproduct_name: safeName,\n+\t\t\t\tbundle_id: options.appid,\n+\t\t\t\tmain_js: main_js,\n+\t\t\t\tprefix: options.classprefix,\n+\t\t\t\tappdelegate: appdelegate\n+\t\t\t});\n+\t\t\tutil.copyAndFilterEJS(path.join(templateDir,'AppDelegate.h'),path.join(xcodeSrcDest,'AppDelegate.h'),{\n+\t\t\t\tproduct_name: safeName,\n+\t\t\t\tbundle_id: options.appid,\n+\t\t\t\tmain_js: main_js,\n+\t\t\t\tprefix: options.classprefix\n+\t\t\t});\n+\t\t\tutil.copyAndFilterEJS(path.join(templateDir,'AppDelegate.m'),path.join(xcodeSrcDest,'AppDelegate.m'),{\n+\t\t\t\tproduct_name: safeName,\n+\t\t\t\tbundle_id: options.appid,\n+\t\t\t\tmain_js: main_js,\n+\t\t\t\tprefix: options.classprefix\n+\t\t\t});\n+\t\t\tutil.copyAndFilterEJS(path.join(templateDir,'main.mm'),path.join(xcodeSrcDest,'main.mm'),{\n+\t\t\t\tproduct_name: safeName,\n+\t\t\t\tbundle_id: options.appid,\n+\t\t\t\tmain_js: main_js,\n+\t\t\t\tprefix: options.classprefix,\n+\t\t\t\tappdelegate: appdelegate\n+\t\t\t});\n+\t\t\tutil.copyAndFilterEJS(infoplistTemplate,infoplistDest,{\n+\t\t\t\tproduct_name: safeName,\n+\t\t\t\tbundle_id: options.appid,\n+\t\t\t\tmain_js: main_js\n+\t\t\t});\n+\n+\t\t\t// if we have any modifications to the info.plist, add them\n+\t\t\tif (infoplist) {\n+\t\t\t\tvar jobs = [];\n+\t\t\t\tObject.keys(infoplist).forEach(function(k){\n+\t\t\t\t\tjobs.push(function(callback) {\n+\t\t\t\t\t\tvar entry = infoplist[k],\n+\t\t\t\t\t\t\ttype = entry.type\n+\t\t\t\t\t\t\tvalue = entry.value,\n+\t\t\t\t\t\t\tcmd = '/usr/libexec/PlistBuddy -c \"add '+\"'\"+k+\"' \"+type+\" '\"+value+\"'\"+'\" \"'+infoplistDest+'\"';\n+\t\t\t\t\t\tlog.debug(cmd);\n+\t\t\t\t\t\texec(cmd,callback);\n+\t\t\t\t\t});\n+\t\t\t\t});\n+\t\t\t\tasync.series(jobs,run);\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\trun();\n+\t\t\t}\n \n-\t\tfunction run() {\n+\t\t\tfunction run() {\n \n-\t\t\tioslib.xcode.settings(function(err,settings){\n-\t\t\t\tif (err) return callback(err);\n+\t\t\t\tioslib.xcode.settings(function(err,settings){\n+\t\t\t\t\tif (err) return callback(err);\n \n-\t\t\t\t// for any flag that might have a path in it, we need to make sure\n-\t\t\t\t// that the path is quoted\n-\t\t\t\tfunction quotePaths(flag) {\n-\t\t\t\t\tif (/^-(F|I|L)/.test(flag)) {\n-\t\t\t\t\t\tvar path = flag.substring(2);\n-\t\t\t\t\t\tif (path!='\"') {\n-\t\t\t\t\t\t\treturn flag.substring(0,2)+'\"'+flag.substring(2)+'\"';\n+\t\t\t\t\t// for any flag that might have a path in it, we need to make sure\n+\t\t\t\t\t// that the path is quoted\n+\t\t\t\t\tfunction quotePaths(flag) {\n+\t\t\t\t\t\tif (/^-(F|I|L)/.test(flag)) {\n+\t\t\t\t\t\t\tvar path = flag.substring(2);\n+\t\t\t\t\t\t\tif (path!='\"') {\n+\t\t\t\t\t\t\t\treturn flag.substring(0,2)+'\"'+flag.substring(2)+'\"';\n+\t\t\t\t\t\t\t}\n \t\t\t\t\t\t}\n+\t\t\t\t\t\treturn flag;\n \t\t\t\t\t}\n-\t\t\t\t\treturn flag;\n-\t\t\t\t}\n \n-\t\t\t\tvar args = [\n-\t\t\t\t\t'-sdk', 'iphone'+platform+''+settings.version,\n-\t\t\t\t\t'VALID_ARCHS='+arch,\n-\t\t\t\t\t'OTHER_LDFLAGS='+linkflags.map(quotePaths).join(' '),\n-\t\t\t\t\t'OTHER_CFLAGS='+cflags.map(quotePaths).join(' ')\n-\t\t\t\t];\n+\t\t\t\t\tvar args = [\n+\t\t\t\t\t\t'-sdk', 'iphone'+platform+''+settings.version,\n+\t\t\t\t\t\t'VALID_ARCHS='+arch,\n+\t\t\t\t\t\t'OTHER_LDFLAGS='+linkflags.map(quotePaths).join(' '),\n+\t\t\t\t\t\t'OTHER_CFLAGS='+cflags.map(quotePaths).join(' ')\n+\t\t\t\t\t];\n+\t\t\t\t\tbuildlib.xcodebuild(builddir,args,function(err,result){\n+\t\t\t\t\t\tif (err) { return callback(err); }\n \n-\t\t\t\tbuildlib.xcodebuild(builddir,args,function(err,result){\n-\t\t\t\t\tif (err) { return callback(err); }\n+\t\t\t\t\t\tvar appdir = path.join(builddir,'build','Release-iphone'+platform,safeName+'.app');\n \n-\t\t\t\t\tvar appdir = path.join(builddir,'build','Release-iphone'+platform,safeName+'.app');\n+\t\t\t\t\t\tif (!options.logger && (options.logger && !options.logger.info)) {\n+\t\t\t\t\t\t\tlog.info('Built application in',appdir.yellow);\n+\t\t\t\t\t\t}\n \n-\t\t\t\t\tif (!options.logger && (options.logger && !options.logger.info)) {\n-\t\t\t\t\t\tlog.info('Built application in',appdir.yellow);\n-\t\t\t\t\t}\n+\t\t\t\t\t\t// copy any third-party framework resources\n+\t\t\t\t\t\toptions.thirdparty_frameworks && Object.keys(options.thirdparty_frameworks).forEach(function(key){\n+\t\t\t\t\t\t\tvar headerdir = options.thirdparty_frameworks[key],\n+\t\t\t\t\t\t\t\tresourcesDir = path.join(path.dirname(headerdir),'Resources');\n+\t\t\t\t\t\t\tif (fs.existsSync(resourcesDir)) {\n+\t\t\t\t\t\t\t\tvar copyfiles = wrench.readdirSyncRecursive(resourcesDir);\n+\t\t\t\t\t\t\t\tcopyfiles.forEach(function(f){\n+\t\t\t\t\t\t\t\t\tvar fp = path.join(resourcesDir,f),\n+\t\t\t\t\t\t\t\t\t\tisDir = fs.statSync(fp).isDirectory(),\n+\t\t\t\t\t\t\t\t\t\tdest = path.join(appdir,f);\n+\t\t\t\t\t\t\t\t\tif (fp.indexOf('/' + options.dest + '/') >= 0) {\n+\t\t\t\t\t\t\t\t\t\treturn;\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\tif (isDir) {\n+\t\t\t\t\t\t\t\t\t\twrench.mkdirSyncRecursive(dest);\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\telse {\n+\t\t\t\t\t\t\t\t\t\tfs.writeFileSync(dest, fs.readFileSync(fp));\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t});\n+\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t});\n \n-\t\t\t\t\t// copy any third-party framework resources\n-\t\t\t\t\toptions.thirdparty_frameworks && Object.keys(options.thirdparty_frameworks).forEach(function(key){\n-\t\t\t\t\t\tvar headerdir = options.thirdparty_frameworks[key],\n-\t\t\t\t\t\t\tresourcesDir = path.join(path.dirname(headerdir),'Resources');\n-\t\t\t\t\t\tif (fs.existsSync(resourcesDir)) {\n-\t\t\t\t\t\t\tvar copyfiles = wrench.readdirSyncRecursive(resourcesDir);\n+\t\t\t\t    // copy any non-source files into destination\n+\t\t\t\t    if (options.src && util.isDirectory(options.src)) {\n+\t\t\t\t\t\t\tvar copyfiles = wrench.readdirSyncRecursive(path.resolve(options.src));\n \t\t\t\t\t\t\tcopyfiles.forEach(function(f){\n+\t\t\t\t\t\t\t\t// var fp = path.join(options.src,f),\n \t\t\t\t\t\t\t\tvar fp = path.join(resourcesDir,f),\n \t\t\t\t\t\t\t\t\tisDir = fs.statSync(fp).isDirectory(),\n \t\t\t\t\t\t\t\t\tdest = path.join(appdir,f);\n-\t\t\t\t\t\t\t\tif (fp.indexOf('/' + options.dest + '/') >= 0) {\n-\t\t\t\t\t\t\t\t\treturn;\n-\t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t\tif (isDir) {\n \t\t\t\t\t\t\t\t\twrench.mkdirSyncRecursive(dest);\n \t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t\telse {\n-\t\t\t\t\t\t\t\t\tfs.writeFileSync(dest, fs.readFileSync(fp));\n+\t\t\t\t\t\t\t\t\tif (!/\\.(hjs|js(on)?|m|c|cpp|mm|h)$/.test(f)) {\n+\t\t\t\t\t\t\t\t\t\tif (/\\.xib$/.test(f)) {\n+\t\t\t\t\t\t\t\t\t\t\tvar cmd = 'ibtool \"'+fp+'\" --compile \"'+dest.replace('.xib','.nib')+'\"';\n+\t\t\t\t\t\t\t\t\t\t\tlog.debug('running ibtool with command:',cmd.cyan);\n+\t\t\t\t\t\t\t\t\t\t\texec(cmd, function(err,stdout,stderr){\n+\t\t\t\t\t\t\t\t\t\t\t\tstdout && log.debug(stdout);\n+\t\t\t\t\t\t\t\t\t\t\t\tstderr && log.error(stderr);\n+\t\t\t\t\t\t\t\t\t\t\t});\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t\telse {\n+\t\t\t\t\t\t\t\t\t\t\tfs.writeFileSync(dest, fs.readFileSync(fp));\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t\t}\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n-\t\t\t\t\t});\n-\n-\t\t\t    // copy any non-source files into destination\n-\t\t\t    if (options.src && util.isDirectory(options.src)) {\n-\t\t\t\t\t\tvar copyfiles = wrench.readdirSyncRecursive(path.resolve(options.src));\n-\t\t\t\t\t\tcopyfiles.forEach(function(f){\n-\t\t\t\t\t\t\tvar fp = path.join(options.src,f),\n-\t\t\t\t\t\t\t\tisDir = fs.statSync(fp).isDirectory(),\n-\t\t\t\t\t\t\t\tdest = path.join(appdir,f);\n-\t\t\t\t\t\t\tif (isDir) {\n-\t\t\t\t\t\t\t\twrench.mkdirSyncRecursive(dest);\n-\t\t\t\t\t\t\t}\n-\t\t\t\t\t\t\telse {\n-\t\t\t\t\t\t\t\tif (!/\\.(hjs|js(on)?|m|c|cpp|mm|h)$/.test(f)) {\n-\t\t\t\t\t\t\t\t\tif (/\\.xib$/.test(f)) {\n-\t\t\t\t\t\t\t\t\t\tvar cmd = 'ibtool \"'+fp+'\" --compile \"'+dest.replace('.xib','.nib')+'\"';\n-\t\t\t\t\t\t\t\t\t\tlog.debug('running ibtool with command:',cmd.cyan);\n-\t\t\t\t\t\t\t\t\t\texec(cmd, function(err,stdout,stderr){\n-\t\t\t\t\t\t\t\t\t\t\tstdout && log.debug(stdout);\n-\t\t\t\t\t\t\t\t\t\t\tstderr && log.error(stderr);\n-\t\t\t\t\t\t\t\t\t\t});\n-\t\t\t\t\t\t\t\t\t}\n-\t\t\t\t\t\t\t\t\telse {\n-\t\t\t\t\t\t\t\t\t\tfs.writeFileSync(dest, fs.readFileSync(fp));\n-\t\t\t\t\t\t\t\t\t}\n-\t\t\t\t\t\t\t\t}\n-\t\t\t\t\t\t\t}\n-\t\t\t\t\t\t});\n-\t\t\t\t\t}\n \n-\t\t\t\t\tcallback();\n+\t\t\t\t\t\tcallback();\n+\t\t\t\t\t});\n \t\t\t\t});\n-\t\t\t});\n \n-\t\t}\n+\t\t\t}\n \n-\t\t//TODO: OTHER_LDFLAGS for frameworks\n-\t\t//TODO: handle launch images\n+\t\t\t//TODO: OTHER_LDFLAGS for frameworks\n+\t\t\t//TODO: handle launch images\n+\t\t});\n \t});\n }\n ","path":"lib/packager.js","position":387,"original_position":387,"commit_id":"5f8c246829fe9382d04fb267e9b066cfa77e4885","original_commit_id":"5f8c246829fe9382d04fb267e9b066cfa77e4885","user":{"login":"pec1985","id":340218,"avatar_url":"https://avatars.githubusercontent.com/u/340218?","gravatar_id":"451ff3132cec742cab2d84f7232c908e","url":"https://api.github.com/users/pec1985","html_url":"https://github.com/pec1985","followers_url":"https://api.github.com/users/pec1985/followers","following_url":"https://api.github.com/users/pec1985/following{/other_user}","gists_url":"https://api.github.com/users/pec1985/gists{/gist_id}","starred_url":"https://api.github.com/users/pec1985/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pec1985/subscriptions","organizations_url":"https://api.github.com/users/pec1985/orgs","repos_url":"https://api.github.com/users/pec1985/repos","events_url":"https://api.github.com/users/pec1985/events{/privacy}","received_events_url":"https://api.github.com/users/pec1985/received_events","type":"User","site_admin":false},"body":"Most of the changes above are indentation ","created_at":"2014-07-16T18:11:01Z","updated_at":"2014-07-16T18:11:01Z","html_url":"https://github.com/appcelerator/hyperloop-ios/pull/53#discussion_r15016650","pull_request_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53","_links":{"self":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/comments/15016650"},"html":{"href":"https://github.com/appcelerator/hyperloop-ios/pull/53#discussion_r15016650"},"pull_request":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53"}}},"pull_request":{"url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53","id":18484583,"html_url":"https://github.com/appcelerator/hyperloop-ios/pull/53","diff_url":"https://github.com/appcelerator/hyperloop-ios/pull/53.diff","patch_url":"https://github.com/appcelerator/hyperloop-ios/pull/53.patch","issue_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues/53","number":53,"state":"open","title":"iOS - Support for third party frameworks and ti.current modules","user":{"login":"pec1985","id":340218,"avatar_url":"https://avatars.githubusercontent.com/u/340218?","gravatar_id":"451ff3132cec742cab2d84f7232c908e","url":"https://api.github.com/users/pec1985","html_url":"https://github.com/pec1985","followers_url":"https://api.github.com/users/pec1985/followers","following_url":"https://api.github.com/users/pec1985/following{/other_user}","gists_url":"https://api.github.com/users/pec1985/gists{/gist_id}","starred_url":"https://api.github.com/users/pec1985/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pec1985/subscriptions","organizations_url":"https://api.github.com/users/pec1985/orgs","repos_url":"https://api.github.com/users/pec1985/repos","events_url":"https://api.github.com/users/pec1985/events{/privacy}","received_events_url":"https://api.github.com/users/pec1985/received_events","type":"User","site_admin":false},"body":"","created_at":"2014-07-16T18:07:57Z","updated_at":"2014-07-16T18:11:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1d266f8b032232494f26d5cd3aab46de922c7054","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53/commits","review_comments_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53/comments","review_comment_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/comments/{number}","comments_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues/53/comments","statuses_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/statuses/5f8c246829fe9382d04fb267e9b066cfa77e4885","head":{"label":"pec1985:TiCurrentModule","ref":"TiCurrentModule","sha":"5f8c246829fe9382d04fb267e9b066cfa77e4885","user":{"login":"pec1985","id":340218,"avatar_url":"https://avatars.githubusercontent.com/u/340218?","gravatar_id":"451ff3132cec742cab2d84f7232c908e","url":"https://api.github.com/users/pec1985","html_url":"https://github.com/pec1985","followers_url":"https://api.github.com/users/pec1985/followers","following_url":"https://api.github.com/users/pec1985/following{/other_user}","gists_url":"https://api.github.com/users/pec1985/gists{/gist_id}","starred_url":"https://api.github.com/users/pec1985/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pec1985/subscriptions","organizations_url":"https://api.github.com/users/pec1985/orgs","repos_url":"https://api.github.com/users/pec1985/repos","events_url":"https://api.github.com/users/pec1985/events{/privacy}","received_events_url":"https://api.github.com/users/pec1985/received_events","type":"User","site_admin":false},"repo":{"id":21748363,"name":"hyperloop-ios","full_name":"pec1985/hyperloop-ios","owner":{"login":"pec1985","id":340218,"avatar_url":"https://avatars.githubusercontent.com/u/340218?","gravatar_id":"451ff3132cec742cab2d84f7232c908e","url":"https://api.github.com/users/pec1985","html_url":"https://github.com/pec1985","followers_url":"https://api.github.com/users/pec1985/followers","following_url":"https://api.github.com/users/pec1985/following{/other_user}","gists_url":"https://api.github.com/users/pec1985/gists{/gist_id}","starred_url":"https://api.github.com/users/pec1985/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pec1985/subscriptions","organizations_url":"https://api.github.com/users/pec1985/orgs","repos_url":"https://api.github.com/users/pec1985/repos","events_url":"https://api.github.com/users/pec1985/events{/privacy}","received_events_url":"https://api.github.com/users/pec1985/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/pec1985/hyperloop-ios","description":"iOS platform for Hyperloop","fork":true,"url":"https://api.github.com/repos/pec1985/hyperloop-ios","forks_url":"https://api.github.com/repos/pec1985/hyperloop-ios/forks","keys_url":"https://api.github.com/repos/pec1985/hyperloop-ios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pec1985/hyperloop-ios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pec1985/hyperloop-ios/teams","hooks_url":"https://api.github.com/repos/pec1985/hyperloop-ios/hooks","issue_events_url":"https://api.github.com/repos/pec1985/hyperloop-ios/issues/events{/number}","events_url":"https://api.github.com/repos/pec1985/hyperloop-ios/events","assignees_url":"https://api.github.com/repos/pec1985/hyperloop-ios/assignees{/user}","branches_url":"https://api.github.com/repos/pec1985/hyperloop-ios/branches{/branch}","tags_url":"https://api.github.com/repos/pec1985/hyperloop-ios/tags","blobs_url":"https://api.github.com/repos/pec1985/hyperloop-ios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pec1985/hyperloop-ios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pec1985/hyperloop-ios/git/refs{/sha}","trees_url":"https://api.github.com/repos/pec1985/hyperloop-ios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pec1985/hyperloop-ios/statuses/{sha}","languages_url":"https://api.github.com/repos/pec1985/hyperloop-ios/languages","stargazers_url":"https://api.github.com/repos/pec1985/hyperloop-ios/stargazers","contributors_url":"https://api.github.com/repos/pec1985/hyperloop-ios/contributors","subscribers_url":"https://api.github.com/repos/pec1985/hyperloop-ios/subscribers","subscription_url":"https://api.github.com/repos/pec1985/hyperloop-ios/subscription","commits_url":"https://api.github.com/repos/pec1985/hyperloop-ios/commits{/sha}","git_commits_url":"https://api.github.com/repos/pec1985/hyperloop-ios/git/commits{/sha}","comments_url":"https://api.github.com/repos/pec1985/hyperloop-ios/comments{/number}","issue_comment_url":"https://api.github.com/repos/pec1985/hyperloop-ios/issues/comments/{number}","contents_url":"https://api.github.com/repos/pec1985/hyperloop-ios/contents/{+path}","compare_url":"https://api.github.com/repos/pec1985/hyperloop-ios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pec1985/hyperloop-ios/merges","archive_url":"https://api.github.com/repos/pec1985/hyperloop-ios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pec1985/hyperloop-ios/downloads","issues_url":"https://api.github.com/repos/pec1985/hyperloop-ios/issues{/number}","pulls_url":"https://api.github.com/repos/pec1985/hyperloop-ios/pulls{/number}","milestones_url":"https://api.github.com/repos/pec1985/hyperloop-ios/milestones{/number}","notifications_url":"https://api.github.com/repos/pec1985/hyperloop-ios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pec1985/hyperloop-ios/labels{/name}","releases_url":"https://api.github.com/repos/pec1985/hyperloop-ios/releases{/id}","created_at":"2014-07-11T19:19:47Z","updated_at":"2014-07-01T00:28:54Z","pushed_at":"2014-07-16T18:02:31Z","git_url":"git://github.com/pec1985/hyperloop-ios.git","ssh_url":"git@github.com:pec1985/hyperloop-ios.git","clone_url":"https://github.com/pec1985/hyperloop-ios.git","svn_url":"https://github.com/pec1985/hyperloop-ios","homepage":null,"size":1194,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"appcelerator:master","ref":"master","sha":"bb73d0812342b9e6e31b7aa8f7ff66d84b16b138","user":{"login":"appcelerator","id":82188,"avatar_url":"https://avatars.githubusercontent.com/u/82188?","gravatar_id":"01d8a2b8546d6479cf4323d72cbed363","url":"https://api.github.com/users/appcelerator","html_url":"https://github.com/appcelerator","followers_url":"https://api.github.com/users/appcelerator/followers","following_url":"https://api.github.com/users/appcelerator/following{/other_user}","gists_url":"https://api.github.com/users/appcelerator/gists{/gist_id}","starred_url":"https://api.github.com/users/appcelerator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appcelerator/subscriptions","organizations_url":"https://api.github.com/users/appcelerator/orgs","repos_url":"https://api.github.com/users/appcelerator/repos","events_url":"https://api.github.com/users/appcelerator/events{/privacy}","received_events_url":"https://api.github.com/users/appcelerator/received_events","type":"Organization","site_admin":false},"repo":{"id":20115860,"name":"hyperloop-ios","full_name":"appcelerator/hyperloop-ios","owner":{"login":"appcelerator","id":82188,"avatar_url":"https://avatars.githubusercontent.com/u/82188?","gravatar_id":"01d8a2b8546d6479cf4323d72cbed363","url":"https://api.github.com/users/appcelerator","html_url":"https://github.com/appcelerator","followers_url":"https://api.github.com/users/appcelerator/followers","following_url":"https://api.github.com/users/appcelerator/following{/other_user}","gists_url":"https://api.github.com/users/appcelerator/gists{/gist_id}","starred_url":"https://api.github.com/users/appcelerator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/appcelerator/subscriptions","organizations_url":"https://api.github.com/users/appcelerator/orgs","repos_url":"https://api.github.com/users/appcelerator/repos","events_url":"https://api.github.com/users/appcelerator/events{/privacy}","received_events_url":"https://api.github.com/users/appcelerator/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/appcelerator/hyperloop-ios","description":"iOS platform for Hyperloop","fork":false,"url":"https://api.github.com/repos/appcelerator/hyperloop-ios","forks_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/forks","keys_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/keys{/key_id}","collaborators_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/teams","hooks_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/hooks","issue_events_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues/events{/number}","events_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/events","assignees_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/assignees{/user}","branches_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/branches{/branch}","tags_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/tags","blobs_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/git/refs{/sha}","trees_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/git/trees{/sha}","statuses_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/statuses/{sha}","languages_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/languages","stargazers_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/stargazers","contributors_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/contributors","subscribers_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/subscribers","subscription_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/subscription","commits_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/commits{/sha}","git_commits_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/git/commits{/sha}","comments_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/comments{/number}","issue_comment_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues/comments/{number}","contents_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/contents/{+path}","compare_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/compare/{base}...{head}","merges_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/merges","archive_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/downloads","issues_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues{/number}","pulls_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls{/number}","milestones_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/milestones{/number}","notifications_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/labels{/name}","releases_url":"https://api.github.com/repos/appcelerator/hyperloop-ios/releases{/id}","created_at":"2014-05-23T22:22:32Z","updated_at":"2014-07-01T00:28:54Z","pushed_at":"2014-07-16T14:06:58Z","git_url":"git://github.com/appcelerator/hyperloop-ios.git","ssh_url":"git@github.com:appcelerator/hyperloop-ios.git","clone_url":"https://github.com/appcelerator/hyperloop-ios.git","svn_url":"https://github.com/appcelerator/hyperloop-ios","homepage":null,"size":1194,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"forks_count":6,"mirror_url":null,"open_issues_count":5,"forks":6,"open_issues":5,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53"},"html":{"href":"https://github.com/appcelerator/hyperloop-ios/pull/53"},"issue":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues/53"},"comments":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/issues/53/comments"},"review_comments":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53/comments"},"review_comment":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/pulls/53/commits"},"statuses":{"href":"https://api.github.com/repos/appcelerator/hyperloop-ios/statuses/5f8c246829fe9382d04fb267e9b066cfa77e4885"}}}}