Drop import, it's got madness with and SIGINT?
							parent
							
								
									bb45100168
								
							
						
					
					
						commit
						8acaa28df0
					
				| 
						 | 
				
			
			@ -17,6 +17,8 @@
 | 
			
		|||
"""
 | 
			
		||||
Broker configuration mgmt.
 | 
			
		||||
"""
 | 
			
		||||
import platform
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
from os.path import dirname
 | 
			
		||||
import shutil
 | 
			
		||||
| 
						 | 
				
			
			@ -24,13 +26,73 @@ from typing import Optional
 | 
			
		|||
 | 
			
		||||
from bidict import bidict
 | 
			
		||||
import toml
 | 
			
		||||
import click
 | 
			
		||||
 | 
			
		||||
from .log import get_logger
 | 
			
		||||
 | 
			
		||||
log = get_logger('broker-config')
 | 
			
		||||
 | 
			
		||||
_config_dir = _click_config_dir = click.get_app_dir('piker')
 | 
			
		||||
 | 
			
		||||
# taken from ``click`` since apparently they have some
 | 
			
		||||
# super weirdness with sigint and sudo..no clue
 | 
			
		||||
def get_app_dir(app_name, roaming=True, force_posix=False):
 | 
			
		||||
    r"""Returns the config folder for the application.  The default behavior
 | 
			
		||||
    is to return whatever is most appropriate for the operating system.
 | 
			
		||||
 | 
			
		||||
    To give you an idea, for an app called ``"Foo Bar"``, something like
 | 
			
		||||
    the following folders could be returned:
 | 
			
		||||
 | 
			
		||||
    Mac OS X:
 | 
			
		||||
      ``~/Library/Application Support/Foo Bar``
 | 
			
		||||
    Mac OS X (POSIX):
 | 
			
		||||
      ``~/.foo-bar``
 | 
			
		||||
    Unix:
 | 
			
		||||
      ``~/.config/foo-bar``
 | 
			
		||||
    Unix (POSIX):
 | 
			
		||||
      ``~/.foo-bar``
 | 
			
		||||
    Win XP (roaming):
 | 
			
		||||
      ``C:\Documents and Settings\<user>\Local Settings\Application Data\Foo Bar``
 | 
			
		||||
    Win XP (not roaming):
 | 
			
		||||
      ``C:\Documents and Settings\<user>\Application Data\Foo Bar``
 | 
			
		||||
    Win 7 (roaming):
 | 
			
		||||
      ``C:\Users\<user>\AppData\Roaming\Foo Bar``
 | 
			
		||||
    Win 7 (not roaming):
 | 
			
		||||
      ``C:\Users\<user>\AppData\Local\Foo Bar``
 | 
			
		||||
 | 
			
		||||
    .. versionadded:: 2.0
 | 
			
		||||
 | 
			
		||||
    :param app_name: the application name.  This should be properly capitalized
 | 
			
		||||
                     and can contain whitespace.
 | 
			
		||||
    :param roaming: controls if the folder should be roaming or not on Windows.
 | 
			
		||||
                    Has no affect otherwise.
 | 
			
		||||
    :param force_posix: if this is set to `True` then on any POSIX system the
 | 
			
		||||
                        folder will be stored in the home folder with a leading
 | 
			
		||||
                        dot instead of the XDG config home or darwin's
 | 
			
		||||
                        application support folder.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def _posixify(name):
 | 
			
		||||
        return "-".join(name.split()).lower()
 | 
			
		||||
 | 
			
		||||
    # if WIN:
 | 
			
		||||
    if platform.system() == 'Windows':
 | 
			
		||||
        key = "APPDATA" if roaming else "LOCALAPPDATA"
 | 
			
		||||
        folder = os.environ.get(key)
 | 
			
		||||
        if folder is None:
 | 
			
		||||
            folder = os.path.expanduser("~")
 | 
			
		||||
        return os.path.join(folder, app_name)
 | 
			
		||||
    if force_posix:
 | 
			
		||||
        return os.path.join(os.path.expanduser("~/.{}".format(_posixify(app_name))))
 | 
			
		||||
    if sys.platform == "darwin":
 | 
			
		||||
        return os.path.join(
 | 
			
		||||
            os.path.expanduser("~/Library/Application Support"), app_name
 | 
			
		||||
        )
 | 
			
		||||
    return os.path.join(
 | 
			
		||||
        os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")),
 | 
			
		||||
        _posixify(app_name),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_config_dir = _click_config_dir = get_app_dir('piker')
 | 
			
		||||
_parent_user = os.environ.get('SUDO_USER')
 | 
			
		||||
 | 
			
		||||
if _parent_user:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue