| 20 | |
| 21 | |
| 22 | def tar(path, exclude=None, dockerfile=None, fileobj=None, gzip=False): |
| 23 | root = os.path.abspath(path) |
| 24 | exclude = exclude or [] |
| 25 | dockerfile = dockerfile or (None, None) |
| 26 | extra_files = [] |
| 27 | if dockerfile[1] is not None: |
| 28 | dockerignore_contents = '\n'.join( |
| 29 | (exclude or ['.dockerignore']) + [dockerfile[0]] |
| 30 | ) |
| 31 | extra_files = [ |
| 32 | ('.dockerignore', dockerignore_contents), |
| 33 | dockerfile, |
| 34 | ] |
| 35 | return create_archive( |
| 36 | files=sorted(exclude_paths(root, exclude, dockerfile=dockerfile[0])), |
| 37 | root=root, fileobj=fileobj, gzip=gzip, extra_files=extra_files |
| 38 | ) |
| 39 | |
| 40 | |
| 41 | def exclude_paths(root, patterns, dockerfile=None): |