aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'filetypes/automake.py')
-rw-r--r--filetypes/automake.py40
1 files changed, 36 insertions, 4 deletions
diff --git a/filetypes/automake.py b/filetypes/automake.py
index 1eaa765..f7e6a91 100644
--- a/filetypes/automake.py
+++ b/filetypes/automake.py
@@ -1,6 +1,7 @@
from ply import lex
from ply import yacc
import glob
+import os
def scanamfile(amfile):
"""Scan automake (.am) file
@@ -249,9 +250,40 @@ def scanamfile(amfile):
yacc.yacc()
variables = yacc.parse(amfile)
- print(variables)
+ return variables
-file="/usr/portage/distfiles/svn-src/moc/trunk/decoder_plugins/Makefile.am"
-with open(file, encoding="utf-8", errors="replace") as inputfile:
- scanamfile(inputfile.read())
+def scan(amfile):
+ curdir = os.path.split(amfile)[0] + "/"
+ amlist = scanamfile(openfile(amfile))
+ print(amfile)
+ return sources_to_scan(amlist,curdir)
+
+def sources_to_scan(amlist,curdir):
+ sources = []
+ #perhaps use set() here to eliminate the possibilty of duplicates?
+ for variable in amlist[0]:
+ if variable.split("_")[-1] == "SOURCES":
+ sources += amlist[0][variable]
+
+ if "SUBDIRS" in amlist[0]:
+ for dir in amlist[0]["SUBDIRS"]:
+ sources += scan(curdir + dir + "/Makefile.am")
+
+ for lst in amlist[1]:
+ if lst[0] == "SUBDIRS":
+ for dir in lst[1]:
+ sources += scan(curdir + dir + "/Makefile.am")
+
+ for ifstatement in amlist[2]:
+ #don't care about if statements ATM!
+ sources += sources_to_scan(amlist[2][ifstatement],curdir)
+
+ return sources
+
+def openfile(ofile):
+ with open(ofile, encoding="utf-8", errors="replace") as inputfile:
+ return inputfile.read()
+
+scan("/usr/portage/distfiles/svn-src/moc/trunk/Makefile.am")
+