blob: 1319735968909ab6bcb62341e1cf5331988e826d [file] [log] [blame]
#!/usr/bin/env python3
#
# 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.
"""Copy a file.
This module works much like the cp posix command - it takes 2 arguments:
(src, dst) and copies the file with path |src| to |dst|.
"""
import os
import shutil
import sys
def main(src, dst):
# Use copy instead of copyfile to ensure the executable bit is copied.
dstpath = os.path.normpath(dst)
try:
shutil.copy(src, dstpath)
except shutil.SameFileError:
if not (os.path.islink(dstpath) or os.stat(dstpath).st_nlink > 1):
raise
# Copy will fail if the destination is the link to the source.
# If that's the case, then delete the destination link first,
# then repeat the copy.
os.remove(dstpath)
shutil.copy(src, dstpath)
return 0
if __name__ == '__main__':
sys.exit(main(sys.argv[1], sys.argv[2]))