| 140 | | if(dojoPrefixPath){ |
| 141 | | _prefixPathRelease("dojo", dojoPrefixPath, kwArgs); |
| 142 | | |
| 143 | | //Make sure dojo is clear before trying to map dependencies. |
| 144 | | if(typeof dojo != "undefined"){ |
| 145 | | dojo = undefined; |
| 146 | | } |
| 147 | | |
| 148 | | //FIXME: loadDependency list reparses profile file, but we've already done that. |
| 149 | | logger.trace("Building dojo.js and layer files"); |
| 150 | | var result = buildUtil.makeDojoJs(buildUtil.loadDependencyList(kwArgs.profileFile), kwArgs.version); |
| 151 | | |
| 152 | | //Save the build layers. The first layer is dojo.js. |
| 153 | | var layerLegalText = copyrightText + buildNoticeText; |
| 154 | | var dojoReleaseDir = kwArgs.releaseDir + "/dojo/"; |
| 155 | | for(var i = 0; i < result.length; i++){ |
| 156 | | var fileName = dojoReleaseDir + result[i].layerName; |
| 157 | | var fileContents = result[i].contents; |
| 158 | | |
| 159 | | //Flatten resources |
| 160 | | //FIXME: Flatten resources. Only do the top level flattening for bundles |
| 161 | | //in the layer files. How to do this for layers? only do one nls file for |
| 162 | | //all layers, or a different one for each layer? |
| 163 | | if(fileName == "dojo.js"){ |
| 164 | | i18n.flattenLayerFileBundles(fileName, dojoReleaseDir + "nls", "nls", kwArgs); |
| 165 | | } |
| 166 | | |
| 167 | | //Save uncompressed file. |
| 168 | | var uncompressedFileName = fileName + ".uncompressed.js"; |
| 169 | | fileUtil.saveFile(uncompressedFileName, layerLegalText + fileContents); |
| 170 | | |
| 171 | | //Intern strings if desired. Do this before compression, since, in the xd case, |
| 172 | | //"dojo" gets converted to a shortened name. |
| 173 | | if(kwArgs.internStrings){ |
| 174 | | logger.info("Interning strings for file: " + fileName); |
| 175 | | var prefixes = dependencies["prefixes"] || []; |
| 176 | | var skiplist = dependencies["internSkipList"] || []; |
| 177 | | buildUtil.internTemplateStringsInFile(uncompressedFileName, dojoReleaseDir, prefixes, skiplist); |
| 178 | | |
| 179 | | //Load the file contents after string interning, to pick up interned strings. |
| 180 | | fileContents = fileUtil.readFile(uncompressedFileName); |
| 181 | | } |
| 182 | | |
| 183 | | //Save compressed file. |
| 184 | | var compresedContents = buildUtil.optimizeJs(fileName, fileContents, layerLegalText, true); |
| 185 | | fileUtil.saveFile(fileName, compresedContents); |
| 186 | | |
| 187 | | //Remove _base from the release. |
| 188 | | fileUtil.deleteFile(dojoReleaseDir + "_base"); |
| 189 | | fileUtil.deleteFile(dojoReleaseDir + "_base.js"); |
| 190 | | |
| 191 | | //FIXME: generate xd contents for layer files. |
| 192 | | } |
| 193 | | |
| 194 | | //Save the dependency lists to build.txt |
| 195 | | var buildText = "Files baked into this build:" + lineSeparator; |
| 196 | | for(var i = 0; i < result.length; i++){ |
| 197 | | buildText += lineSeparator + result[i].layerName + ":" + lineSeparator; |
| 198 | | buildText += result[i].depList.join(lineSeparator) + lineSeparator; |
| 199 | | } |
| 200 | | fileUtil.saveFile(kwArgs.releaseDir + "/dojo/build.txt", buildText); |
| 201 | | |
| 202 | | logger.info(buildText); |
| 203 | | } |
| | 150 | _prefixPathRelease("dojo", dojoPrefixPath, kwArgs); |
| | 151 | |
| | 152 | //Make sure dojo is clear before trying to map dependencies. |
| | 153 | if(typeof dojo != "undefined"){ |
| | 154 | dojo = undefined; |
| | 155 | } |
| | 156 | |
| | 157 | //FIXME: loadDependency list reparses profile file, but we've already done that. |
| | 158 | logger.trace("Building dojo.js and layer files"); |
| | 159 | var result = buildUtil.makeDojoJs(buildUtil.loadDependencyList(kwArgs.profileFile), kwArgs.version); |
| | 160 | |
| | 161 | //Save the build layers. The first layer is dojo.js. |
| | 162 | var layerLegalText = copyrightText + buildNoticeText; |
| | 163 | var dojoReleaseDir = kwArgs.releaseDir + "/dojo/"; |
| | 164 | for(var i = 0; i < result.length; i++){ |
| | 165 | var fileName = dojoReleaseDir + result[i].layerName; |
| | 166 | var fileContents = result[i].contents; |
| | 167 | |
| | 168 | //Flatten resources |
| | 169 | //FIXME: Flatten resources. Only do the top level flattening for bundles |
| | 170 | //in the layer files. How to do this for layers? only do one nls file for |
| | 171 | //all layers, or a different one for each layer? |
| | 172 | if(fileName == "dojo.js"){ |
| | 173 | i18n.flattenLayerFileBundles(fileName, dojoReleaseDir + "nls", "nls", kwArgs); |
| | 174 | } |
| | 175 | |
| | 176 | //Save uncompressed file. |
| | 177 | var uncompressedFileName = fileName + ".uncompressed.js"; |
| | 178 | fileUtil.saveFile(uncompressedFileName, layerLegalText + fileContents); |
| | 179 | |
| | 180 | //Intern strings if desired. Do this before compression, since, in the xd case, |
| | 181 | //"dojo" gets converted to a shortened name. |
| | 182 | if(kwArgs.internStrings){ |
| | 183 | logger.info("Interning strings for file: " + fileName); |
| | 184 | var prefixes = dependencies["prefixes"] || []; |
| | 185 | var skiplist = dependencies["internSkipList"] || []; |
| | 186 | buildUtil.internTemplateStringsInFile(uncompressedFileName, dojoReleaseDir, prefixes, skiplist); |
| | 187 | |
| | 188 | //Load the file contents after string interning, to pick up interned strings. |
| | 189 | fileContents = fileUtil.readFile(uncompressedFileName); |
| | 190 | } |
| | 191 | |
| | 192 | //Save compressed file. |
| | 193 | var compresedContents = buildUtil.optimizeJs(fileName, fileContents, layerLegalText, true); |
| | 194 | fileUtil.saveFile(fileName, compresedContents); |
| | 195 | |
| | 196 | //Remove _base from the release. |
| | 197 | fileUtil.deleteFile(dojoReleaseDir + "_base"); |
| | 198 | fileUtil.deleteFile(dojoReleaseDir + "_base.js"); |
| | 199 | |
| | 200 | //FIXME: generate xd contents for layer files. |
| | 201 | } |
| | 202 | |
| | 203 | //Save the dependency lists to build.txt |
| | 204 | var buildText = "Files baked into this build:" + lineSeparator; |
| | 205 | for(var i = 0; i < result.length; i++){ |
| | 206 | buildText += lineSeparator + result[i].layerName + ":" + lineSeparator; |
| | 207 | buildText += result[i].depList.join(lineSeparator) + lineSeparator; |
| | 208 | } |
| | 209 | fileUtil.saveFile(kwArgs.releaseDir + "/dojo/build.txt", buildText); |
| | 210 | logger.info(buildText); |
| | 211 | |
| | 212 | //Copy over DOH if tests where copied. |
| | 213 | if(kwArgs.copyTests){ |
| | 214 | copyRegExp = new RegExp(prefixName.replace(/\\/g, "/") + "/(?!tests)"); |
| | 215 | fileUtil.copyDir("../doh", kwArgs.releaseDir + "/util/doh", /./); |
| | 216 | } |
| | 217 | |
| | 218 | logger.info("Build is in directory: " + kwArgs.releaseDir); |