def lib_update(): lm = LibraryManager(get_lib_dir()) lib_ids = [str(item['id']) for item in lm.get_installed().values()] if not lib_ids: return versions = get_api_result("/lib/version/" + str(",".join(lib_ids))) for id_ in lib_ids: info = lm.get_info(int(id_)) click.echo("Updating [ %s ] %s library:" % ( click.style(id_, fg="yellow"), click.style(info['name'], fg="cyan"))) current_version = info['version'] latest_version = versions[id_] if latest_version is None: click.secho("Unknown library", fg="red") continue click.echo("Versions: Current=%s, Latest=%s \t " % ( current_version, latest_version), nl=False) if current_version == latest_version: click.echo("[%s]" % (click.style("Up-to-date", fg="green"))) continue else: click.echo("[%s]" % (click.style("Out-of-date", fg="red"))) lib_uninstall([int(id_)]) lib_install([int(id_)])
def lib_show(libid): lm = LibraryManager(get_lib_dir()) info = lm.get_info(libid) click.secho(info['name'], fg="cyan") click.echo("-" * len(info['name'])) _authors = [] for author in info['authors']: _data = [] for key in ("name", "email", "url", "maintainer"): if not author[key]: continue if key == "email": _data.append("<%s>" % author[key]) elif key == "maintainer": _data.append("(maintainer)") else: _data.append(author[key]) _authors.append(" ".join(_data)) click.echo("Authors: %s" % ", ".join(_authors)) click.echo("Keywords: %s" % ", ".join(info['keywords'])) if "frameworks" in info: click.echo("Frameworks: %s" % ", ".join(info['frameworks'])) if "platforms" in info: click.echo("Platforms: %s" % ", ".join(info['platforms'])) click.echo("Version: %s" % info['version']) click.echo() click.echo(info['description']) click.echo()
def lib_update(ctx): lm = LibraryManager(get_lib_dir()) for id_, latest_version in (lm.get_latest_versions() or {}).items(): info = lm.get_info(int(id_)) click.echo("Updating [ %s ] %s library:" % ( click.style(id_, fg="yellow"), click.style(info['name'], fg="cyan"))) current_version = info['version'] if latest_version is None: click.secho("Unknown library", fg="red") continue click.echo("Versions: Current=%s, Latest=%s \t " % ( current_version, latest_version), nl=False) if current_version == latest_version: click.echo("[%s]" % (click.style("Up-to-date", fg="green"))) continue else: click.echo("[%s]" % (click.style("Out-of-date", fg="red"))) ctx.invoke(lib_uninstall, libid=[int(id_)]) ctx.invoke(lib_install, libid=[int(id_)])
def lib_update(): lm = LibraryManager(get_lib_dir()) lib_ids = [str(item['id']) for item in lm.get_installed().values()] if not lib_ids: return versions = get_api_result("/lib/version/" + str(",".join(lib_ids))) for id_ in lib_ids: info = lm.get_info(int(id_)) click.echo("Updating [ %s ] %s library:" % (click.style( id_, fg="yellow"), click.style(info['name'], fg="cyan"))) current_version = info['version'] latest_version = versions[id_] if latest_version is None: click.secho("Unknown library", fg="red") continue click.echo("Versions: Current=%s, Latest=%s \t " % (current_version, latest_version), nl=False) if current_version == latest_version: click.echo("[%s]" % (click.style("Up-to-date", fg="green"))) continue else: click.echo("[%s]" % (click.style("Out-of-date", fg="red"))) lib_uninstall([int(id_)]) lib_install([int(id_)])
def lib_uninstall(ids): lm = LibraryManager(get_lib_dir()) for id_ in ids: info = lm.get_info(id_) if lm.uninstall(id_): click.secho("The library #%s '%s' has been successfully " "uninstalled!" % (str(id_), info['name']), fg="green")
def lib_install(ctx, libid, version): lm = LibraryManager(get_lib_dir()) for id_ in libid: click.echo( "Installing library [ %s ]:" % click.style(str(id_), fg="green")) try: if not lm.install(id_, version): continue info = lm.get_info(id_) click.secho( "The library #%s '%s' has been successfully installed!" % (str(id_), info['name']), fg="green") if "dependencies" in info: click.secho("Installing dependencies:", fg="yellow") _dependencies = info['dependencies'] if not isinstance(_dependencies, list): _dependencies = [_dependencies] for item in _dependencies: try: lib_install_dependency(ctx, item) except AssertionError: raise exception.LibInstallDependencyError(str(item)) except exception.LibAlreadyInstalledError: click.secho("Already installed", fg="yellow")
def lib_uninstall(libid): lm = LibraryManager(get_lib_dir()) for id_ in libid: info = lm.get_info(id_) if lm.uninstall(id_): click.secho("The library #%s '%s' has been successfully " "uninstalled!" % (str(id_), info['name']), fg="green")
def validate_libfolder(): libs_path = util.get_lib_dir() installed_libs = listdir(libs_path) for lib in installed_libs: assert isdir(join(libs_path, lib)) assert isfile(join(libs_path, lib, ".library.json")) and isfile( join(libs_path, lib, "library.json"))
def lib_install(ids, version=None): lm = LibraryManager(get_lib_dir()) for id_ in ids: click.echo( "Installing library [ %s ]:" % click.style(str(id_), fg="green")) try: if not lm.install(id_, version): continue info = lm.get_info(id_) click.secho( "The library #%s '%s' has been successfully installed!" % (str(id_), info['name']), fg="green") if "dependencies" in info: click.secho("Installing dependencies:", fg="yellow") _dependencies = info['dependencies'] if not isinstance(_dependencies, list): _dependencies = [_dependencies] for item in _dependencies: try: lib_install_dependency(item) except AssertionError: raise LibInstallDependencyError(str(item)) except LibAlreadyInstalledError: click.secho("Already installed", fg="yellow")
def lib_list(): lm = LibraryManager(get_lib_dir()) items = lm.get_installed().values() if not items: return echo_liblist_header() for item in items: item['authornames'] = [i['name'] for i in item['authors']] echo_liblist_item(item)
def lib_list(json_output): lm = LibraryManager(get_lib_dir()) items = lm.get_installed().values() if json_output: click.echo(json.dumps(items)) return if not items: return echo_liblist_header() for item in sorted(items, key=lambda i: i['id']): item['authornames'] = [i['name'] for i in item['authors']] echo_liblist_item(item)
def lib_list(json_output): lm = LibraryManager(get_lib_dir()) items = lm.get_installed().values() if json_output: click.echo(json.dumps(items)) return if not items: return echo_liblist_header() for item in items: item['authornames'] = [i['name'] for i in item['authors']] echo_liblist_item(item)
def check_internal_updates(ctx, what): last_check = app.get_state_item("last_check", {}) interval = int(app.get_setting("check_%s_interval" % what)) * 3600 * 24 if (time() - interval) < last_check.get(what + "_update", 0): return last_check[what + '_update'] = int(time()) app.set_state_item("last_check", last_check) outdated_items = [] if what == "platforms": for platform in PlatformFactory.get_platforms(installed=True).keys(): p = PlatformFactory.newPlatform(platform) if p.is_outdated(): outdated_items.append(platform) elif what == "libraries": lm = LibraryManager(get_lib_dir()) outdated_items = lm.get_outdated() if not outdated_items: return click.secho("There are the new updates for %s (%s)" % (what, ", ".join(outdated_items)), fg="yellow") if not app.get_setting("auto_update_" + what): click.secho("Please update them via ", fg="yellow", nl=False) click.secho("`platformio %supdate`" % ("lib " if what == "libraries" else ""), fg="cyan", nl=False) click.secho(" command.\n", fg="yellow") else: click.secho("Please wait while updating %s ..." % what, fg="yellow") if what == "platforms": ctx.invoke(cli_update) elif what == "libraries": ctx.invoke(cmd_libraries_update) click.echo() telemetry.on_event(category="Auto", action="Update", label=what.title())
DefaultEnvironment( tools=["gcc", "g++", "as", "ar", "gnulink", "platformio", "pioupload", "pioar", "piomisc"], toolpath=[join("$PIOBUILDER_DIR", "tools")], variables=commonvars, UNIX_TIME=int(time()), PIOHOME_DIR=util.get_home_dir(), PROJECT_DIR=util.get_project_dir(), PROJECTLIB_DIR=util.get_projectlib_dir(), PROJECTSRC_DIR=util.get_projectsrc_dir(), PIOENVS_DIR=util.get_pioenvs_dir(), PIOBUILDER_DIR=join(util.get_source_dir(), "builder"), PIOPACKAGES_DIR=join("$PIOHOME_DIR", "packages"), BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"), BUILDSRC_DIR=join("$BUILD_DIR", "src"), LIBSOURCE_DIRS=["$PROJECTLIB_DIR", util.get_lib_dir(), join("$PLATFORMFW_DIR", "libraries")], ) env = DefaultEnvironment() if "BOARD" in env: try: env.Replace(BOARD_OPTIONS=util.get_boards(env.subst("$BOARD"))) except UnknownBoard as e: env.Exit("Error: %s" % str(e)) if "BOARD_MCU" not in env: env.Replace(BOARD_MCU="${BOARD_OPTIONS['build']['mcu']}") if "BOARD_F_CPU" not in env: env.Replace(BOARD_F_CPU="${BOARD_OPTIONS['build']['f_cpu']}") if "UPLOAD_PROTOCOL" not in env:
def __init__(self, lib_dir=None): self.lib_dir = lib_dir or util.get_lib_dir()
PIOHOME_DIR=util.get_home_dir(), PROJECT_DIR=util.get_project_dir(), PROJECTLIB_DIR=util.get_projectlib_dir(), PROJECTSRC_DIR=util.get_projectsrc_dir(), PROJECTDATA_DIR=util.get_projectdata_dir(), PIOENVS_DIR=util.get_pioenvs_dir(), PIOBUILDER_DIR=join(util.get_source_dir(), "builder"), PIOPACKAGES_DIR=join("$PIOHOME_DIR", "packages"), BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"), BUILDSRC_DIR=join("$BUILD_DIR", "src"), LIBSOURCE_DIRS=[ "$PROJECTLIB_DIR", util.get_lib_dir(), join("$PLATFORMFW_DIR", "libraries") ], PYTHONEXE=normpath(sys.executable) ) env = DefaultEnvironment() env.Prepend(LIBPATH=[join("$PIOPACKAGES_DIR", "ldscripts")]) if "BOARD" in env: try: env.Replace(BOARD_OPTIONS=util.get_boards(env.subst("$BOARD"))) except UnknownBoard as e: env.Exit("Error: %s" % str(e))
toolpath=[join("$PIOBUILDER_DIR", "tools")], variables=commonvars, PIOBUILDER_DIR=join(get_source_dir(), "builder"), PROJECT_DIR=get_project_dir(), PIOENVS_DIR=get_pioenvs_dir(), PLATFORMIOHOME_DIR=get_home_dir(), PLATFORM_DIR=join("$PLATFORMIOHOME_DIR", "$PLATFORM"), PLATFORMFW_DIR=join("$PLATFORM_DIR", "frameworks", "$FRAMEWORK"), PLATFORMTOOLS_DIR=join("$PLATFORM_DIR", "tools"), BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"), LIBSOURCE_DIRS=[ join("$PROJECT_DIR", "lib"), get_lib_dir(), join("$PLATFORMFW_DIR", "libraries"), ] ) env = DefaultEnvironment() if not isdir(env['PLATFORMIOHOME_DIR']): Exit("You haven't installed any platforms yet. Please use " "`platformio install` command") elif not isdir(env.subst("$PLATFORM_DIR")): Exit("An '%s' platform hasn't been installed yet. Please use " "`platformio install %s` command" % (env['PLATFORM'], env['PLATFORM'])) SConscriptChdir(0)
], toolpath=[join("$PIOBUILDER_DIR", "tools")], variables=commonvars, UNIX_TIME=int(time()), PIOHOME_DIR=util.get_home_dir(), PROJECT_DIR=util.get_project_dir(), PROJECTLIB_DIR=util.get_projectlib_dir(), PROJECTSRC_DIR=util.get_projectsrc_dir(), PIOENVS_DIR=util.get_pioenvs_dir(), PIOBUILDER_DIR=join(util.get_source_dir(), "builder"), PIOPACKAGES_DIR=join("$PIOHOME_DIR", "packages"), BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"), BUILDSRC_DIR=join("$BUILD_DIR", "src"), LIBSOURCE_DIRS=[ "$PROJECTLIB_DIR", util.get_lib_dir(), join("$PLATFORMFW_DIR", "libraries") ]) env = DefaultEnvironment() if "BOARD" in env: try: env.Replace(BOARD_OPTIONS=util.get_boards(env.subst("$BOARD"))) except UnknownBoard as e: env.Exit("Error: %s" % str(e)) if "BOARD_MCU" not in env: env.Replace(BOARD_MCU="${BOARD_OPTIONS['build']['mcu']}") if "BOARD_F_CPU" not in env: env.Replace(BOARD_F_CPU="${BOARD_OPTIONS['build']['f_cpu']}")
DefaultEnvironment(tools=["default", "platformio"], toolpath=[join("$PIOBUILDER_DIR", "tools")], variables=commonvars, PIOBUILDER_DIR=join(get_source_dir(), "builder"), PROJECT_DIR=get_project_dir(), PIOENVS_DIR=get_pioenvs_dir(), PLATFORMIOHOME_DIR=get_home_dir(), PLATFORM_DIR=join("$PLATFORMIOHOME_DIR", "$PLATFORM"), PLATFORMFW_DIR=join("$PLATFORM_DIR", "frameworks", "$FRAMEWORK"), PLATFORMTOOLS_DIR=join("$PLATFORM_DIR", "tools"), BUILD_DIR=join("$PIOENVS_DIR", "$PIOENV"), LIBSOURCE_DIRS=[ join("$PROJECT_DIR", "lib"), get_lib_dir(), join("$PLATFORMFW_DIR", "libraries"), ]) env = DefaultEnvironment() if not isdir(env['PLATFORMIOHOME_DIR']): Exit("You haven't installed any platforms yet. Please use " "`platformio install` command") elif not isdir(env.subst("$PLATFORM_DIR")): Exit("An '%s' platform hasn't been installed yet. Please use " "`platformio install %s` command" % (env['PLATFORM'], env['PLATFORM'])) SConscriptChdir(0) SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "${PLATFORM}.py")))