build: add a helper script to retreive data from a GN project
This commit is contained in:
parent
72526927d9
commit
8e525f965d
1 changed files with 61 additions and 0 deletions
61
script/lib/gn.py
Normal file
61
script/lib/gn.py
Normal file
|
@ -0,0 +1,61 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import subprocess
|
||||
|
||||
from util import scoped_cwd
|
||||
|
||||
|
||||
class GNProject:
|
||||
def __init__(self, out_dir):
|
||||
self.out_dir = out_dir
|
||||
|
||||
def run(self, command_name, command_args):
|
||||
with scoped_cwd(self.out_dir):
|
||||
complete_args = ['gn', 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)
|
Loading…
Add table
Reference in a new issue