This commit is contained in:
Ivan Kravets
2018-06-02 16:14:58 +03:00
parent 20c1ce40d3
commit 2fb8128791
11 changed files with 66 additions and 68 deletions

View File

@ -279,9 +279,8 @@ class LibBuilderBase(object):
if (key in item and if (key in item and
not util.items_in_list(self.env[env_key], item[key])): not util.items_in_list(self.env[env_key], item[key])):
if self.verbose: if self.verbose:
sys.stderr.write( sys.stderr.write("Skip %s incompatible dependency %s\n"
"Skip %s incompatible dependency %s\n" % (key[:-1], % (key[:-1], item))
item))
skip = True skip = True
if skip: if skip:
continue continue
@ -394,9 +393,9 @@ class LibBuilderBase(object):
if self != lb: if self != lb:
if _already_depends(lb): if _already_depends(lb):
if self.verbose: if self.verbose:
sys.stderr.write("Warning! Circular dependencies detected " sys.stderr.write(
"between `%s` and `%s`\n" % (self.path, "Warning! Circular dependencies detected "
lb.path)) "between `%s` and `%s`\n" % (self.path, lb.path))
self._circular_deps.append(lb) self._circular_deps.append(lb)
elif lb not in self._depbuilders: elif lb not in self._depbuilders:
self._depbuilders.append(lb) self._depbuilders.append(lb)

View File

@ -30,7 +30,8 @@ from platformio.managers.core import get_core_package_dir
class InoToCPPConverter(object): class InoToCPPConverter(object):
PROTOTYPE_RE = re.compile(r"""^( PROTOTYPE_RE = re.compile(
r"""^(
(?:template\<.*\>\s*)? # template (?:template\<.*\>\s*)? # template
([a-z_\d]+\*?\s+){1,2} # return type ([a-z_\d]+\*?\s+){1,2} # return type
([a-z_\d]+\s*) # name of prototype ([a-z_\d]+\s*) # name of prototype
@ -89,8 +90,8 @@ class InoToCPPConverter(object):
self.env.Execute( self.env.Execute(
self.env.VerboseAction( self.env.VerboseAction(
'$CXX -o "{0}" -x c++ -fpreprocessed -dD -E "{1}"'.format( '$CXX -o "{0}" -x c++ -fpreprocessed -dD -E "{1}"'.format(
out_file, out_file, tmp_path),
tmp_path), "Converting " + basename(out_file[:-4]))) "Converting " + basename(out_file[:-4])))
atexit.register(_delete_file, tmp_path) atexit.register(_delete_file, tmp_path)
return isfile(out_file) return isfile(out_file)
@ -163,18 +164,17 @@ class InoToCPPConverter(object):
prototype_names = set([m.group(3).strip() for m in prototypes]) prototype_names = set([m.group(3).strip() for m in prototypes])
split_pos = prototypes[0].start() split_pos = prototypes[0].start()
match_ptrs = re.search(self.PROTOPTRS_TPLRE % match_ptrs = re.search(
("|".join(prototype_names)), self.PROTOPTRS_TPLRE % ("|".join(prototype_names)),
contents[:split_pos], re.M) contents[:split_pos], re.M)
if match_ptrs: if match_ptrs:
split_pos = contents.rfind("\n", 0, match_ptrs.start()) + 1 split_pos = contents.rfind("\n", 0, match_ptrs.start()) + 1
result = [] result = []
result.append(contents[:split_pos].strip()) result.append(contents[:split_pos].strip())
result.append("%s;" % ";\n".join([m.group(1) for m in prototypes])) result.append("%s;" % ";\n".join([m.group(1) for m in prototypes]))
result.append('#line %d "%s"' % result.append('#line %d "%s"' % (self._get_total_lines(
(self._get_total_lines(contents[:split_pos]), contents[:split_pos]), self._main_ino.replace("\\", "/")))
self._main_ino.replace("\\", "/")))
result.append(contents[split_pos:].strip()) result.append(contents[split_pos:].strip())
return "\n".join(result) return "\n".join(result)

View File

@ -439,8 +439,8 @@ def lib_stats(json_output):
printitem_tpl.format( printitem_tpl.format(
name=click.style(name, fg="cyan"), name=click.style(name, fg="cyan"),
url=click.style( url=click.style(
"https://platformio.org/lib/search?query=" + "https://platformio.org/lib/search?query=" + quote(
quote("keyword:%s" % name), "keyword:%s" % name),
fg="blue"))) fg="blue")))
for key in ("updated", "added"): for key in ("updated", "added"):

