merged cont.
[opensuse:yast-rest-service.git] / webyast-tasks / lib / tasks / osc_submit.rake
1 #--
2 # Webyast Webservice 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 'rake'
20
21
22 desc "Submit package to Yast:Web osc repository (override project via OBS_PROJECT=)"
23 task :'osc_submit'  do
24   require File.join(File.dirname(__FILE__), "osc_prepare")
25   
26   obs_project, package_name = osc_prepare
27   
28   puts "checking out package #{package_name} from project #{obs_project}"
29   
30   include FileUtils::Verbose
31   begin
32     sh "osc", "checkout", obs_project, package_name
33     
34     # clean www dir, and also clean old entries in osc dir to test if package builds after removing some file
35     rm_rf Dir.glob("#{obs_project}/#{package_name}/*")
36     cp Dir.glob("package/*"), "#{obs_project}/#{package_name}"
37     
38     Dir.chdir File.join(Dir.pwd, obs_project, package_name) do
39       puts "submitting package..."
40       sh "osc addremove"
41       changes = `osc diff *.changes | sed -n '/^+---/,+2b;/^+++/b;s/^+//;T;p'`
42       sh "osc", "commit", "-m", changes
43       puts "New package submitted to #{obs_project}"
44     end
45   ensure
46     puts "cleaning"
47     rm_rf obs_project
48   end
49 end