summaryrefslogtreecommitdiff
path: root/pokemontools/scan_includes.py
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-02-13 18:09:31 -0500
committerGitHub <noreply@github.com>2017-02-13 18:09:31 -0500
commit979c98a7c0f67ad6b9685b2d532c66a1f76ffb22 (patch)
treec67cc7b8500aac4e400d4e8bfdbef57a57b63eb1 /pokemontools/scan_includes.py
parent74c620d01ad59bfb09cf4111ace549b925fcb9ab (diff)
parent766dea11bd63dee939db2b47198410e6c6e0fc7e (diff)
Merge pull request #103 from eevee/py3
Python 3 compatibility, sort of, maybe
Diffstat (limited to 'pokemontools/scan_includes.py')
-rw-r--r--pokemontools/scan_includes.py60
1 files changed, 34 insertions, 26 deletions
diff --git a/pokemontools/scan_includes.py b/pokemontools/scan_includes.py
index 53ff091..fea7002 100644
--- a/pokemontools/scan_includes.py
+++ b/pokemontools/scan_includes.py
@@ -4,40 +4,48 @@
"""
Recursively scan an asm file for dependencies.
"""
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
import sys
import argparse
import os.path
-includes = set()
def scan_file(filename):
- for line in open(filename):
- if 'INC' not in line:
- continue
- line = line.split(';')[0]
- if 'INCLUDE' in line:
- include = line.split('"')[1]
- if os.path.exists("src/"):
- includes.add("src/" + include)
- scan_file("src/" + include)
- else:
- includes.add(include)
- scan_file(include)
- elif 'INCBIN' in line:
- include = line.split('"')[1]
- if 'baserom.gbc' not in line and os.path.exists("src/"):
- includes.add("src/" + include)
- else:
- includes.add(include)
+ with open(filename) as f:
+ for line in f:
+ if 'INC' not in line:
+ continue
+ line = line.split(';')[0]
+ if 'INCLUDE' in line:
+ include = line.split('"')[1]
+ if os.path.exists("src/"):
+ yield "src/" + include
+ for inc in scan_file("src/" + include):
+ yield inc
+ else:
+ yield include
+ for inc in scan_file(include):
+ yield inc
+ elif 'INCBIN' in line:
+ include = line.split('"')[1]
+ if 'baserom.gbc' not in line and os.path.exists("src/"):
+ yield "src/" + include
+ else:
+ yield include
+
def main():
- ap = argparse.ArgumentParser()
- ap.add_argument('filenames', nargs='*')
- args = ap.parse_args()
- for filename in set(args.filenames):
- scan_file(filename)
- sys.stdout.write(' '.join(includes))
+ ap = argparse.ArgumentParser()
+ ap.add_argument('filenames', nargs='*')
+ args = ap.parse_args()
+ includes = set()
+ for filename in set(args.filenames):
+ includes.update(scan_file(filename))
+ sys.stdout.write(' '.join(sorted(includes)))
+
if __name__ == '__main__':
- main()
+ main()