# 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.

import errno
import os

"""Creates a directory and its parents (i.e. `mkdir -p`).

If the directory already exists, does nothing."""
def mkdir_p(path):
  try:
    os.makedirs(path)
  except OSError as exc:
    if exc.errno == errno.EEXIST and os.path.isdir(path):
      pass
    else:
      raise


"""Creates or ovewrites a symlink from `link` to `target`."""
def symlink(target, link):
  mkdir_p(os.path.dirname(link))
  tmp_link = link + '.tmp'
  try:
    os.remove(tmp_link)
  except OSError:
    pass
  os.symlink(target, tmp_link)
  os.rename(tmp_link, link)