Show full library version in "Library Dependency Graph" including VCS information // Issue #1274

This commit is contained in:
Ivan Kravets
2018-01-18 14:49:01 +02:00
parent bc18941eb0
commit 2c79de971e
2 changed files with 19 additions and 1 deletions

View File

@ -11,10 +11,14 @@ PlatformIO 3.0
`PIO Unit Testing <http://docs.platformio.org/page/plus/unit-testing.html>`__ `PIO Unit Testing <http://docs.platformio.org/page/plus/unit-testing.html>`__
engine and a target device engine and a target device
(`issue #1273 <https://github.com/platformio/platformio-core/issues/1273>`_) (`issue #1273 <https://github.com/platformio/platformio-core/issues/1273>`_)
* Show full library version in "Library Dependency Graph" including VCS
information
(`issue #1274 <https://github.com/platformio/platformio-core/issues/1274>`_)
* Configure a custom firmware/program name in build directory (`example <http://docs.platformio.org/page/projectconf/advanced_scripting.html#custom-firmware-program-name>`__) * Configure a custom firmware/program name in build directory (`example <http://docs.platformio.org/page/projectconf/advanced_scripting.html#custom-firmware-program-name>`__)
* Renamed ``envs_dir`` option to ``build_dir`` * Renamed ``envs_dir`` option to ``build_dir``
in `Project Configuration File "platformio.ini" <http://docs.platformio.org/page/projectconf/section_platformio.html#build-dir>`__ in `Project Configuration File "platformio.ini" <http://docs.platformio.org/page/projectconf/section_platformio.html#build-dir>`__
* Refactored code without "arrow" dependency (resolve issue with "ImportError: No module named backports.functools_lru_cache") * Refactored code without "arrow" dependency (resolve issue with "ImportError:
No module named backports.functools_lru_cache")
* Improved support of PIO Unified Debugger for Eclipse Oxygen * Improved support of PIO Unified Debugger for Eclipse Oxygen
* Improved a work in off-line mode * Improved a work in off-line mode
* Fixed project generator for CLion and Qt Creator IDE * Fixed project generator for CLion and Qt Creator IDE

View File

@ -20,6 +20,7 @@ from __future__ import absolute_import
import hashlib import hashlib
import os import os
import sys import sys
from glob import glob
from os.path import (basename, commonprefix, dirname, isdir, isfile, join, from os.path import (basename, commonprefix, dirname, isdir, isfile, join,
realpath, sep) realpath, sep)
from platform import system from platform import system
@ -30,6 +31,7 @@ from SCons.Script import ARGUMENTS, COMMAND_LINE_TARGETS, DefaultEnvironment
from platformio import util from platformio import util
from platformio.builder.tools import platformio as piotool from platformio.builder.tools import platformio as piotool
from platformio.managers.lib import LibraryManager from platformio.managers.lib import LibraryManager
from platformio.managers.package import PackageManager
class LibBuilderFactory(object): class LibBuilderFactory(object):
@ -131,6 +133,13 @@ class LibBuilderBase(object):
def version(self): def version(self):
return self._manifest.get("version") return self._manifest.get("version")
@property
def vcs_info(self):
items = glob(join(self.path, ".*", PackageManager.SRC_MANIFEST_NAME))
if not items:
return None
return util.load_json(items[0])
@property @property
def dependencies(self): def dependencies(self):
return LibraryManager.normalize_dependencies( return LibraryManager.normalize_dependencies(
@ -791,10 +800,15 @@ def BuildProjectLibraries(env):
margin = "| " * (level) margin = "| " * (level)
for lb in root.depbuilders: for lb in root.depbuilders:
title = "<%s>" % lb.name title = "<%s>" % lb.name
vcs_info = lb.vcs_info
if lb.version: if lb.version:
title += " v%s" % lb.version title += " v%s" % lb.version
if vcs_info:
title += " #%s" % vcs_info.get("version")
sys.stdout.write("%s|-- %s" % (margin, title)) sys.stdout.write("%s|-- %s" % (margin, title))
if int(ARGUMENTS.get("PIOVERBOSE", 0)): if int(ARGUMENTS.get("PIOVERBOSE", 0)):
if vcs_info:
sys.stdout.write(" [%s]" % vcs_info.get("url"))
sys.stdout.write(" (") sys.stdout.write(" (")
sys.stdout.write(lb.path) sys.stdout.write(lb.path)
sys.stdout.write(")") sys.stdout.write(")")