#!/usr/bin/env python # Copyright (c) 2012 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file.
"""Copies test data files or directories into a given output directory."""
from __future__ import print_function
import optparse import os import shutil import sys
class WrongNumberOfArgumentsException(Exception): pass
def EscapePath(path): """Returns a path with spaces escaped.""" return path.replace(" ", "\\ ")
def ListFilesForPath(path): """Returns a list of all the files under a given path."""
output = [] # Ignore revision control metadata directories. if (os.path.basename(path).startswith('.git') or
os.path.basename(path).startswith('.svn')): return output
# Files get returned without modification. ifnot os.path.isdir(path):
output.append(path) return output
# Directories get recursively expanded.
contents = os.listdir(path) for item in contents:
full_path = os.path.join(path, item)
output.extend(ListFilesForPath(full_path)) return output
def CalcInputs(inputs): """Computes the full list of input files for a set of command-line arguments. """ # |inputs| is a list of paths, which may be directories.
output = [] for input in inputs:
output.extend(ListFilesForPath(input)) return output
def CopyFiles(relative_filenames, output_basedir): """Copies files to the given output directory.""" for file in relative_filenames:
relative_dirname = os.path.dirname(file)
output_dir = os.path.join(output_basedir, relative_dirname)
output_filename = os.path.join(output_basedir, file)
# In cases where a directory has turned into a file or vice versa, delete it # before copying it below. if os.path.exists(output_dir) andnot os.path.isdir(output_dir):
os.remove(output_dir) if os.path.exists(output_filename) and os.path.isdir(output_filename):
shutil.rmtree(output_filename)
if len(arglist) == 0: raise WrongNumberOfArgumentsException(' required.')
files_to_copy = CalcInputs(arglist)
escaped_files = [EscapePath(x) for x in CalcInputs(arglist)] if options.list_inputs: return'\n'.join(escaped_files)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.