c9d61becbfa90be96a34b216e93198d4cf4a0590
[mirror/qt/qt5.git] / init-repository
1 #!/usr/bin/perl -w
2 #############################################################################
3 ##
4 ## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
5 ## All rights reserved.
6 ## Contact: Nokia Corporation (qt-info@nokia.com)
7 ##
8 ## This file is part of the utilities of the Qt Toolkit.
9 ##
10 ## $QT_BEGIN_LICENSE:LGPL$
11 ## No Commercial Usage
12 ## This file contains pre-release code and may not be distributed.
13 ## You may use this file in accordance with the terms and conditions
14 ## contained in the Technology Preview License Agreement accompanying
15 ## this package.
16 ##
17 ## GNU Lesser General Public License Usage
18 ## Alternatively, this file may be used under the terms of the GNU Lesser
19 ## General Public License version 2.1 as published by the Free Software
20 ## Foundation and appearing in the file LICENSE.LGPL included in the
21 ## packaging of this file.  Please review the following information to
22 ## ensure the GNU Lesser General Public License version 2.1 requirements
23 ## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ##
25 ## In addition, as a special exception, Nokia gives you certain additional
26 ## rights.  These rights are described in the Nokia Qt LGPL Exception
27 ## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 ##
29 ## If you have questions regarding the use of this file, please contact
30 ## Nokia at qt-info@nokia.com.
31 ##
32 ##
33 ##
34 ##
35 ##
36 ##
37 ##
38 ##
39 ## $QT_END_LICENSE$
40 ##
41 #############################################################################
42
43 my $force = 0;
44 my $quiet = 0;
45 my $nokia_developer = 0;
46
47 sub system_v
48 {
49     if (!$quiet) {
50         print "+ ";
51         print @_;
52         print "\n";
53     }
54     return system(@_);
55 }
56
57 sub printUsage
58 {
59     print("$0 <options>\n");
60     print("-f\tForce initialization\n");
61     print("-q\tQuiet operation. Will exit cleanly if repository is already\n");
62     print("\tinitialized\n");
63     print("-nokia-developer Switch to internal Nokia URLs.\n");
64 }
65
66 while (@ARGV) {
67     my $arg = $ARGV[0];
68     if ($arg eq "-f") {
69         $force = 1;
70     } elsif ($arg eq "-q") {
71         $quiet = 1;
72     } elsif ($arg eq "-nokia-developer") {
73         $nokia_developer = 1;
74     } elsif ($arg eq "-h" || $arg eq "--help") {
75         printUsage();
76         exit 0;
77     } else {
78         die("Illegal argument: $arg");
79     }
80     shift;
81 }
82
83 if (`git config --get submodule.qtbase.url`) {
84     if ($force) {
85         my @configresult = `git config -l`;
86         foreach (@configresult) {
87             if (/(submodule\.[^.=]+\.url)=.*/) {
88                 system_v("git config --unset $1");
89             }
90         }
91     } else {
92         exit 0 if ($quiet);
93         print("Will not reinitialize already initialized repository (use -f to force)!\n");
94         exit 1;
95     }
96 }
97
98 my $init_args = "";
99 $init_args = "-q" if ($quiet);
100 system_v("git submodule init $init_args");
101
102 if ($nokia_developer) {
103     my @configresult = `git config -l`;
104     foreach (@configresult) {
105         if (/(submodule\.[^.=]+\.url)=(.*)/) {
106             my $key = $1;
107             my $value = $2;
108             if ($key eq "submodule.qtwebkit.url") {
109                 # WebKit is special, and has only external link.
110                 $value =~ s,^git://gitorious\.org/,git\@gitorious.org:,;
111             } elsif ($key eq "submodule.qlalr.url") {
112                 # qlalr is hosted on qt-labs externally, but under qt internally.
113                 $value =~ s,^git://gitorious\.org/qt-labs/,git\@scm.dev.nokia.troll.no:qt/,;
114             } else {
115                 $value =~ s,^git://gitorious\.org/,git\@scm.dev.nokia.troll.no:,;
116             }
117             system_v("git config \"$key\" \"$value\"");
118         }
119     }
120 }
121
122 system_v("git submodule update");