Instead of looping over the dictionary, could we convert the target drive and see if it's in the dictionary?
I am thinking like remove the : from os.path.splitdrive(workspace_dir)[0].upper() string and see if that's in the dictionary? > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Nate > DeSimone > Sent: Monday, August 31, 2020 12:28 PM > To: devel@edk2.groups.io > Cc: Desimone, Ashley E <ashley.e.desim...@intel.com>; Pandya, Puja > <puja.pan...@intel.com>; Bret Barkelew <bret.barke...@microsoft.com>; > Agyeman, Prince <prince.agye...@intel.com>; Bjorge, Erik C > <erik.c.bjo...@intel.com> > Subject: [edk2-devel] [edk2-staging/EdkRepo] [PATCH V2 2/2] EdkRepo: Add > support for subst drives > > get_workspace_path() now converts a virtual drive path to a real path before > any git repo operations are done. > > Cc: Ashley E Desimone <ashley.e.desim...@intel.com> > Cc: Puja Pandya <puja.pan...@intel.com> > Cc: Bret Barkelew <bret.barke...@microsoft.com> > Cc: Prince Agyeman <prince.agye...@intel.com> > Cc: Erik Bjorge <erik.c.bjo...@intel.com> > Signed-off-by: Nate DeSimone <nathaniel.l.desim...@intel.com> > --- > edkrepo/commands/clone_command.py | 6 ++++++ > edkrepo/config/config_factory.py | 10 +++++++++- > 2 files changed, 15 insertions(+), 1 deletion(-) > > diff --git a/edkrepo/commands/clone_command.py > b/edkrepo/commands/clone_command.py > index f638090..be5ad86 100644 > --- a/edkrepo/commands/clone_command.py > +++ b/edkrepo/commands/clone_command.py > @@ -20,6 +20,7 @@ from edkrepo.common.edkrepo_exception import > EdkrepoInvalidParametersException, > from edkrepo.common.edkrepo_exception import > EdkrepoManifestNotFoundException from edkrepo.common.humble > import CLONE_INVALID_WORKSPACE, CLONE_INVALID_PROJECT_ARG, > CLONE_INVALID_COMBO_ARG from edkrepo.common.humble import > SPARSE_CHECKOUT, CLONE_INVALID_LOCAL_ROOTS > +from edkrepo.common.pathfix import get_subst_drive_dict > from edkrepo.common.workspace_maintenance.workspace_maintenance > import case_insensitive_single_match from > edkrepo.common.workspace_maintenance.manifest_repos_maintenance > import pull_all_manifest_repos, find_project_in_all_indices from > edkrepo.common.workspace_maintenance.manifest_repos_maintenance > import list_available_manifest_repos @@ -77,6 +78,11 @@ class > CloneCommand(EdkrepoCommand): > workspace_dir = os.getcwd() > else: > workspace_dir = os.path.abspath(workspace_dir) > + subst = get_subst_drive_dict() > + for drive in subst.keys(): > + if '{}:'.format(drive) == > os.path.splitdrive(workspace_dir)[0].upper(): > + workspace_dir = os.path.join(subst[drive], > os.path.splitdrive(workspace_dir)[1][1:]) > + workspace_dir = os.path.normpath(workspace_dir) > if os.path.isdir(workspace_dir) and os.listdir(workspace_dir): > raise > EdkrepoInvalidParametersException(CLONE_INVALID_WORKSPACE) > if not os.path.isdir(workspace_dir): > diff --git a/edkrepo/config/config_factory.py > b/edkrepo/config/config_factory.py > index a82a438..1cb6eb7 100644 > --- a/edkrepo/config/config_factory.py > +++ b/edkrepo/config/config_factory.py > @@ -11,13 +11,16 @@ import os > import sys > import configparser > import collections > -from ctypes import * > +if sys.platform == "win32": > + from ctypes import oledll, c_void_p, c_uint32, c_wchar_p > + from ctypes import create_unicode_buffer > > import edkrepo.config.humble.config_factory_humble as humble from > edkrepo.common.edkrepo_exception import > EdkrepoGlobalConfigNotFoundException, EdkrepoConfigFileInvalidException > from edkrepo.common.edkrepo_exception import > EdkrepoWorkspaceInvalidException, > EdkrepoGlobalDataDirectoryNotFoundException > from edkrepo.common.edkrepo_exception import > EdkrepoConfigFileReadOnlyException > from edkrepo.common.humble import > MIRROR_PRIMARY_REPOS_MISSING, MIRROR_DECODE_WARNING, > MAX_PATCH_SET_INVALID > +from edkrepo.common.pathfix import get_subst_drive_dict > from edkrepo_manifest_parser import edk_manifest from > edkrepo.common.pathfix import expanduser > > @@ -238,6 +241,11 @@ def get_workspace_path(): > while True: > if os.path.isdir(os.path.join(path, "repo")): > if os.path.isfile(os.path.join(os.path.join(path, "repo"), > "Manifest.xml")): > + if sys.platform == "win32": > + subst = get_subst_drive_dict() > + for drive in subst.keys(): > + if '{}:'.format(drive) == > os.path.splitdrive(path)[0].upper(): > + path = os.path.join(subst[drive], > + os.path.splitdrive(path)[1][1:]) > return path > if os.path.dirname(path) == path: > break > -- > 2.27.0.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#64923): https://edk2.groups.io/g/devel/message/64923 Mute This Topic: https://groups.io/mt/76541439/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-