View File

@ -273,8 +273,8 @@ def platform_show(platform, json_output): # pylint: disable=too-many-branches
if item['type']: if item['type']:
click.echo("Type: %s" % item['type']) click.echo("Type: %s" % item['type'])
click.echo("Requirements: %s" % item['requirements']) click.echo("Requirements: %s" % item['requirements'])
click.echo("Installed: %s" % click.echo("Installed: %s" % ("Yes" if item.get("version") else
("Yes" if item.get("version") else "No (optional)")) "No (optional)"))
if "version" in item: if "version" in item:
click.echo("Version: %s" % item['version']) click.echo("Version: %s" % item['version'])
if "originalVersion" in item: if "originalVersion" in item:

View File

@ -296,10 +296,10 @@ class EnvironmentProcessor(object):
if d.strip() if d.strip()
], self.verbose) ], self.verbose)
if "lib_deps" in self.options: if "lib_deps" in self.options:
_autoinstall_libdeps(self.cmd_ctx, _autoinstall_libdeps(
util.parse_conf_multi_values( self.cmd_ctx,
self.options['lib_deps']), util.parse_conf_multi_values(self.options['lib_deps']),
self.verbose) self.verbose)
try: try:
p = PlatformFactory.newPlatform(self.options['platform']) p = PlatformFactory.newPlatform(self.options['platform'])
@ -385,10 +385,10 @@ def print_summary(results, start_time):
err=status is False) err=status is False)
print_header( print_header(
"[%s] Took %.2f seconds" % "[%s] Took %.2f seconds" % (
((click.style("SUCCESS", fg="green", bold=True) (click.style("SUCCESS", fg="green", bold=True)
if successed else click.style("ERROR", fg="red", bold=True)), if successed else click.style("ERROR", fg="red", bold=True)),
time() - start_time), time() - start_time),
is_error=not successed) is_error=not successed)

View File

@ -32,8 +32,8 @@ def settings_get(name):
click.echo( click.echo(
list_tpl.format( list_tpl.format(
name=click.style("Name", fg="cyan"), name=click.style("Name", fg="cyan"),
value=(click.style("Value", fg="green") + value=(click.style("Value", fg="green") + click.style(
click.style(" [Default]", fg="yellow")), " [Default]", fg="yellow")),
description="Description")) description="Description"))
click.echo("-" * terminal_width) click.echo("-" * terminal_width)

View File

@ -43,9 +43,8 @@ class FileDownloader(object):
disposition = self._request.headers.get("content-disposition") disposition = self._request.headers.get("content-disposition")
if disposition and "filename=" in disposition: if disposition and "filename=" in disposition:
self._fname = disposition[ self._fname = disposition[disposition.index("filename=") +
disposition.index("filename=") + 9:].replace('"', "").replace( 9:].replace('"', "").replace("'", "")
"'", "")
self._fname = self._fname.encode("utf8") 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]

View File

