# -*- coding: utf-8 -*-
# Copyright 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Wrapper module for dealing with setting the process title (seen in `ps`)."""

from __future__ import print_function

import os

import __main__ as main

# Import the relevant funcs into our namespace for callers.
try:
  # pylint: disable=unused-import, no-name-in-module
  from setproctitle import getproctitle, setproctitle
except ImportError:
  # Module not available -> can't do anything.
  getproctitle = lambda: None
  setproctitle = lambda _x: None


# Used with the settitle helper below.
_SCRIPT_NAME = os.path.basename(getattr(main, '__file__', 'chromite'))


# Used to distinguish between different runs.
_TITLE_PID = os.getpid()


def settitle(*args):
  """Set the process title to something useful to make `ps` output easy."""
  base = ('%s/%s' % (_SCRIPT_NAME, _TITLE_PID),)
  setproctitle(': '.join(base + args))
