comparison geotemco/Rakefile @ 0:57bde4830927

first commit
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 24 Mar 2015 11:37:17 +0100
parents
children 8f05c2a84bba
comparison
equal deleted inserted replaced
-1:000000000000 0:57bde4830927
1 # Rakefile - create single combined nd compressed javascript file
2
3 COMPRESS="java -jar lib/yuicompressor-2.4.2.jar"
4 COMPRESSED_OUTPUT_FILE='platin-min.js'
5 OUTPUT_FILE='platin.js'
6 CSS_FILE='css/platin.css'
7
8 task :default => :all
9
10 task :all => [:clean, COMPRESSED_OUTPUT_FILE, OUTPUT_FILE, CSS_FILE, :copyJqueryUIImageDirectory]
11
12 # javascript sources
13 Files = %w(js/Build/Minifier/basic.js
14 lib/excanvas/excanvas.js
15 lib/slider/js/range.js
16 lib/slider/js/slider.js
17 lib/slider/js/timer.js
18 lib/openlayers/OpenLayers.js
19 lib/jquery/jquery-deparam.min.js
20 lib/jquery/jquery.remember.js
21 lib/jquery/purl.min.js
22 lib/jquery-ui/jquery-ui-1.10.3.custom.js
23 lib/jszip/jszip.js
24 lib/jszip/jszip-deflate.js
25 lib/jszip/jszip-inflate.js
26 lib/jszip/jszip-load.js
27 lib/momentjs/moment.js
28 lib/ucsv/ucsv-1.1.0-min.js
29 lib/flot/jquery.flot.js
30 lib/flot/jquery.flot.pie.js
31 lib/flot/jquery.flot.resize.js
32 lib/flot/jquery.flot.selection.js
33 lib/flot/jquery.flot.time.js
34 lib/flot/jquery.flot.tooltip.js
35 lib/SimileRemnants.js
36 js/Util/Tooltips.js
37 js/GeoTemConfig.js
38 js/Map/MapControl.js
39 js/Map/CircleObject.js
40 js/Util/FilterBar.js
41 js/Util/Selection.js
42 js/Map/PlacenameTags.js
43 js/Map/MapConfig.js
44 js/Map/MapGui.js
45 js/Map/MapWidget.js
46 js/Time/TimeConfig.js
47 js/Time/TimeGui.js
48 js/Time/TimeWidget.js
49 js/Table/TableConfig.js
50 js/Table/TableGui.js
51 js/Table/TableWidget.js
52 js/Table/Table.js
53 js/Dataloader/Dataloader.js
54 js/Dataloader/DataloaderConfig.js
55 js/Dataloader/DataloaderGui.js
56 js/Dataloader/DataloaderWidget.js
57 js/FuzzyTimeline/FuzzyTimelineConfig.js
58 js/FuzzyTimeline/FuzzyTimelineDensity.js
59 js/FuzzyTimeline/FuzzyTimelineGui.js
60 js/FuzzyTimeline/FuzzyTimelineRangeBars.js
61 js/FuzzyTimeline/FuzzyTimelineRangePiechart.js
62 js/FuzzyTimeline/FuzzyTimelineRangeSlider.js
63 js/FuzzyTimeline/FuzzyTimelineWidget.js
64 js/Overlayloader/Overlayloader.js
65 js/Overlayloader/OverlayloaderConfig.js
66 js/Overlayloader/OverlayloaderGui.js
67 js/Overlayloader/OverlayloaderWidget.js
68 js/PieChart/PieChart.js
69 js/PieChart/PieChartCategoryChooser.js
70 js/PieChart/PieChartConfig.js
71 js/PieChart/PieChartGui.js
72 js/PieChart/PieChartHashFunctions.js
73 js/PieChart/PieChartWidget.js
74 js/Storytelling/Storytelling.js
75 js/Storytelling/StorytellingConfig.js
76 js/Storytelling/StorytellingGui.js
77 js/Storytelling/StorytellingWidget.js
78 js/Util/DataObject.js
79 js/Util/Dataset.js
80 js/Time/TimeDataSource.js
81 js/Map/Binning.js
82 js/Map/MapDataSource.js
83 js/Map/Clustering.js
84 js/Util/Dropdown.js
85 js/Map/MapZoomSlider.js
86 js/Map/MapPopup.js
87 js/Map/PlacenamePopup.js
88 js/Util/Publisher.js
89 js/Util/WidgetWrapper.js
90 js/Build/Minifier/final.js)
91
92 # css sources
93 Cssfiles = %w(lib/openlayers/theme/default/style.css
94 lib/jquery-ui/jquery-ui-1.10.3.custom.css
95 css/style.css)
96
97 def cat_files(outputfile, basename)
98 File.open(outputfile, 'a') do |x|
99 Files.each do |f|
100 x.puts(File.open(f).read.gsub('REPLACEME-REPLACEME', basename))
101 end
102 end
103 end
104
105 file CSS_FILE => Cssfiles do
106 File.open(CSS_FILE, 'w') do |x|
107 Cssfiles.each do |f|
108 x.puts(File.open(f).read)
109 end
110 end
111 end
112
113 # Just one big JS file, no compression.
114 file OUTPUT_FILE => Files do
115 basename = File.basename(OUTPUT_FILE, ".js")
116
117 File.open(OUTPUT_FILE, 'w') do |x|
118 x.puts("(function($){\n\nvar jQuery = $;");
119 end
120
121 cat_files(OUTPUT_FILE, basename)
122
123 File.open(OUTPUT_FILE, 'a') do |x|
124 x.puts("})(jQuery);");
125 end
126 end
127
128 task :copyJqueryUIImageDirectory do
129 @source = "./lib/jquery-ui/images"
130 @target = "./css/images"
131 @includePattern = "/**/*"
132 FileUtils.rm_rf(@target) #remove target directory (if exists)
133 FileUtils.mkdir_p(@target) #create the target directory
134 files = FileList.new().include("#{@source}#{@includePattern}");
135 files.each do |file|
136 #create target location file string (replace source with target in path)
137 targetLocation = file.sub(@source, @target)
138 #ensure directory exists
139 FileUtils.mkdir_p(File.dirname(targetLocation));
140 #copy the file
141 FileUtils.cp_r(file, targetLocation)
142 end
143 end
144
145 # Compress it.
146 file COMPRESSED_OUTPUT_FILE => Files do
147 basename = File.basename(COMPRESSED_OUTPUT_FILE, ".js")
148
149 File.open(OUTPUT_FILE, 'w') do |x|
150 x.puts("(function($){\n\nvar jQuery = $;");
151 end
152
153 cat_files(OUTPUT_FILE, basename)
154
155 File.open(OUTPUT_FILE, 'a') do |x|
156 x.puts("})(jQuery);");
157 end
158
159 system "#{COMPRESS} #{OUTPUT_FILE} >> #{COMPRESSED_OUTPUT_FILE}"
160 end
161
162 # Clean up the whole thing.
163 task :clean do
164 rm OUTPUT_FILE
165 rm COMPRESSED_OUTPUT_FILE
166 rm CSS_FILE
167 end