3030UPDATE_INTERVAL = 60 * 60 * 24 * 3 # 3 days
3131
3232
33- def get_core_dir ():
33+ def get_core_dir (force_to_root = False ):
3434 if os .getenv ("PLATFORMIO_CORE_DIR" ):
3535 return os .getenv ("PLATFORMIO_CORE_DIR" )
3636
3737 core_dir = os .path .join (util .expanduser ("~" ), ".platformio" )
3838 if not util .IS_WINDOWS :
3939 return core_dir
4040
41- win_core_dir = os .path .splitdrive (core_dir )[0 ] + "\\ .platformio"
42- if os .path .isdir (win_core_dir ):
43- return win_core_dir
41+ win_root_dir = os .path .splitdrive (core_dir )[0 ] + "\\ .platformio"
42+ if os .path .isdir (win_root_dir ):
43+ return win_root_dir
4444 try :
45- if util .has_non_ascii_char (core_dir ):
46- os .makedirs (win_core_dir )
47- with open (os .path .join (win_core_dir , "file.tmp" ), "w" ) as fp :
45+ if util .has_non_ascii_char (core_dir ) or force_to_root :
46+ os .makedirs (win_root_dir )
47+ with open (os .path .join (win_root_dir , "file.tmp" ), "w" ) as fp :
4848 fp .write ("test" )
49- os .remove (os .path .join (win_core_dir , "file.tmp" ))
50- return win_core_dir
49+ os .remove (os .path .join (win_root_dir , "file.tmp" ))
50+ return win_root_dir
5151 except : # pylint:disable=bare-except
5252 pass
5353
@@ -63,6 +63,29 @@ def get_cache_dir(path=None):
6363
6464
6565def install_platformio_core (shutdown_piohome = True , develop = False , ignore_pythons = None ):
66+ try :
67+ return _install_platformio_core (
68+ shutdown_piohome = shutdown_piohome ,
69+ develop = develop ,
70+ ignore_pythons = ignore_pythons ,
71+ )
72+ except subprocess .CalledProcessError as exc :
73+ # Issue #221: Workaround for Windows OS when username contains a space
74+ # https://github.com/platformio/platformio-core-installer/issues/221
75+ if (
76+ util .IS_WINDOWS
77+ and " " in get_core_dir ()
78+ and " " not in get_core_dir (force_to_root = True )
79+ ):
80+ return _install_platformio_core (
81+ shutdown_piohome = shutdown_piohome ,
82+ develop = develop ,
83+ ignore_pythons = ignore_pythons ,
84+ )
85+ raise exc
86+
87+
88+ def _install_platformio_core (shutdown_piohome = True , develop = False , ignore_pythons = None ):
6689 # pylint: disable=bad-option-value, import-outside-toplevel, unused-import, import-error, unused-variable, cyclic-import
6790 from pioinstaller import penv
6891
0 commit comments