1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3# 4# Copyright 2014 Google Inc. All Rights Reserved. 5# 6# Licensed under the Apache License, Version 2.0 (the "License"); 7# you may not use this file except in compliance with the License. 8# You may obtain a copy of the License at 9# 10# http://www.apache.org/licenses/LICENSE-2.0 11# 12# Unless required by applicable law or agreed to in writing, software 13# distributed under the License is distributed on an "AS IS" BASIS, 14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15# See the License for the specific language governing permissions and 16# limitations under the License. 17 18"""Copy files from source to dest expanding symlinks along the way. 19""" 20 21from shutil import copytree 22 23import argparse 24import sys 25 26 27# Ignore these files and directories when copying over files into the snapshot. 28IGNORE = set(['.hg', 'httplib2', 'oauth2', 'simplejson', 'static']) 29 30# In addition to the above files also ignore these files and directories when 31# copying over samples into the snapshot. 32IGNORE_IN_SAMPLES = set(['googleapiclient', 'oauth2client', 'uritemplate']) 33 34parser = argparse.ArgumentParser(description=__doc__) 35 36parser.add_argument('--source', default='.', 37 help='Directory name to copy from.') 38 39parser.add_argument('--dest', default='snapshot', 40 help='Directory name to copy to.') 41 42 43def _ignore(path, names): 44 retval = set() 45 if path != '.': 46 retval = retval.union(IGNORE_IN_SAMPLES.intersection(names)) 47 retval = retval.union(IGNORE.intersection(names)) 48 return retval 49 50 51def main(): 52 copytree(FLAGS.source, FLAGS.dest, symlinks=True, 53 ignore=_ignore) 54 55 56if __name__ == '__main__': 57 FLAGS = parser.parse_args(sys.argv[1:]) 58 main() 59