import argparse
import os
import shutil
import sys
from utils import makedirs
def copytree(src: str, dst: str, symlinks: bool = False, ignore=None):
src = os.path.normpath(src)
for item in os.listdir(src):
if '.git' in item or '.repo' in item:
continue
src_path = os.path.join(src, item)
dst_path = os.path.join(dst, item)
if os.path.isdir(src_path):
try:
shutil.copytree(src_path, dst_path, symlinks)
except Exception as e:
print('Warning :{}\nIgnore invalid symlink!'.format(
str(e.args[0])))
else:
shutil.copy2(src_path, dst_path)
def main():
parser = argparse.ArgumentParser(
description='A common directory and file copy.')
parser.add_argument(
'--src_type',
help='src type to copy.')
parser.add_argument(
'--src',
help='List the sources to copy.',
required=True)
parser.add_argument(
'--dest_dir',
help='Path that the sources should be copied to.',
required=True)
args = parser.parse_args()
out_dir = args.dest_dir
if not os.path.exists(out_dir):
makedirs(out_dir)
if args.src_type == "file" or os.path.isfile(args.src):
shutil.copy(args.src, out_dir)
return 0
source_dir = args.src
if not os.path.exists(source_dir):
raise Exception(f'{source_dir} is not exist!')
copytree(source_dir, out_dir)
return 0
if __name__ == '__main__':
sys.exit(main())