merged cont.
[opensuse:yast-rest-service.git] / webservice / lib / tasks / jsmin.rake
1 #--
2 # Webyast Webclient framework
3 #
4 # Copyright (C) 2009, 2010 Novell, Inc.
5 #   This library is free software; you can redistribute it and/or modify
6 # it only under the terms of version 2.1 of the GNU Lesser General Public
7 # License as published by the Free Software Foundation.
8 #
9 #   This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12 # details.
13 #
14 #   You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 #++
18
19 require "tempfile"
20 vars = ['JSMIN', 'JAVASCRIPTS_PATH', 'MIN']
21
22 JSMIN = File.join(RAILS_ROOT, '/script/javascript/jsmin.rb')
23 JAVASCRIPTS_PATH = "#{RAILS_ROOT}/public/javascripts"
24 MIN = "#{RAILS_ROOT}/public/javascripts/min"
25
26 def minify(list, output)
27    tmp = Tempfile.open('all')
28    list.each {|file| open(file) {|f| tmp.write(f.read) } }
29    tmp.rewind
30
31    sh "ruby #{JSMIN} < #{tmp.path} > #{output}"
32 end
33
34 #"jquery-effects.min.js", "jquery.tinysort.js", "jquery.tipsy.js", "firewall.helper.js"]
35 namespace :js do
36   directory MIN
37   javascripts = ["jquery-1.4.2.js", "jquery.query.js", "jquery.timers.js", "jquery.ui.custom.js", "jquery.validate.js", "validation.js",
38         "jqbrowser-compressed.js", "jquery.badbrowser.js", "yast.widgets.js", "yast.helpers.js", "jquery.activity.js", "notifier.js",
39         "browser_fixes.js", "jquery.quicksearch.js", "digitalspaghetti.password.js", "script.js",
40         "jquerytimer.js","jquerySessionTimeout.js", "jquery.blockUI.js", "jqueryDisableOnSubmit.js",
41         "jquery-effects.min.js", "jquery.tinysort.js", "jquery.tipsy.js", "webyast-firewall.js", "webyast-network.js",
42         "jquery.event.drag-2.0.min.js", "jquery.event.drop-2.0.min.js", "jquery.qsearch.js", "webyast-roles.js", "slidernav.js", 
43         "jquery.easing.1.3.js", "jquery.quicksand.js",
44         "webyast-modal-dialog.js", "webyast-online-help.js", "webyast-controlpanel.js", "webyast-localstorage.js", "passwordStrengthMeter.js"]
45
46   Dir.chdir(JAVASCRIPTS_PATH) do
47     javascripts.map! {|f| File.join(Dir.pwd, f)}
48
49     file 'base-min.js' => javascripts do | f |
50       output_file = File.join(MIN) + '/' + f.name
51       minify(f.prerequisites, output_file)
52     end
53   end
54
55   desc 'Minimize Javascripts'
56   task :"base" => [MIN, 'base-min.js']  do
57     puts "\nDone"
58   end
59 end
60