forked from platformio/platformio-core
Better decoding SCons arguments
This commit is contained in:
@@ -22,7 +22,6 @@ import click
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
from platformio import util
|
from platformio import util
|
||||||
from platformio.compat import PY2, get_filesystem_encoding
|
|
||||||
from platformio.exception import (FDSHASumMismatch, FDSizeMismatch,
|
from platformio.exception import (FDSHASumMismatch, FDSizeMismatch,
|
||||||
FDUnrecognizedStatusCode)
|
FDUnrecognizedStatusCode)
|
||||||
from platformio.proc import exec_command
|
from platformio.proc import exec_command
|
||||||
@@ -46,15 +45,11 @@ class FileDownloader(object):
|
|||||||
if disposition and "filename=" in disposition:
|
if disposition and "filename=" in disposition:
|
||||||
self._fname = disposition[disposition.index("filename=") +
|
self._fname = disposition[disposition.index("filename=") +
|
||||||
9:].replace('"', "").replace("'", "")
|
9:].replace('"', "").replace("'", "")
|
||||||
if PY2:
|
|
||||||
self._fname = self._fname.encode("utf8")
|
|
||||||
else:
|
else:
|
||||||
self._fname = [p for p in url.split("/") if p][-1]
|
self._fname = [p for p in url.split("/") if p][-1]
|
||||||
|
self._fname = str(self._fname)
|
||||||
self._destination = self._fname
|
self._destination = self._fname
|
||||||
if dest_dir:
|
if dest_dir:
|
||||||
if PY2:
|
|
||||||
dest_dir = dest_dir.decode(get_filesystem_encoding())
|
|
||||||
self.set_destination(join(dest_dir, self._fname))
|
self.set_destination(join(dest_dir, self._fname))
|
||||||
|
|
||||||
def set_destination(self, destination):
|
def set_destination(self, destination):
|
||||||
|
@@ -24,7 +24,8 @@ import click
|
|||||||
import semantic_version
|
import semantic_version
|
||||||
|
|
||||||
from platformio import __version__, app, exception, util
|
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.core import get_core_package_dir
|
||||||
from platformio.managers.package import BasePkgManager, PackageManager
|
from platformio.managers.package import BasePkgManager, PackageManager
|
||||||
from platformio.proc import (BuildAsyncPipe, copy_pythonpath_to_osenv,
|
from platformio.proc import (BuildAsyncPipe, copy_pythonpath_to_osenv,
|
||||||
@@ -361,14 +362,13 @@ class PlatformRunMixin(object):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def encode_scons_arg(value):
|
def encode_scons_arg(value):
|
||||||
if isinstance(value, string_types):
|
data = base64.urlsafe_b64encode(hashlib_encode_data(value))
|
||||||
value = value.encode(get_filesystem_encoding())
|
return data.decode() if is_bytes(data) else data
|
||||||
return base64.urlsafe_b64encode(value).decode()
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def decode_scons_arg(value):
|
def decode_scons_arg(data):
|
||||||
return base64.urlsafe_b64decode(value).decode(
|
value = base64.urlsafe_b64decode(data)
|
||||||
get_filesystem_encoding())
|
return value.decode() if is_bytes(value) else value
|
||||||
|
|
||||||
def run(self, variables, targets, silent, verbose):
|
def run(self, variables, targets, silent, verbose):
|
||||||
assert isinstance(variables, dict)
|
assert isinstance(variables, dict)
|
||||||
|
Reference in New Issue
Block a user