| 
634
 | 
     1 #!/usr/bin/env python
 | 
| 
 | 
     2 # -*- coding: utf-8 -*-
 | 
| 
 | 
     3 
 | 
| 
 | 
     4 """
 | 
| 
 | 
     5 parse environment variables
 | 
| 
 | 
     6 """
 | 
| 
 | 
     7 
 | 
| 
 | 
     8 import argparse
 | 
| 
 | 
     9 import os
 | 
| 
 | 
    10 import subprocess
 | 
| 
 | 
    11 import sys
 | 
| 
 | 
    12 
 | 
| 
 | 
    13 def parse_env(output):
 | 
| 
 | 
    14     return dict([line.split('=',1) for line in output.splitlines()])
 | 
| 
 | 
    15 
 | 
| 
 | 
    16 def read_env(script):
 | 
| 
 | 
    17     """read environment following source script"""
 | 
| 
 | 
    18     command = 'bash -c "(. {} &> /dev/null) && /usr/bin/env"'.format(script)
 | 
| 
 | 
    19     command = "(. {} &> /dev/null) && /usr/bin/env".format(script)
 | 
| 
 | 
    20     output = subprocess.check_output(command, shell=True, env={})
 | 
| 
 | 
    21     return parse_env(output)
 | 
| 
 | 
    22 
 | 
| 
 | 
    23 def diff_env(script):
 | 
| 
 | 
    24     before = parse_env(subprocess.check_output('/usr/bin/env', shell=True))
 | 
| 
 | 
    25     after = read_env(script)
 | 
| 
 | 
    26 
 | 
| 
 | 
    27 
 | 
| 
 | 
    28 if __name__ == '__main__':
 | 
| 
 | 
    29     """test"""
 | 
| 
 | 
    30 
 | 
| 
 | 
    31     import tempfile
 | 
| 
 | 
    32     from pprint import pprint
 | 
| 
 | 
    33 
 | 
| 
 | 
    34     example = """export FOO=bar
 | 
| 
 | 
    35 export FLEEM=foobar"""
 | 
| 
 | 
    36 
 | 
| 
 | 
    37 
 | 
| 
 | 
    38     fd, name = tempfile.mkstemp()
 | 
| 
 | 
    39     os.write(fd, example)
 | 
| 
 | 
    40     os.close(fd)
 | 
| 
 | 
    41     print (open(name).read())
 | 
| 
 | 
    42 
 | 
| 
 | 
    43     pprint(name)
 | 
| 
 | 
    44     pprint(read_env(name))
 |