"""Collection of utilities to work with Google Cloud Storage and gsutil."""

import os


def gsutil():
  """Returns the path to the gsutil binary."""
  # Search the normal install path for gsutil first. This should succeed
  # most of the time. (A notable exception being GCE instances, which
  # have gsutil on the PATH somewhere else.)
  gsutil_path = os.path.expanduser('~/gsutil/gsutil')
  if os.path.exists(gsutil_path):
    return gsutil_path

  # Otherwise, assume that gsutil is on the PATH so that this will find it.
  return 'gsutil'


def upload_directory_cmd(local_dir, gcs_dir):
  """Command to upload the contents of the local directory to the GCS bucket.

  Note that this assumes a gsutil install located at ~/gsutil.

  Args:
    local_dir: local directory to upload the contents of (e.g. path/to/foo)
    gcs_dir: directory on GCS to upload to (e.g. gs://my-bucket/foo)
  Returns:
    The command (as a list) to execute to upload a directory to GCS.
  """
  return [gsutil(), 'cp', '-r', local_dir, gcs_dir]
