diff --git a/platformio/commands/run.py b/platformio/commands/run.py index 8fdf485b..11a16325 100644 --- a/platformio/commands/run.py +++ b/platformio/commands/run.py @@ -45,7 +45,10 @@ def cli(ctx, environment, target, upload_port, # pylint: disable=R0913,R0914 # clean obsolete .pioenvs dir if not disable_auto_clean: - _clean_pioenvs_dir() + try: + _clean_pioenvs_dir(util.get_pioenvs_dir()) + except Exception: + raise exception.CleanPioenvsDirError(util.get_pioenvs_dir()) results = [] for section in config.sections(): @@ -224,8 +227,7 @@ def _autoinstall_libs(ctx, libids_list): ctx.invoke(cmd_lib_install, libid=not_intalled_libs) -def _clean_pioenvs_dir(): - pioenvs_dir = util.get_pioenvs_dir() +def _clean_pioenvs_dir(pioenvs_dir): structhash_file = join(pioenvs_dir, "structure.hash") proj_hash = calculate_project_hash() diff --git a/platformio/exception.py b/platformio/exception.py index 940d41d2..8195912e 100644 --- a/platformio/exception.py +++ b/platformio/exception.py @@ -33,14 +33,14 @@ class UnknownPlatform(PlatformioException): class PlatformNotInstalledYet(PlatformioException): - MESSAGE = ("The platform '%s' has not been installed yet. " - "Use `platformio platforms install` command") + MESSAGE = "The platform '%s' has not been installed yet. "\ + "Use `platformio platforms install` command" class UnknownCLICommand(PlatformioException): - MESSAGE = ("Unknown command '%s'. Please use `platformio --help`" - " to see all available commands") + MESSAGE = "Unknown command '%s'. Please use `platformio --help`"\ + " to see all available commands" class UnknownBoard(PlatformioException): @@ -75,14 +75,14 @@ class FDUnrecognizedStatusCode(PlatformioException): class FDSizeMismatch(PlatformioException): - MESSAGE = ("The size (%d bytes) of downloaded file '%s' " - "is not equal to remote size (%d bytes)") + MESSAGE = "The size (%d bytes) of downloaded file '%s' "\ + "is not equal to remote size (%d bytes)" class FDSHASumMismatch(PlatformioException): - MESSAGE = ("The 'sha1' sum '%s' of downloaded file '%s' " - "is not equal to remote '%s'") + MESSAGE = "The 'sha1' sum '%s' of downloaded file '%s' "\ + "is not equal to remote '%s'" class NotPlatformProject(PlatformioException): @@ -117,6 +117,12 @@ class UnknownEnvNames(PlatformioException): MESSAGE = "Unknown environment names '%s'. Valid names are '%s'" +class CleanPioenvsDirError(PlatformioException): + + MESSAGE = "Can not remove temporary directory `%s`. "\ + "Please remove it manually" + + class GetSerialPortsError(PlatformioException): MESSAGE = "No implementation for your platform ('%s') available" @@ -124,7 +130,7 @@ class GetSerialPortsError(PlatformioException): class GetLatestVersionError(PlatformioException): - MESSAGE = "Can't retrieve the latest PlatformIO version" + MESSAGE = "Can not retrieve the latest PlatformIO version" class APIRequestError(PlatformioException): @@ -173,36 +179,28 @@ class UpgraderFailed(PlatformioException): class CIBuildEnvsEmpty(PlatformioException): - MESSAGE = ( - "Can't find PlatformIO build environments.\nPlease specify `--board` " - "or path to `platformio.ini` with predefined environments using " - "`--project-conf` option" - ) + MESSAGE = "Can't find PlatformIO build environments.\n"\ + "Please specify `--board` or path to `platformio.ini` with "\ + "predefined environments using `--project-conf` option" class SConsNotInstalled(PlatformioException): - MESSAGE = ( - "The PlatformIO and `scons` aren't installed properly. " - "More details in FAQ/Troubleshooting section: " + MESSAGE = "The PlatformIO and `scons` aren't installed properly. "\ + "More details in FAQ/Troubleshooting section: "\ "http://docs.platformio.org/en/latest/faq.html" - ) class PlatformioUpgradeError(PlatformioException): - MESSAGE = ( - "%s \n\n" - "1. Please report this issue here: " - "https://github.com/platformio/platformio/issues \n" - "2. Try different installation/upgrading steps: " + MESSAGE = "%s \n\n"\ + "1. Please report this issue here: "\ + "https://github.com/platformio/platformio/issues \n"\ + "2. Try different installation/upgrading steps: "\ "http://docs.platformio.org/en/latest/installation.html" - ) class CygwinEnvDetected(PlatformioException): - MESSAGE = ( - "PlatformIO does not work within Cygwin environment. " + MESSAGE = "PlatformIO does not work within Cygwin environment. "\ "Use native Terminal instead." - )