Better decoding SCons arguments

This commit is contained in:
Ivan Kravets
2019-06-03 13:57:58 +03:00
parent e269c91d26
commit 37653d8446
2 changed files with 8 additions and 13 deletions

View File

@@ -22,7 +22,6 @@ import click
import requests
from platformio import util
from platformio.compat import PY2, get_filesystem_encoding
from platformio.exception import (FDSHASumMismatch, FDSizeMismatch,
FDUnrecognizedStatusCode)
from platformio.proc import exec_command
@@ -46,15 +45,11 @@ class FileDownloader(object):
if disposition and "filename=" in disposition:
self._fname = disposition[disposition.index("filename=") +
9:].replace('"', "").replace("'", "")
if PY2:
self._fname = self._fname.encode("utf8")
else:
self._fname = [p for p in url.split("/") if p][-1]
self._fname = str(self._fname)
self._destination = self._fname
if dest_dir:
if PY2:
dest_dir = dest_dir.decode(get_filesystem_encoding())
self.set_destination(join(dest_dir, self._fname))
def set_destination(self, destination):

View File

@@ -24,7 +24,8 @@ import click
import semantic_version
from platformio import __version__, app, exception, util
from platformio.compat import get_filesystem_encoding, string_types
from platformio.compat import (get_filesystem_encoding, hashlib_encode_data,
is_bytes)
from platformio.managers.core import get_core_package_dir
from platformio.managers.package import BasePkgManager, PackageManager
from platformio.proc import (BuildAsyncPipe, copy_pythonpath_to_osenv,
@@ -361,14 +362,13 @@ class PlatformRunMixin(object):
@staticmethod
def encode_scons_arg(value):
if isinstance(value, string_types):
value = value.encode(get_filesystem_encoding())
return base64.urlsafe_b64encode(value).decode()
data = base64.urlsafe_b64encode(hashlib_encode_data(value))
return data.decode() if is_bytes(data) else data
@staticmethod
def decode_scons_arg(value):
return base64.urlsafe_b64decode(value).decode(
get_filesystem_encoding())
def decode_scons_arg(data):
value = base64.urlsafe_b64decode(data)
return value.decode() if is_bytes(value) else value
def run(self, variables, targets, silent, verbose):
assert isinstance(variables, dict)