xref: /aoo4110/main/solenv/bin/cwstouched.py (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski#!/usr/bin/python
2*b1cdbd2cSJim Jagielski
3*b1cdbd2cSJim Jagielski#**************************************************************
4*b1cdbd2cSJim Jagielski#
5*b1cdbd2cSJim Jagielski#  Licensed to the Apache Software Foundation (ASF) under one
6*b1cdbd2cSJim Jagielski#  or more contributor license agreements.  See the NOTICE file
7*b1cdbd2cSJim Jagielski#  distributed with this work for additional information
8*b1cdbd2cSJim Jagielski#  regarding copyright ownership.  The ASF licenses this file
9*b1cdbd2cSJim Jagielski#  to you under the Apache License, Version 2.0 (the
10*b1cdbd2cSJim Jagielski#  "License"); you may not use this file except in compliance
11*b1cdbd2cSJim Jagielski#  with the License.  You may obtain a copy of the License at
12*b1cdbd2cSJim Jagielski#
13*b1cdbd2cSJim Jagielski#    http://www.apache.org/licenses/LICENSE-2.0
14*b1cdbd2cSJim Jagielski#
15*b1cdbd2cSJim Jagielski#  Unless required by applicable law or agreed to in writing,
16*b1cdbd2cSJim Jagielski#  software distributed under the License is distributed on an
17*b1cdbd2cSJim Jagielski#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
18*b1cdbd2cSJim Jagielski#  KIND, either express or implied.  See the License for the
19*b1cdbd2cSJim Jagielski#  specific language governing permissions and limitations
20*b1cdbd2cSJim Jagielski#  under the License.
21*b1cdbd2cSJim Jagielski#
22*b1cdbd2cSJim Jagielski#**************************************************************
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielskiimport os
25*b1cdbd2cSJim Jagielskiimport sys
26*b1cdbd2cSJim Jagielskiimport string
27*b1cdbd2cSJim Jagielskifrom os import path
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielskidef getCurrPath():
30*b1cdbd2cSJim Jagielski    currPath = sys.path[0] or os.getcwd()
31*b1cdbd2cSJim Jagielski    currPath = path.abspath(currPath)
32*b1cdbd2cSJim Jagielski    return currPath
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielskidef getCwsWorkStamp():
35*b1cdbd2cSJim Jagielski    cwsWorkStamp=os.getenv('CWS_WORK_STAMP')
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski    if not cwsWorkStamp:
38*b1cdbd2cSJim Jagielski        currPath=getCurrPath()
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski        os.chdir(os.getenv('SOLARENV'))
41*b1cdbd2cSJim Jagielski
42*b1cdbd2cSJim Jagielski        (input, output) = os.popen4("svn info")
43*b1cdbd2cSJim Jagielski
44*b1cdbd2cSJim Jagielski        for outline in output.readlines():
45*b1cdbd2cSJim Jagielski            if outline.startswith("URL:"):
46*b1cdbd2cSJim Jagielski                cwsWorkStamp = outline[outline.index("svn.services"):outline.index("solenv")-1]
47*b1cdbd2cSJim Jagielski                cwsWorkStamp = cwsWorkStamp[cwsWorkStamp.rfind("/")+1:len(cwsWorkStamp)]
48*b1cdbd2cSJim Jagielski                break
49*b1cdbd2cSJim Jagielski
50*b1cdbd2cSJim Jagielski        os.putenv("CWS_WORK_STAMP",cwsWorkStamp);
51*b1cdbd2cSJim Jagielski        os.chdir(currPath)
52*b1cdbd2cSJim Jagielski
53*b1cdbd2cSJim Jagielski    return string.strip(cwsWorkStamp)
54*b1cdbd2cSJim Jagielski
55*b1cdbd2cSJim Jagielskidef getMinor(cwsWorkStamp):
56*b1cdbd2cSJim Jagielski    minor = os.getenv('UPDMINOR')
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski    if not minor:
59*b1cdbd2cSJim Jagielski        if (os.getenv('OSTYPE') == "cygwin"):
60*b1cdbd2cSJim Jagielski            bash=os.getenv("SHELL")
61*b1cdbd2cSJim Jagielski            (input, output) = os.popen4("cygpath -w "+bash)
62*b1cdbd2cSJim Jagielski            winbash=string.strip(output.readlines()[0])
63*b1cdbd2cSJim Jagielski            cws=winbash+" -c 'cws  query -c "+cwsWorkStamp+" current'"
64*b1cdbd2cSJim Jagielski        else:
65*b1cdbd2cSJim Jagielski            cws="cws query -c "+cwsWorkStamp+" current"
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski        (input, output) = os.popen4(cws)
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski        found=0
70*b1cdbd2cSJim Jagielski        for outline in output.readlines():
71*b1cdbd2cSJim Jagielski            if found:
72*b1cdbd2cSJim Jagielski                minor=outline
73*b1cdbd2cSJim Jagielski                break
74*b1cdbd2cSJim Jagielski            elif outline.find("Current milestone:") != -1:
75*b1cdbd2cSJim Jagielski                found=1
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski    return string.strip(minor)
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski
80*b1cdbd2cSJim Jagielskiworkstamp = os.getenv('WORK_STAMP')
81*b1cdbd2cSJim Jagielskisolenv= os.getenv('SOLARENV')
82*b1cdbd2cSJim JagielskicwsWorkStamp=getCwsWorkStamp()
83*b1cdbd2cSJim Jagielskiminor = getMinor(cwsWorkStamp)
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim JagielskioldWorkStamp = workstamp + "_" + minor
86*b1cdbd2cSJim Jagielskidiff="svn diff --summarize --old=svn://svn.services.openoffice.org/ooo/tags/"+oldWorkStamp+" --new=svn://svn.services.openoffice.org/ooo/cws/"+cwsWorkStamp
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielskimodules=[]
89*b1cdbd2cSJim Jagielski(input, output) = os.popen4(diff)
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielskifor outline in output.readlines():
92*b1cdbd2cSJim Jagielski    if outline.find("svn://svn.services.openoffice.org"):
93*b1cdbd2cSJim Jagielski        index = outline.index(oldWorkStamp)+len(oldWorkStamp)+1
94*b1cdbd2cSJim Jagielski        newModule=""
95*b1cdbd2cSJim Jagielski        if outline.find("/",index) != -1:
96*b1cdbd2cSJim Jagielski            # seems to be a file
97*b1cdbd2cSJim Jagielski            newModule=string.strip(outline[index:outline.index("/",index)])
98*b1cdbd2cSJim Jagielski        else:
99*b1cdbd2cSJim Jagielski            #seems to be a folder
100*b1cdbd2cSJim Jagielski            if len(outline[index:]) > 0:
101*b1cdbd2cSJim Jagielski                newModule=string.strip(outline[index:])
102*b1cdbd2cSJim Jagielski        if newModule != "" and not modules.count(newModule):
103*b1cdbd2cSJim Jagielski            modules.append(newModule)
104*b1cdbd2cSJim Jagielski
105*b1cdbd2cSJim Jagielskifor module in modules:
106*b1cdbd2cSJim Jagielski    print(module)
107