burtenshaw's picture
burtenshaw HF Staff
Upload folder using huggingface_hub
abf77e0 verified
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
OpenEnv CLI entry point.
This module provides the main entry point for the OpenEnv command-line interface,
following the Hugging Face CLI pattern.
"""
import sys
import typer
from openenv.cli.commands import build, fork, init, push, serve, validate
# Create the main CLI app
app = typer.Typer(
name="openenv",
help="OpenEnv - An e2e framework for creating, deploying and using isolated execution environments for agentic RL training",
no_args_is_help=True,
)
# Register commands
app.command(name="init", help="Initialize a new OpenEnv environment")(init.init)
app.command(name="build", help="Build Docker images for OpenEnv environments")(
build.build
)
app.command(
name="validate", help="Validate environment structure and deployment readiness"
)(validate.validate)
app.command(
name="push",
help="Push an OpenEnv environment to Hugging Face Spaces or custom registry",
)(push.push)
app.command(name="serve", help="Serve environments locally (TODO: Phase 4)")(
serve.serve
)
app.command(
name="fork",
help="Fork (duplicate) a Hugging Face Space to your account",
)(fork.fork)
# Entry point for setuptools
def main() -> None:
"""Main entry point for the CLI."""
try:
app()
except KeyboardInterrupt:
print("\nOperation cancelled by user.")
sys.exit(130)
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()