普通文本  |  40行  |  1 KB

#!/usr/bin/python
# Copyright 2015 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.

import contextlib
import os
import shutil
import tempfile


@contextlib.contextmanager
def TempDeploymentDir(paths, use_symlinks=True):
  """Sets up and tears down a directory for deploying an app."""
  if use_symlinks:
    link_func = os.symlink
  else:
    link_func = _Copy

  try:
    deployment_dir = tempfile.mkdtemp(prefix='deploy-')
    _PopulateDeploymentDir(deployment_dir, paths, link_func)
    yield deployment_dir
  finally:
    shutil.rmtree(deployment_dir)


def _Copy(src, dst):
  if os.path.isdir(src):
    shutil.copytree(src, dst)
  else:
    shutil.copy2(src, dst)


def _PopulateDeploymentDir(deployment_dir, paths, link_func):
  """Fills the deployment directory using the link_func specified."""
  for path in paths:
    destination = os.path.join(deployment_dir, os.path.basename(path))
    link_func(path, destination)