source: Dev/trunk/src/client/util/build/transforms/writeCss.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 1.6 KB
Line 
1define([
2        "../buildControl",
3        "../fileUtils",
4        "../fs"
5], function(bc, fileUtils, fs){
6        return function(resource, callback){
7                var
8                        waitCount = 0,
9
10                        errors = [],
11
12                        onWriteComplete = function(err){
13                                if(err){
14                                        errors.push(err);
15                                }
16                                if(--waitCount==0){
17                                        callback(resource, errors.length && errors);
18                                }
19                        },
20
21                        doWrite = function(filename, text, encoding){
22                                fileUtils.ensureDirectoryByFilename(filename);
23                                waitCount++;
24                                fs.writeFile(filename, bc.newlineFilter(text, resource, "writeCss"), encoding || "utf8", onWriteComplete);
25                                // this must go *after* the async call
26                        },
27
28                        wroteExterns = 0;
29
30                try{
31                        doWrite(resource.dest, resource.text);
32                        if(resource.compactDest!=resource.dest){
33                                doWrite(resource.compactDest, resource.compactText);
34                        }
35
36                        // only need to tranverse bc.destDirToExternSet once...
37                        if(wroteExterns){
38                                return callback;
39                        }
40                        wroteExterns = 1;
41                        // bc.destDirToExternSet is a map from dest directory name to resourceSet;
42                        // resourceSet is a map from src filename (complete with path) to dest filename (name only)
43                        // bc.destDirToExternSet[dir][src]= dest implies copy filename src to dir + "/" + dest
44                        var
45                                destDirToExternSet = bc.destDirToExternSet,
46                                dir, resourceSet, src;
47                        for(dir in destDirToExternSet){
48                                resourceSet = destDirToExternSet[dir];
49                                for(src in resourceSet){
50                                        doWrite(dir + "/" + resourceSet[src], bc.resources[src].text, resource.encoding);
51                                }
52                        }
53                }catch(e){
54                        if(waitCount){
55                                // can't return the error since there are async processes already going
56                                errors.push(e);
57                                return 0;
58                        }else{
59                                return e;
60                        }
61                }
62                return callback;
63        };
64});
Note: See TracBrowser for help on using the repository browser.