diff --git a/pmb/parse/__init__.py b/pmb/parse/__init__.py index f1eb7178..2bc730da 100644 --- a/pmb/parse/__init__.py +++ b/pmb/parse/__init__.py @@ -18,6 +18,7 @@ along with pmbootstrap. If not, see . """ from pmb.parse.arguments import arguments from pmb.parse._apkbuild import apkbuild +from pmb.parse._apkbuild import function_body from pmb.parse.binfmt_info import binfmt_info from pmb.parse.deviceinfo import deviceinfo from pmb.parse.kconfig import check diff --git a/pmb/parse/_apkbuild.py b/pmb/parse/_apkbuild.py index 8a760f3c..1013cfb1 100644 --- a/pmb/parse/_apkbuild.py +++ b/pmb/parse/_apkbuild.py @@ -83,6 +83,31 @@ def cut_off_function_names(apkbuild): return apkbuild +def function_body(path, func): + """ + Get the body of a function in an APKBUILD. + + :param path: full path to the APKBUILD + :param func: name of function to get the body of. + :returns: function body in an array of strings. + """ + func_body = [] + in_func = False + lines = read_file(path) + for line in lines: + if in_func: + if line.startswith("}"): + in_func = False + break + func_body.append(line) + continue + else: + if line.startswith(func + "() {"): + in_func = True + continue + return func_body + + def read_file(path): """ Read an APKBUILD file