mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-09-30 09:17:09 +08:00
Also add script for rolling CodeMirror, and extended test for syntax highlighting R=luoe@chromium.org Bug: chromium:985594 Change-Id: I54c92a257926671a9ec87a3c7ecd8e657acc685c Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1709571 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Joel Einbinder <einbinder@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#680772} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 9f569d9266405b104365e05734e13848c6655c01
121 lines
4.1 KiB
Python
121 lines
4.1 KiB
Python
# Copyright 2019 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.
|
|
|
|
import argparse
|
|
import glob
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def parse_options(cli_args):
|
|
parser = argparse.ArgumentParser(description='Roll CodeMirror')
|
|
parser.add_argument('cm_dir', help='CodeMirror directory')
|
|
parser.add_argument('devtools_dir', help='DevTools directory')
|
|
return parser.parse_args(cli_args)
|
|
|
|
|
|
def run_npm(options):
|
|
print 'Building CodeMirror in %s' % os.path.abspath(options.cm_dir)
|
|
subprocess.check_output(['npm', 'install'], cwd=options.cm_dir, stderr=subprocess.PIPE)
|
|
subprocess.check_output(['npm', 'run', 'build'], cwd=options.cm_dir, stderr=subprocess.PIPE)
|
|
|
|
|
|
def copy_lib_files(options):
|
|
print 'Copying codemirror.js and codemirror.css'
|
|
result = ''
|
|
target_dir = os.path.join(options.devtools_dir, 'front_end', 'cm')
|
|
|
|
with open(os.path.join(options.cm_dir, 'lib', 'codemirror.js'), 'r') as read:
|
|
lines = read.readlines()
|
|
with open(os.path.join(target_dir, 'codemirror.js'), 'w') as write:
|
|
for line in lines:
|
|
if 'CodeMirror.version =' in line:
|
|
result = line.strip()
|
|
write.write(line)
|
|
|
|
with open(os.path.join(options.cm_dir, 'lib', 'codemirror.css'), 'r') as read:
|
|
lines = read.readlines()
|
|
found_stop = False
|
|
with open(os.path.join(target_dir, 'codemirror.css'), 'w') as write:
|
|
for line in lines:
|
|
if found_stop:
|
|
write.write(line)
|
|
elif '/* STOP */' in line:
|
|
found_stop = True
|
|
assert found_stop
|
|
return result
|
|
|
|
|
|
def copy_headless_file(options):
|
|
print 'Copying runmode-standalone.js into headlesscodemirror.js'
|
|
source_file = os.path.join(options.cm_dir, 'addon', 'runmode', 'runmode-standalone.js')
|
|
target_file = os.path.join(options.devtools_dir, 'front_end', 'cm_headless', 'headlesscodemirror.js')
|
|
|
|
with open(source_file, 'r') as read:
|
|
lines = read.readlines()
|
|
with open(target_file, 'w') as write:
|
|
write.write('// Content of the function is equal to runmode-standalone.js file\n')
|
|
write.write('// from CodeMirror distribution\n')
|
|
write.write('(function(window) {\n')
|
|
for line in lines:
|
|
write.write(line)
|
|
write.write('}(this))\n')
|
|
|
|
|
|
def find_and_copy_js_files(source_dir, target_dir, filter_fn):
|
|
for f in os.listdir(target_dir):
|
|
if not filter_fn(f):
|
|
continue
|
|
target_file = os.path.join(target_dir, f)
|
|
if not os.path.isfile(os.path.join(target_dir, f)):
|
|
continue
|
|
source = glob.glob(os.path.join(source_dir, '*', f))
|
|
assert len(source) == 1
|
|
source_file = source[0]
|
|
print 'Copying %s from %s' % (target_file, source_file)
|
|
shutil.copyfile(source_file, target_file)
|
|
|
|
|
|
def copy_cm_files(options):
|
|
source_dir = os.path.join(options.cm_dir, 'addon')
|
|
target_dir = os.path.join(options.devtools_dir, 'front_end', 'cm')
|
|
|
|
def cm_filter(f):
|
|
return f.endswith('.js') and f != 'codemirror.js'
|
|
|
|
find_and_copy_js_files(source_dir, target_dir, cm_filter)
|
|
|
|
|
|
def copy_cm_modes_files(options):
|
|
source_dir = os.path.join(options.cm_dir, 'mode')
|
|
target_dir = os.path.join(options.devtools_dir, 'front_end', 'cm_modes')
|
|
|
|
def cm_modes_filter(f):
|
|
return f.endswith('.js') and f != 'DefaultCodeMirrorMimeMode.js'
|
|
|
|
find_and_copy_js_files(source_dir, target_dir, cm_modes_filter)
|
|
|
|
|
|
def copy_cm_web_modes_files(options):
|
|
source_dir = os.path.join(options.cm_dir, 'mode')
|
|
target_dir = os.path.join(options.devtools_dir, 'front_end', 'cm_web_modes')
|
|
|
|
def cm_web_modes_filter(f):
|
|
return f.endswith('.js')
|
|
|
|
find_and_copy_js_files(source_dir, target_dir, cm_web_modes_filter)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
OPTIONS = parse_options(sys.argv[1:])
|
|
run_npm(OPTIONS)
|
|
copy_cm_files(OPTIONS)
|
|
copy_cm_modes_files(OPTIONS)
|
|
copy_cm_web_modes_files(OPTIONS)
|
|
copy_headless_file(OPTIONS)
|
|
VERSION = copy_lib_files(OPTIONS)
|
|
print VERSION
|