#!/usr/bin/env python
#     Copyright 2013, Kay Hayen, mailto:kay.hayen@gmail.com
#
#     Part of "Nuitka", an optimizing Python compiler that is compatible and
#     integrates with CPython, but also works on its own.
#
#     Licensed under the Apache License, Version 2.0 (the "License");
#     you may not use this file except in compliance with the License.
#     You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#     Unless required by applicable law or agreed to in writing, software
#     distributed under the License is distributed on an "AS IS" BASIS,
#     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#     See the License for the specific language governing permissions and
#     limitations under the License.
#

import os, sys, shutil, subprocess

assert os.path.isfile( "setup.py" ) and open( ".git/description" ).read().strip() == "Nuitka Staging"

nuitka_version = subprocess.check_output( "./bin/nuitka --version", shell = True ).strip()
branch_name = subprocess.check_output( "git name-rev --name-only HEAD".split() ).strip()

assert branch_name in ( b"master", b"develop", b"release/" + nuitka_version, b"hotfix/" + nuitka_version ), branch_name

shutil.rmtree( "dist", ignore_errors = True )
shutil.rmtree( "build", ignore_errors = True )

assert 0 == os.system( "misc/make-doc.py" )
assert 0 == os.system( "python setup.py sdist --formats=gztar" )

# Upload stable releases to OpenSUSE Build Service:
if branch_name.startswith( "release" ) or \
   branch_name.startswith( "hotfix" ) or \
   branch_name == "master":
    # Cleanup the osc directory.
    shutil.rmtree( "osc", ignore_errors = True )

    os.makedirs( "osc" )
    os.system( "cd osc && osc init home:kayhayen Nuitka && osc repairwc && cp ../dist/Nuitka-*.tar.gz . && cp ../misc/nuitka.spec . && cp ../misc/nuitka-run3 . && cp ../misc/nuitka-rpmlintrc . && osc addremove && echo 'New release' >ci_message && osc ci --file ci_message" )

    # Cleanup the osc directory.
    shutil.rmtree( "osc", ignore_errors = True )
elif branch_name == "develop" or branch_name == "factory":
    # Cleanup the osc directory.
    shutil.rmtree( "osc", ignore_errors = True )

    os.makedirs( "osc" )
    os.system( "cd osc && osc init home:kayhayen Nuitka-Unstable && osc repairwc && cp ../dist/Nuitka-*.tar.gz . && cp ../misc/nuitka.spec ./nuitka-unstable.spec && sed -i nuitka-unstable.spec -e 's/Name: *nuitka/Name:           nuitka-unstable/' && cp ../misc/nuitka-run3 . && cp ../misc/nuitka-rpmlintrc . && osc addremove && echo 'New release' >ci_message && osc ci --file ci_message" )

    # Cleanup the osc directory.
    shutil.rmtree( "osc", ignore_errors = True )
else:
    sys.stdout.write( "Skipping OSC for branch '%s'" % branch_name )

@@ -836,111 +836,8 @@
 ss%0A%0A
-assert os.path.isfile( %22setup.py%22 ) and open( %22.git/description%22 ).read().strip() == %22Nuitka Staging%22%0A%0A
 nuit
@@ -873,16 +873,20 @@
 _output(
+%0A   
  %22./bin/
@@ -916,17 +916,17 @@
 l = True
- 
+%0A
 ).strip(
@@ -965,16 +965,20 @@
 _output(
+%0A   
  %22git na
@@ -1009,17 +1009,17 @@
 .split()
- 
+%0A
 ).strip(
@@ -1044,16 +1044,20 @@
 ame in (
+%0A   
  b%22maste
@@ -1059,16 +1059,20 @@
 master%22,
+%0A   
  b%22devel
@@ -1075,16 +1075,36 @@
 evelop%22,
+%0A    b'factory',%0A   
  b%22relea
@@ -1125,16 +1125,20 @@
 version,
+%0A   
  b%22hotfi
@@ -1157,17 +1157,17 @@
 _version
- 
+%0A
 ), branc
@@ -1456,17 +1456,16 @@
 rtswith(
- 
 %22release
@@ -1465,17 +1465,16 @@
 release%22
- 
 ) or %5C%0A 
@@ -1502,17 +1502,16 @@
 ith(
- 
 %22hotfix%22
  ) o
@@ -1506,17 +1506,16 @@
 %22hotfix%22
- 
 ) or %5C%0A 
@@ -1584,33 +1584,32 @@
   shutil.rmtree(
- 
 %22osc%22, ignore_er
@@ -1611,35 +1611,33 @@
 re_errors = True
- )%0A
+)
 %0A    os.makedirs
@@ -1633,32 +1633,82 @@
 os.makedirs(
- %22osc%22 )
+%22osc%22)%0A%0A    # Stage the %22osc%22 checkout from the ground up.
 %0A    os.syst
@@ -2015,33 +2015,32 @@
   shutil.rmtree(
- 
 %22osc%22, ignore_er
@@ -2046,25 +2046,24 @@
 rrors = True
- 
 )%0Aelif branc
@@ -2193,17 +2193,16 @@
  True )%0A
-%0A
     os.m
@@ -2217,16 +2217,134 @@
  %22osc%22 )
+%0A%0A    # Stage the %22osc%22 checkout from the ground up, but path the RPM spec to say%0A    # it is nuitks-unstable package.
 %0A    os.
@@ -2827,22 +2827,13 @@
 sys.
-stdout.write( 
+exit(
 %22Ski
@@ -2872,11 +2872,10 @@
 nch_name
- 
 )%0A

Allow "factory" branch for OSC branch, going to make that test wise occasionally