Adding run_localization_check.py

It will run the two localization verifications:
- It will tell if the resource files are formatted in the correct way
- It ill tell if any localizable resource in the code is present with the
appropiate attributes in the resource files.

This two verifications already run as part of the presubmit verifications,
I did some refactoring to allow them to be run from an external script.

Change-Id: I340e5dcfdeef7331a757adf27cef94e22302cf10
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/1894913
Reviewed-by: Lorne Mitchell <lomitch@microsoft.com>
Commit-Queue: Vidal Diazleal <vidorteg@microsoft.com>
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index e5b16b3..b6e8602 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -127,29 +127,30 @@
     ]
 
 
-def _CheckDevtoolsLocalizableResources(input_api, output_api, check_all_files=False):  # pylint: disable=invalid-name
-    devtools_root = input_api.PresubmitLocalPath()
-    devtools_front_end = input_api.os_path.join(devtools_root, 'front_end')
-    affected_front_end_files = _getAffectedFiles(input_api, [devtools_front_end], [], ['.js', 'module.json', '.grd', '.grdp'])
-    if len(affected_front_end_files) == 0 and check_all_files == False:
-        return []
-    script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), 'scripts', 'check_localizable_resources.js')
-    args = ['--autofix']
-    return _checkWithNodeScript(input_api, output_api, script_path, args)
-
-
 def _CheckDevtoolsLocalization(input_api, output_api, check_all_files=False):  # pylint: disable=invalid-name
     devtools_root = input_api.PresubmitLocalPath()
-    devtools_front_end = input_api.os_path.join(devtools_root, 'front_end')
-    affected_front_end_files = _getAffectedFiles(input_api, [devtools_front_end], ['D'], ['.js', '.grdp'])
-    if len(affected_front_end_files) == 0 and check_all_files == False:
-        return []
-
-    script_path = input_api.os_path.join(input_api.PresubmitLocalPath(), 'scripts', 'check_localizability.js')
+    script_path = input_api.os_path.join(devtools_root, 'scripts', 'test', 'run_localization_check.py')
     if check_all_files == True:
-        return _checkWithNodeScript(input_api, output_api, script_path, ['-a'])
+        # Scan all files and fix any errors
+        args = ['--autofix', '--a']
     else:
-        return _checkWithNodeScript(input_api, output_api, script_path, affected_front_end_files)
+        devtools_front_end = input_api.os_path.join(devtools_root, 'front_end')
+        affected_front_end_files = _getAffectedFiles(input_api, [devtools_front_end], ['D'],
+                                                     ['.js', '.grdp', '.grd', 'module.json'])
+
+        if len(affected_front_end_files) == 0:
+            return []
+        # Scan only added or modified files with specific extensions.
+        args = [
+            '--autofix',
+            '--files',
+        ] + affected_front_end_files
+    process = input_api.subprocess.Popen(
+        [input_api.python_executable, script_path] + args, stdout=input_api.subprocess.PIPE, stderr=input_api.subprocess.STDOUT)
+    out, _ = process.communicate()
+    if process.returncode != 0:
+        return [output_api.PresubmitError(out)]
+    return [output_api.PresubmitNotifyResult(out)]
 
 
 def _CheckDevtoolsStyle(input_api, output_api):
@@ -221,7 +222,6 @@
     results.extend(_CheckDevtoolsStyle(input_api, output_api))
     results.extend(_CheckOptimizeSVGHashes(input_api, output_api))
     results.extend(_CheckCSSViolations(input_api, output_api))
-    results.extend(_CheckDevtoolsLocalizableResources(input_api, output_api))
     results.extend(_CheckDevtoolsLocalization(input_api, output_api))
     results.extend(_CheckChangesAreExclusiveToDirectory(input_api, output_api))
     return results
@@ -230,7 +230,6 @@
 def CheckChangeOnCommit(input_api, output_api):
     results = []
     results.extend(_CommonChecks(input_api, output_api))
-    results.extend(_CheckDevtoolsLocalizableResources(input_api, output_api, True))
     results.extend(_CheckDevtoolsLocalization(input_api, output_api, True))
     results.extend(_CheckChangesAreExclusiveToDirectory(input_api, output_api))
     results.extend(input_api.canned_checks.CheckChangeHasDescription(input_api, output_api))