From 5c0d833e8dcf684819f110ba5fcd9a587054da85 Mon Sep 17 00:00:00 2001 From: Michael Gummelt Date: Wed, 22 Apr 2015 13:38:30 -0700 Subject: [PATCH 1/3] ~/.dcos/subcommands --- dcos/api/subcommand.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/dcos/api/subcommand.py b/dcos/api/subcommand.py index e17c585..e4cac95 100644 --- a/dcos/api/subcommand.py +++ b/dcos/api/subcommand.py @@ -41,6 +41,10 @@ def command_executables(subcommand, dcos_path): BIN_DIRECTORY = 'Scripts' if util.is_windows_platform() else 'bin' +def _subcommand_dir(): + return os.path.expanduser(os.path.join("~", ".dcos", "subcommands")) + + def list_paths(dcos_path): """List the real path to executable dcos subcommand programs. @@ -59,9 +63,7 @@ def list_paths(dcos_path): os.access(os.path.join(binpath, filename), os.X_OK)) ] - subcommand_directory = os.path.join( - dcos_path, - constants.DCOS_SUBCOMMAND_SUBDIR) + subcommand_directory = _subcommand_dir() subcommands = [ os.path.join(subcommand_directory, package, BIN_DIRECTORY, filename) @@ -93,9 +95,7 @@ def distributions(dcos_path): :rtype: list of str """ - subcommand_directory = os.path.join( - dcos_path, - constants.DCOS_SUBCOMMAND_SUBDIR) + subcommand_directory = _subcommand_dir() if os.path.isdir(subcommand_directory): return os.listdir(subcommand_directory) @@ -176,12 +176,11 @@ def install(distribution_name, install_operation, dcos_path): :rtype: dcos.api.errors.Error """ - subcommand_directory = os.path.join( - dcos_path, - constants.DCOS_SUBCOMMAND_SUBDIR) + subcommand_directory = _subcommand_dir() + if not os.path.exists(subcommand_directory): logger.info('Creating directory: %r', subcommand_directory) - os.mkdir(subcommand_directory, 0o775) + os.makedirs(subcommand_directory, 0o775) package_directory = os.path.join(subcommand_directory, distribution_name) @@ -206,10 +205,7 @@ def uninstall(distribution_name, dcos_path): :type dcos_path: str """ - subcommand_directory = os.path.join( - dcos_path, - constants.DCOS_SUBCOMMAND_SUBDIR, - distribution_name) + subcommand_directory = os.path.join(_subcommand_dir(), distribution_name) if os.path.isdir(subcommand_directory): shutil.rmtree(subcommand_directory) From cda5f33bd41613e8d18830317cb2c2b5cc42fc51 Mon Sep 17 00:00:00 2001 From: Michael Gummelt Date: Wed, 22 Apr 2015 13:50:47 -0700 Subject: [PATCH 2/3] formatting --- dcos/api/constants.py | 3 +++ dcos/api/subcommand.py | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/dcos/api/constants.py b/dcos/api/constants.py index 5799040..8a72b7c 100644 --- a/dcos/api/constants.py +++ b/dcos/api/constants.py @@ -1,3 +1,6 @@ +DCOS_DIR = ".dcos" +"""DCOS data directory. Can store subcommands and the config file.""" + DCOS_SUBCOMMAND_SUBDIR = 'subcommands' """Name of the subdirectory that contains all of the subcommands. This is relative to the location of the executable.""" diff --git a/dcos/api/subcommand.py b/dcos/api/subcommand.py index e4cac95..aebc6b4 100644 --- a/dcos/api/subcommand.py +++ b/dcos/api/subcommand.py @@ -42,7 +42,9 @@ BIN_DIRECTORY = 'Scripts' if util.is_windows_platform() else 'bin' def _subcommand_dir(): - return os.path.expanduser(os.path.join("~", ".dcos", "subcommands")) + return os.path.expanduser(os.path.join("~", + constants.DCOS_DIR, + constants.DCOS_SUBCOMMAND_SUBDIR)) def list_paths(dcos_path): From 54b471782fa3b60b9f4ae1017fc915c5acee8b03 Mon Sep 17 00:00:00 2001 From: Michael Gummelt Date: Wed, 22 Apr 2015 13:55:05 -0700 Subject: [PATCH 3/3] pydoc --- dcos/api/subcommand.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dcos/api/subcommand.py b/dcos/api/subcommand.py index aebc6b4..eea7581 100644 --- a/dcos/api/subcommand.py +++ b/dcos/api/subcommand.py @@ -42,6 +42,12 @@ BIN_DIRECTORY = 'Scripts' if util.is_windows_platform() else 'bin' def _subcommand_dir(): + """Returns path to the subcommand directory. This directory contains + a virtualenv for each installed subcommand. + + :returns: path to the subcommand directory + :rtype: str + """ return os.path.expanduser(os.path.join("~", constants.DCOS_DIR, constants.DCOS_SUBCOMMAND_SUBDIR))