diff options
author | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-20 03:25:11 +0000 |
---|---|---|
committer | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-20 03:25:11 +0000 |
commit | a87daad928d7d0c80c2dae106ef0ce17d76dcb7a (patch) | |
tree | 6716ffb5aa9713f8c3f947889534fc2d16e90183 /chrome/app/nibs/PRESUBMIT.py | |
parent | da1276f7e6ca78beec0fa1c90ac1f7172fc60c8f (diff) | |
download | chromium_src-a87daad928d7d0c80c2dae106ef0ce17d76dcb7a.zip chromium_src-a87daad928d7d0c80c2dae106ef0ce17d76dcb7a.tar.gz chromium_src-a87daad928d7d0c80c2dae106ef0ce17d76dcb7a.tar.bz2 |
Re-save XIB files using Xcode 4.4.1 on Mac OS X 10.8.1.
This also adds a PRESUBMIT check to enforce the policy described here:
http://dev.chromium.org/developers/design-documents/mac-xib-files
BUG=149763
TEST=Build chrome target on 10.6 with Xcode 3.2. Chromium.app launches and works.
TBR=mark@chromium.org
Review URL: https://chromiumcodereview.appspot.com/10950010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@157690 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/app/nibs/PRESUBMIT.py')
-rw-r--r-- | chrome/app/nibs/PRESUBMIT.py | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/chrome/app/nibs/PRESUBMIT.py b/chrome/app/nibs/PRESUBMIT.py new file mode 100644 index 0000000..ffb09d0 --- /dev/null +++ b/chrome/app/nibs/PRESUBMIT.py @@ -0,0 +1,84 @@ +# Copyright (c) 2012 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Presubmit script to verify that XIB changes are done with the right version. + +See http://dev.chromium.org/developers/design-documents/mac-xib-files for more +information. +""" + +import re + +# Minimum is Mac OS X 10.8.1 (12B19). +HUMAN_DARWIN_VERSION = '10.8.x, x >= 1' +ALLOWED_DARWIN_VERSION = 12 # Darwin 12 = 10.8. +MINIMUM_DARWIN_RELEASE = 'B' # Release B = 10.8.1. + +MINIMUM_IB_VERSION = 2549 # Xcode 4.4.1. +MAXIMUM_IB_VERSION = 2800 # Xcode 4.5.x. +HUMAN_IB_VERSION = '4.4.x, x >= 1' + +SYSTEM_VERSION_RE = r'<string key="IBDocument\.SystemVersion">' + \ + '([0-9]{,2})([A-Z])([0-9]+)</string>' + +IB_VERSION_RE = \ + r'<string key="IBDocument\.InterfaceBuilderVersion">([0-9]+)</string>' + +def _CheckXIBSystemAndXcodeVersions(input_api, output_api, error_type): + affected_xibs = [x for x in input_api.AffectedFiles() + if x.LocalPath().endswith('.xib')] + + incorrect_system_versions = [] + incorrect_ib_versions = [] + + for xib in affected_xibs: + system_version = None + ib_version = None + for line in xib.NewContents(): + m = re.search(SYSTEM_VERSION_RE, line) + if m: + system_version = (m.group(1), m.group(2), m.group(3)) + + m = re.search(IB_VERSION_RE, line) + if m: + ib_version = m.group(1) + + if system_version is not None and ib_version is not None: + break + + if system_version is None: + incorrect_system_versions.append(xib.LocalPath()) + continue + if int(system_version[0]) != ALLOWED_DARWIN_VERSION: + incorrect_system_versions.append(xib.LocalPath()) + continue + if system_version[1] < MINIMUM_DARWIN_RELEASE: + incorrect_system_versions.append(xib.LocalPath()) + continue + + if ib_version is None or int(ib_version) < MINIMUM_IB_VERSION or \ + int(ib_version) >= MAXIMUM_IB_VERSION: + incorrect_ib_versions.append(xib.LocalPath()) + continue + + problems = [] + if incorrect_system_versions: + problems.append(error_type( + 'XIB files need to be saved on Mac OS X ' + HUMAN_DARWIN_VERSION, + items=incorrect_system_versions)) + if incorrect_ib_versions: + problems.append(error_type( + 'XIB files need to be saved using Xcode ' + HUMAN_IB_VERSION, + items=incorrect_ib_versions)) + return problems + +def CheckChangeOnUpload(input_api, output_api): + # Allow uploads to happen even if the presubmit fails, so that contributors + # can ask their reviewer or another person to re-save the XIBs for them. + return _CheckXIBSystemAndXcodeVersions(input_api, output_api, + error_type=output_api.PresubmitPromptWarning) + +def CheckChangeOnCommit(input_api, output_api): + return _CheckXIBSystemAndXcodeVersions(input_api, output_api, + error_type=output_api.PresubmitError) |