aboutsummaryrefslogblamecommitdiffstats
path: root/build/scripts/collect_java_srcs.py
blob: f361f271d1da7ffaf2ff2df84a683fbb8ed75386 (plain) (tree)






















                                                        
                                                                                      




                                                      
                                                                                                  
















                                                                  
                                                                                           
import os
import sys
import contextlib
import tarfile
import zipfile


if __name__ == '__main__':
    build_root = sys.argv[1]
    root = os.path.normpath(sys.argv[2])
    dest = os.path.normpath(sys.argv[3])
    srcs = sys.argv[4:]

    for src in srcs:
        src = os.path.normpath(src)
        if src.endswith('.java') or src.endswith('.kt'):
            src_rel_path = os.path.relpath(src, root)

            if os.path.join(root, src_rel_path) == src:
                # Inside root
                dst = os.path.join(dest, src_rel_path)

            else:
                # Outside root
                print('External src file "{}" is outside of srcdir {}, ignore'.format(
                    os.path.relpath(src, build_root),
                    os.path.relpath(root, build_root),
                )
                continue

            if os.path.exists(dst):
                print >> sys.stderr, 'Duplicate external src file {}, choice is undefined'.format(
                    os.path.relpath(dst, root)
                )

            else:
                destdir = os.path.dirname(dst)
                if destdir and not os.path.exists(destdir):
                    os.makedirs(destdir)
                os.rename(src, dst)

        elif src.endswith('.jsr'):
            with contextlib.closing(tarfile.open(src, 'r')) as tf:
                tf.extractall(dst)

        elif src.endswith('-sources.jar'):
            with zipfile.ZipFile(src) as zf:
                zf.extractall(dst)

        else:
            print >> sys.stderr, 'Unrecognized file type', os.path.relpath(src, build_root)