|
|
@ -1,11 +1,46 @@ |
|
|
|
|
|
import wrapt |
|
|
|
|
|
|
|
|
from ssh_config_utils.serializer import serialize_host, get_proper_name |
|
|
from ssh_config_utils.serializer import serialize_host, get_proper_name |
|
|
from ssh_config_utils.parser import CamelCase_to_snake, KEYWORDS_LOWER_TRANSLATE |
|
|
from ssh_config_utils.parser import CamelCase_to_snake, KEYWORDS_LOWER_TRANSLATE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HostAlias(wrapt.ObjectProxy): |
|
|
|
|
|
def __init__(self, name, host): |
|
|
|
|
|
super().__init__(host) |
|
|
|
|
|
self._self_name = name |
|
|
|
|
|
host.aliases.append(self) |
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def name(self): |
|
|
|
|
|
return self._self_name |
|
|
|
|
|
|
|
|
|
|
|
@name.setter |
|
|
|
|
|
def name(self, name): |
|
|
|
|
|
self._self_name = name |
|
|
|
|
|
|
|
|
|
|
|
@name.deleter |
|
|
|
|
|
def name(self): |
|
|
|
|
|
del self._self_name |
|
|
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
|
def target(self): |
|
|
|
|
|
return self.__wrapped__ |
|
|
|
|
|
|
|
|
|
|
|
@target.setter |
|
|
|
|
|
def target(self, target): |
|
|
|
|
|
try: |
|
|
|
|
|
self.aliases.remove(self) |
|
|
|
|
|
except ValueError: |
|
|
|
|
|
pass |
|
|
|
|
|
self.__wrapped__ = target |
|
|
|
|
|
self.aliases.append(self) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Host: |
|
|
class Host: |
|
|
__ignore__ = {"aliases", "name", "options", "parent"} |
|
|
__ignore__ = {"aliases", "name", "options", "parent"} |
|
|
|
|
|
|
|
|
def __init__(self, name: str, options): |
|
|
def __init__(self, name: str, options): |
|
|
|
|
|
self.aliases = [] |
|
|
self.name = name |
|
|
self.name = name |
|
|
self.options = options |
|
|
self.options = options |
|
|
self.parent = None |
|
|
self.parent = None |
|
|
|