diff --git a/MANIFEST.in b/MANIFEST.in index e163d8773..b0d4e2866 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ include requirements.txt include llama_toolchain/data/*.yaml include llama_toolchain/distribution/*.sh +include llama_toolchain/cli/scripts/*.sh diff --git a/llama_toolchain/cli/scripts/__init__.py b/llama_toolchain/cli/scripts/__init__.py new file mode 100644 index 000000000..756f351d8 --- /dev/null +++ b/llama_toolchain/cli/scripts/__init__.py @@ -0,0 +1,5 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. diff --git a/llama_toolchain/cli/scripts/install-wheel-from-presigned.sh b/llama_toolchain/cli/scripts/install-wheel-from-presigned.sh new file mode 100755 index 000000000..313668d52 --- /dev/null +++ b/llama_toolchain/cli/scripts/install-wheel-from-presigned.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. + +set -euo pipefail + +if [ $# -eq 0 ]; then + echo "Please provide a URL as an argument." + exit 1 +fi + +URL=$1 + +HEADERS_FILE=$(mktemp) +curl -s -I "$URL" >"$HEADERS_FILE" +FILENAME=$(grep -i "x-manifold-obj-canonicalpath:" "$HEADERS_FILE" | sed -E 's/.*nodes\/[^\/]+\/(.+)/\1/' | tr -d "\r\n") + +if [ -z "$FILENAME" ]; then + echo "Could not find the x-manifold-obj-canonicalpath header." + echo "HEADERS_FILE contents: " + cat "$HEADERS_FILE" + echo "" + exit 1 +fi + +echo "Downloading $FILENAME..." + +curl -s -L -o "$FILENAME" "$URL" + +echo "Installing $FILENAME..." +pip install "$FILENAME" +echo "Successfully installed $FILENAME" + +rm -f "$FILENAME" diff --git a/llama_toolchain/cli/scripts/run.py b/llama_toolchain/cli/scripts/run.py new file mode 100644 index 000000000..da71d7a36 --- /dev/null +++ b/llama_toolchain/cli/scripts/run.py @@ -0,0 +1,18 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the terms described in the LICENSE file in +# the root directory of this source tree. + +import os +import subprocess +import sys + + +def install_wheel_from_presigned(): + file = "install-wheel-from-presigned.sh" + script_path = os.path.join(os.path.dirname(__file__), file) + try: + subprocess.run(["sh", script_path] + sys.argv[1:], check=True) + except Exception: + sys.exit(1) diff --git a/setup.py b/setup.py index 45c4bcf32..975c33c7e 100644 --- a/setup.py +++ b/setup.py @@ -20,7 +20,12 @@ setup( author="Meta Llama", author_email="llama-oss@meta.com", description="Llama toolchain", - entry_points={"console_scripts": ["llama = llama_toolchain.cli.llama:main"]}, + entry_points={ + "console_scripts": [ + "llama = llama_toolchain.cli.llama:main", + "install-wheel-from-presigned = llama_toolchain.cli.scripts.run:install_wheel_from_presigned", + ] + }, long_description=open("README.md").read(), long_description_content_type="text/markdown", url="https://github.com/meta-llama/llama-toolchain",