@ -208,8 +208,8 @@ def after_upgrade(ctx):
# PlatformIO banner # PlatformIO banner
click.echo("*" * terminal_width) click.echo("*" * terminal_width)
click.echo("If you like %s, please:" % click.echo(
(click.style("PlatformIO", fg="cyan"))) "If you like %s, please:" % (click.style("PlatformIO", fg="cyan")))
click.echo("- %s us on Twitter to stay up-to-date " click.echo("- %s us on Twitter to stay up-to-date "
"on the latest project news > %s" % "on the latest project news > %s" %
(click.style("follow", fg="cyan"), (click.style("follow", fg="cyan"),
@ -224,9 +224,9 @@ def after_upgrade(ctx):
(click.style("try", fg="cyan"), (click.style("try", fg="cyan"),
click.style("https://platformio.org/platformio-ide", fg="cyan"))) click.style("https://platformio.org/platformio-ide", fg="cyan")))
if not util.is_ci(): if not util.is_ci():
click.echo("- %s us with PlatformIO Plus > %s" % click.echo("- %s us with PlatformIO Plus > %s" % (click.style(
(click.style("support", fg="cyan"), "support", fg="cyan"), click.style(
click.style("https://pioplus.com", fg="cyan"))) "https://pioplus.com", fg="cyan")))
click.echo("*" * terminal_width) click.echo("*" * terminal_width)
click.echo("") click.echo("")
@ -296,8 +296,8 @@ def check_internal_updates(ctx, what):
if manifest['name'] in outdated_items: if manifest['name'] in outdated_items:
continue continue
conds = [ conds = [
pm.outdated(manifest['__pkg_dir']), pm.outdated(manifest['__pkg_dir']), what == "platforms"
what == "platforms" and PlatformFactory.newPlatform( and PlatformFactory.newPlatform(
manifest['__pkg_dir']).are_outdated_packages() manifest['__pkg_dir']).are_outdated_packages()
] ]
if any(conds): if any(conds):
@ -318,8 +318,8 @@ def check_internal_updates(ctx, what):
if not app.get_setting("auto_update_" + what): if not app.get_setting("auto_update_" + what):
click.secho("Please update them via ", fg="yellow", nl=False) click.secho("Please update them via ", fg="yellow", nl=False)
click.secho( click.secho(
"`platformio %s update`" % "`platformio %s update`" % ("lib --global" if what == "libraries"
("lib --global" if what == "libraries" else "platform"), else "platform"),
fg="cyan", fg="cyan",
nl=False) nl=False)
click.secho(" command.\n", fg="yellow") click.secho(" command.\n", fg="yellow")

View File

@ -208,9 +208,9 @@ class LibraryManager(BasePkgManager):
cache_valid="30d") cache_valid="30d")
assert dl_data assert dl_data
return self._install_from_url(name, dl_data['url'].replace( return self._install_from_url(
"http://", "https://") if app.get_setting("enable_ssl") else name, dl_data['url'].replace("http://", "https://")
dl_data['url'], requirements) if app.get_setting("enable_ssl") else dl_data['url'], requirements)
def search_lib_id( # pylint: disable=too-many-branches def search_lib_id( # pylint: disable=too-many-branches
self, self,
@ -237,9 +237,9 @@ class LibraryManager(BasePkgManager):
if not isinstance(values, list): if not isinstance(values, list):
values = [v.strip() for v in values.split(",") if v] values = [v.strip() for v in values.split(",") if v]
for value in values: for value in values:
query.append('%s:"%s"' % (key[:-1] query.append(
if key.endswith("s") else key, '%s:"%s"' % (key[:-1]
value)) if key.endswith("s") else key, value))
lib_info = None lib_info = None
result = util.get_api_result( result = util.get_api_result(
@ -290,9 +290,9 @@ class LibraryManager(BasePkgManager):
def _get_lib_id_from_installed(self, filters): def _get_lib_id_from_installed(self, filters):
if filters['name'].startswith("id="): if filters['name'].startswith("id="):
return int(filters['name'][3:]) return int(filters['name'][3:])
package_dir = self.get_package_dir(filters['name'], package_dir = self.get_package_dir(
filters.get("requirements", filters['name'], filters.get("requirements",
filters.get("version"))) filters.get("version")))
if not package_dir: if not package_dir:
return None return None
manifest = self.load_manifest(package_dir) manifest = self.load_manifest(package_dir)

View File

@ -500,8 +500,8 @@ class PkgInstallerMixin(object):
cur_manifest['version']) cur_manifest['version'])
if "__src_url" in cur_manifest: if "__src_url" in cur_manifest:
target_dirname = "%s@src-%s" % ( target_dirname = "%s@src-%s" % (
pkg_dirname, pkg_dirname, hashlib.md5(
hashlib.md5(cur_manifest['__src_url']).hexdigest()) cur_manifest['__src_url']).hexdigest())
shutil.move(pkg_dir, join(self.package_dir, target_dirname)) shutil.move(pkg_dir, join(self.package_dir, target_dirname))
# fix to a version # fix to a version
elif action == 2: elif action == 2:
@ -509,8 +509,8 @@ class PkgInstallerMixin(object):
tmp_manifest['version']) tmp_manifest['version'])
if "__src_url" in tmp_manifest: if "__src_url" in tmp_manifest:
target_dirname = "%s@src-%s" % ( target_dirname = "%s@src-%s" % (
pkg_dirname, pkg_dirname, hashlib.md5(
hashlib.md5(tmp_manifest['__src_url']).hexdigest()) tmp_manifest['__src_url']).hexdigest())
pkg_dir = join(self.package_dir, target_dirname) pkg_dir = join(self.package_dir, target_dirname)
# remove previous/not-satisfied package # remove previous/not-satisfied package
@ -722,13 +722,13 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
pkg_dir = self.get_package_dir(name, requirements, url) pkg_dir = self.get_package_dir(name, requirements, url)
if not pkg_dir: if not pkg_dir:
raise exception.UnknownPackage("%s @ %s" % (package, raise exception.UnknownPackage(
requirements or "*")) "%s @ %s" % (package, requirements or "*"))
manifest = self.load_manifest(pkg_dir) manifest = self.load_manifest(pkg_dir)
click.echo( click.echo(
"Uninstalling %s @ %s: \t" % "Uninstalling %s @ %s: \t" % (click.style(
(click.style(manifest['name'], fg="cyan"), manifest['version']), manifest['name'], fg="cyan"), manifest['version']),
nl=False) nl=False)
if islink(pkg_dir): if islink(pkg_dir):
@ -740,9 +740,9 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
# unfix package with the same name # unfix package with the same name
pkg_dir = self.get_package_dir(manifest['name']) pkg_dir = self.get_package_dir(manifest['name'])
if pkg_dir and "@" in pkg_dir: if pkg_dir and "@" in pkg_dir:
shutil.move(pkg_dir, shutil.move(
join(self.package_dir, pkg_dir,
self.get_install_dirname(manifest))) join(self.package_dir, self.get_install_dirname(manifest)))
self.cache_reset() self.cache_reset()
click.echo("[%s]" % click.style("OK", fg="green")) click.echo("[%s]" % click.style("OK", fg="green"))
@ -761,8 +761,8 @@ class BasePkgManager(PkgRepoMixin, PkgInstallerMixin):
pkg_dir = self.get_package_dir(*self.parse_pkg_uri(package)) pkg_dir = self.get_package_dir(*self.parse_pkg_uri(package))
if not pkg_dir: if not pkg_dir:
raise exception.UnknownPackage("%s @ %s" % (package, raise exception.UnknownPackage(
requirements or "*")) "%s @ %s" % (package, requirements or "*"))
manifest = self.load_manifest(pkg_dir) manifest = self.load_manifest(pkg_dir)
name = manifest['name'] name = manifest['name']

View File

@ -39,9 +39,9 @@ class PlatformManager(BasePkgManager):
"{0}://dl.platformio.org/platforms/manifest.json".format( "{0}://dl.platformio.org/platforms/manifest.json".format(
"https" if app.get_setting("enable_ssl") else "http") "https" if app.get_setting("enable_ssl") else "http")
] ]
BasePkgManager.__init__(self, package_dir BasePkgManager.__init__(
or join(util.get_home_dir(), "platforms"), self, package_dir or join(util.get_home_dir(), "platforms"),
repositories) repositories)
@property @property
def manifest_names(self): def manifest_names(self):
@ -331,8 +331,8 @@ class PlatformPackagesMixin(object):
def get_package_dir(self, name): def get_package_dir(self, name):
version = self.packages[name].get("version", "") version = self.packages[name].get("version", "")
if ":" in version: if ":" in version:
return self.pm.get_package_dir(*self.pm.parse_pkg_uri( return self.pm.get_package_dir(
"%s=%s" % (name, version))) *self.pm.parse_pkg_uri("%s=%s" % (name, version)))
return self.pm.get_package_dir(name, version) return self.pm.get_package_dir(name, version)
def get_package_version(self, name): def get_package_version(self, name):