blob: c84280ceca3f3adda7ed884e0c4f737676635d1c [file] [log] [blame]
#!/usr/bin/env vpython
#
# Copyright 2020 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.
"""
Ensure Devtools-frontend is properly symlinked on gclient sync
In order to use:
Ensure your .gclient file that manages chromium.src contains this hook
after your list of solutions:
hooks = [
{
# Ensure devtools-frontend is symlinked in the correct location
'name': 'Symlink devtools-frontend',
'pattern': '.',
'action': [
'python',
'<path>/<to>/devtools-frontend/scripts/deps/ensure_symlink.py',
'<path>/<to>/src',
'<path>/<to>/devtools-frontend'
],
}
]
"""
import argparse
import os
import sys
import subprocess
DEVTOOLS_FRONTEND_CHROMIUM_LOCATION = './third_party/devtools-frontend/src'
def symlink(src, dst):
os_symlink = getattr(os, 'symlink', None)
if callable(os_symlink):
# symlink is only available on Unix
os_symlink(src, dst)
else:
# use mklink on windows
subprocess.check_call(['mklink', '/D', dst, src], shell=True)
def parse_options(cli_args):
parser = argparse.ArgumentParser(
description='Ensure Devtools is symlinked in a full checkout.')
parser.add_argument('chromium_dir', help='Root of the Chromium Directory')
parser.add_argument('devtools_dir', help='Root of the DevTools directory')
return parser.parse_args(cli_args)
def ensure_symlink(options):
chromium_devtools_path = os.path.normpath(
os.path.join(options.chromium_dir,
DEVTOOLS_FRONTEND_CHROMIUM_LOCATION))
if not os.path.exists(chromium_devtools_path):
symlink(os.path.normpath(options.devtools_dir), chromium_devtools_path)
if __name__ == '__main__':
OPTIONS = parse_options(sys.argv[1:])
ensure_symlink(OPTIONS)