add list version command, fix staging and use-version

This commit is contained in:
Ondrej Samohel 2021-07-02 14:55:35 +02:00 committed by Ondrej Samohel
parent af62e10b74
commit ad1891e637
No known key found for this signature in database
GPG key ID: 02376E18990A97C6

View file

@ -135,18 +135,36 @@ if sys.__stdout__:
def _print(message: str):
if message.startswith("!!! "):
print("{}{}".format(term.orangered2("!!! "), message[4:]))
return
if message.startswith(">>> "):
print("{}{}".format(term.aquamarine3(">>> "), message[4:]))
return
if message.startswith("--- "):
print("{}{}".format(term.darkolivegreen3("--- "), message[4:]))
if message.startswith(" "):
print("{}{}".format(term.darkseagreen3(" "), message[4:]))
return
if message.startswith("*** "):
print("{}{}".format(term.gold("*** "), message[4:]))
return
if message.startswith(" - "):
print("{}{}".format(term.wheat(" - "), message[4:]))
return
if message.startswith(" . "):
print("{}{}".format(term.tan(" . "), message[4:]))
return
if message.startswith(" - "):
print("{}{}".format(term.seagreen3(" - "), message[7:]))
return
if message.startswith(" ! "):
print("{}{}".format(term.goldenrod(" ! "), message[7:]))
return
if message.startswith(" * "):
print("{}{}".format(term.aquamarine1(" * "), message[7:]))
return
if message.startswith(" "):
print("{}{}".format(term.darkseagreen3(" "), message[4:]))
return
print(message)
else:
def _print(message: str):
print(message)
@ -175,6 +193,17 @@ silent_commands = ["run", "igniter", "standalonepublisher",
"extractenvironments"]
def list_versions(openpype_versions: list, local_version=None) -> None:
"""Print list of detected versions."""
_print(" - Detected versions:")
for v in sorted(openpype_versions):
_print(f" - {v}: {v.path}")
if not openpype_versions:
_print(" ! none in repository detected")
if local_version:
_print(f" * local version {local_version}")
def set_openpype_global_environments() -> None:
"""Set global OpenPype's environments."""
import acre
@ -303,6 +332,7 @@ def _process_arguments() -> tuple:
# check for `--use-version=3.0.0` argument and `--use-staging`
use_version = None
use_staging = False
print_versions = False
for arg in sys.argv:
if arg == "--use-version":
_print("!!! Please use option --use-version like:")
@ -313,12 +343,19 @@ def _process_arguments() -> tuple:
r"--use-version=(?P<version>\d+\.\d+\.\d+(?:\S*)?)", arg)
if m and m.group('version'):
use_version = m.group('version')
_print(">>> Requested version [ {} ]".format(use_version))
sys.argv.remove(arg)
if "+staging" in use_version:
use_staging = True
break
if "--use-staging" in sys.argv:
use_staging = True
sys.argv.remove("--use-staging")
if "--list-versions" in sys.argv:
print_versions = True
sys.argv.remove("--list-versions")
# handle igniter
# this is helper to run igniter before anything else
if "igniter" in sys.argv:
@ -334,7 +371,7 @@ def _process_arguments() -> tuple:
sys.argv.pop(idx)
sys.argv.insert(idx, "tray")
return use_version, use_staging
return use_version, use_staging, print_versions
def _determine_mongodb() -> str:
@ -487,7 +524,7 @@ def _find_frozen_openpype(use_version: str = None,
openpype_version = openpype_versions[-1]
except IndexError:
_print(("!!! Something is wrong and we didn't "
"found it again."))
"found it again."))
sys.exit(1)
elif return_code != 2:
_print(f" . finished ({return_code})")
@ -519,13 +556,8 @@ def _find_frozen_openpype(use_version: str = None,
if found:
openpype_version = sorted(found)[-1]
if not openpype_version:
_print(f"!!! requested version {use_version} was not found.")
if openpype_versions:
_print(" - found: ")
for v in sorted(openpype_versions):
_print(f" - {v}: {v.path}")
_print(f" - local version {local_version}")
_print(f"!!! Requested version {use_version} was not found.")
list_versions(openpype_versions, local_version)
sys.exit(1)
# test if latest detected is installed (in user data dir)
@ -560,7 +592,7 @@ def _find_frozen_openpype(use_version: str = None,
return openpype_version.path
def _bootstrap_from_code(use_version):
def _bootstrap_from_code(use_version, use_staging):
"""Bootstrap live code (or the one coming with frozen OpenPype.
Args:
@ -583,7 +615,8 @@ def _bootstrap_from_code(use_version):
if use_version and use_version != local_version:
version_to_use = None
openpype_versions = bootstrap.find_openpype(include_zips=True)
openpype_versions = bootstrap.find_openpype(
include_zips=True, staging=use_staging)
v: OpenPypeVersion
found = [v for v in openpype_versions if str(v) == use_version]
if found:
@ -600,13 +633,8 @@ def _bootstrap_from_code(use_version):
os.environ["OPENPYPE_REPOS_ROOT"] = (version_path / "openpype").as_posix() # noqa: E501
_openpype_root = version_to_use.path.as_posix()
else:
_print(f"!!! requested version {use_version} was not found.")
if openpype_versions:
_print(" - found: ")
for v in sorted(openpype_versions):
_print(f" - {v}: {v.path}")
_print(f" - local version {local_version}")
_print(f"!!! Requested version {use_version} was not found.")
list_versions(openpype_versions, local_version)
sys.exit(1)
else:
os.environ["OPENPYPE_VERSION"] = local_version
@ -675,7 +703,7 @@ def boot():
# Process arguments
# ------------------------------------------------------------------------
use_version, use_staging = _process_arguments()
use_version, use_staging, print_versions = _process_arguments()
if os.getenv("OPENPYPE_VERSION"):
use_staging = "staging" in os.getenv("OPENPYPE_VERSION")
@ -704,6 +732,24 @@ def boot():
if not os.getenv("OPENPYPE_PATH") and openpype_path:
os.environ["OPENPYPE_PATH"] = openpype_path
if print_versions:
if not use_staging:
_print("--- This will list only non-staging versions detected.")
_print(" To see staging versions, use --use-staging argument.")
else:
_print("--- This will list only staging versions detected.")
_print(" To see other version, omit --use-staging argument.")
_openpype_root = OPENPYPE_ROOT
openpype_versions = bootstrap.find_openpype(include_zips=True,
staging=use_staging)
if getattr(sys, 'frozen', False):
local_version = bootstrap.get_version(Path(_openpype_root))
else:
local_version = bootstrap.get_local_live_version()
list_versions(openpype_versions, local_version)
sys.exit(1)
# ------------------------------------------------------------------------
# Find OpenPype versions
# ------------------------------------------------------------------------
@ -718,7 +764,7 @@ def boot():
_print(f"!!! {e}")
sys.exit(1)
else:
version_path = _bootstrap_from_code(use_version)
version_path = _bootstrap_from_code(use_version, use_staging)
# set this to point either to `python` from venv in case of live code
# or to `openpype` or `openpype_console` in case of frozen code