# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Presubmit script for liblouis repository."""
import json
import sys
def CheckChangeOnUpload(input_api, output_api):
if not sys.platform.startswith('linux'):
return []
sys.path.insert(0, input_api.os_path.join(
input_api.PresubmitLocalPath()))
try:
import liblouis_list_tables
finally:
sys.path.pop(0)
errors, new_tables = liblouis_list_tables.CheckTables("tables.json")
results = []
for x in errors:
results.append(output_api.PresubmitError(x))
# Write a suggested json for new tables.
if len(new_tables) > 0:
new_json = []
for table in new_tables:
name = table.split('.')[0]
name_parts = name.split('-')
# These are guesses as to the grade and dots based on the filename. The
# suggestion still needs to be validated.
dots = "6"
if "comp8" in name:
dots = "8"
grade = "1"
if "g0" in name:
grade = "0"
elif "g2" in name:
grade = "2"
elif "g3" in name:
grade = "3"
# See if the table file has any more data.
data = liblouis_list_tables.GetAdditionalFileTableData("src/tables/" + table)
if "dots" in data:
dots = data["dots"]
en_display_name = ""
if "display-name" in data:
en_display_name = data["display-name"]
locale = name_parts[0]
if 'locale' in data:
locale = data['locale']
elif len(locale) == 4:
# This works around bad locale specifiers e.g. "zhcn".
locale = locale[0:2] + "-" + locale[2:]
elif len(name_parts) > 1 and len(name_parts[1]) == 2:
locale = "-".join(name_parts[0:2])
entry = {
"id": name,
"locale": locale,
"dots": dots,
"grade": grade,
"fileNames": table
}
if en_display_name:
entry["enDisplayName"] = en_display_name
new_json.append(entry)
results.append(output_api.PresubmitNotifyResult("Suggested additions to " +
"tables.json (please edit and validate):\n" +
json.dumps(new_json, indent=2)))
return results