Files
platformio-core/platformio/__main__.py

74 lines
2.1 KiB
Python
Raw Normal View History

# Copyright (C) Ivan Kravets <me@ikravets.com>
# See LICENSE for details.
2014-08-04 11:09:47 +03:00
from os import listdir, makedirs
from os.path import getmtime, isdir, isfile, join
from sys import exit as sys_exit
from time import time
from traceback import format_exc
from click import command, MultiCommand, secho, version_option
2014-06-03 21:27:36 +03:00
from platformio import __version__
from platformio.commands.upgrade import get_latest_version
from platformio.exception import PlatformioException, UnknownCLICommand
from platformio.util import get_home_dir, get_source_dir
2014-08-13 11:55:25 +03:00
class PlatformioCLI(MultiCommand): # pylint: disable=R0904
2014-06-03 21:27:36 +03:00
def list_commands(self, ctx):
cmds = []
for filename in listdir(join(get_source_dir(), "commands")):
if filename.startswith("__init__"):
continue
if filename.endswith(".py"):
cmds.append(filename[:-3])
cmds.sort()
return cmds
2014-06-03 21:27:36 +03:00
def get_command(self, ctx, name):
try:
mod = __import__("platformio.commands." + name,
None, None, ["cli"])
except ImportError:
raise UnknownCLICommand(name)
2014-06-03 21:27:36 +03:00
return mod.cli
2014-06-03 21:27:36 +03:00
@command(cls=PlatformioCLI)
2014-06-23 18:04:07 +03:00
@version_option(__version__, prog_name="PlatformIO")
2014-06-03 21:27:36 +03:00
def cli():
pass
def autocheck_latest_version():
check_interval = 3600 * 24 * 7 # 1 week
checkfile = join(get_home_dir(), ".pioupgrade")
if isfile(checkfile) and getmtime(checkfile) > (time() - check_interval):
return False
2014-08-04 11:09:47 +03:00
if not isdir(get_home_dir()):
makedirs(get_home_dir())
with open(checkfile, "w") as f:
f.write(str(time()))
return get_latest_version() != __version__
2014-06-03 21:27:36 +03:00
def main():
try:
if autocheck_latest_version():
secho("\nThere is a new version of PlatformIO available.\n"
"Please upgrade it via `platformio upgrade` command.\n",
fg="yellow")
cli()
except Exception as e: # pylint: disable=W0703
if isinstance(e, PlatformioException):
sys_exit("Error: " + str(e))
else:
print format_exc()
if __name__ == "__main__":
sys_exit(main())