summaryrefslogtreecommitdiffstats
path: root/src/target/firmware/solve_envs.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/target/firmware/solve_envs.py')
-rwxr-xr-xsrc/target/firmware/solve_envs.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/target/firmware/solve_envs.py b/src/target/firmware/solve_envs.py
new file mode 100755
index 00000000..d6414d69
--- /dev/null
+++ b/src/target/firmware/solve_envs.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+
+import sys
+
+def parse(s):
+ return set([x.strip() for x in s.split() if x.strip()])
+
+
+def solve(board_envs, app_envs):
+ if not app_envs:
+ return board_envs
+
+ envs = set()
+
+ if '*' in app_envs:
+ envs.update(board_envs)
+ app_envs.discard('*')
+
+ for e in app_envs:
+ if e.startswith('-'):
+ envs.discard(e[1:])
+ elif e in board_envs:
+ envs.add(e)
+
+ return envs
+
+
+def main(name, board_envs, app_envs):
+ # Parse args
+ board_envs = parse(board_envs)
+ app_envs = parse(app_envs)
+
+ # Solve
+ envs = solve(board_envs, app_envs)
+
+ # Result
+ print ' '.join(envs)
+
+
+if __name__ == '__main__':
+ main(*sys.argv)