electron/script/lib/gn.py
Charles Kerr a45ded5508
chore: fix python lint warnings (#14638)
* chore: fix lint warnings

* chore: another try at python import errors

Looks like the problem is that dbus_mock.py is running as
a script but living in the `lib/` directory where it's part of a
module. Moving it up into the `script/` directory seems to
solve the issue.
2018-09-16 12:24:07 -05:00

69 lines
1.5 KiB
Python

#!/usr/bin/env python
import subprocess
import sys
from lib.util import scoped_cwd
class GNProject:
def __init__(self, out_dir):
self.out_dir = out_dir
def _get_executable_name(self):
if sys.platform == 'win32':
return 'gn.bat'
return 'gn'
def run(self, command_name, command_args):
with scoped_cwd(self.out_dir):
complete_args = [self._get_executable_name(), command_name, '.'] + \
command_args
return subprocess.check_output(complete_args)
def args(self):
return GNArgs(self)
class GNArgs:
def __init__(self, project):
self.project = project
def _get_raw_value(self, name):
# E.g. 'version = "1.0.0"\n'
raw_output = self.project.run('args',
['--list={}'.format(name), '--short'])
# E.g. 'version = "1.0.0"'
name_with_raw_value = raw_output[:-1]
# E.g. ['version', '"1.0.0"']
name_and_raw_value = name_with_raw_value.split(' = ')
raw_value = name_and_raw_value[1]
return raw_value
def get_string(self, name):
# Expects to get a string in double quotes, e.g. '"some_value"'.
raw_value = self._get_raw_value(name)
# E.g. 'some_value' (without enclosing quotes).
value = raw_value[1:-1]
return value
def get_boolean(self, name):
# Expects to get a 'true' or a 'false' string.
raw_value = self._get_raw_value(name)
if raw_value == 'true':
return True
if raw_value == 'false':
return False
return None
def gn(out_dir):
return GNProject(out_dir)