orbgen-training / scripts /upload_orbital_cli.py
javasop's picture
Upload folder using huggingface_hub
9791706 verified
#!/usr/bin/env python3
"""
Upload orbital CLI binary to HuggingFace Hub.
Usage:
# First build the binary:
cd orbital-rust && cargo build --release --bin orbital
# Then upload:
python scripts/upload_orbital_cli.py
"""
import os
import argparse
from pathlib import Path
from huggingface_hub import HfApi, create_repo, upload_file
def main():
parser = argparse.ArgumentParser(description='Upload orbital CLI to HuggingFace')
parser.add_argument('--repo', default='orbital-ai/orbital-cli',
help='HuggingFace repository')
parser.add_argument('--binary', default=None,
help='Path to orbital binary (auto-detected if not specified)')
args = parser.parse_args()
# Find binary
if args.binary:
binary_path = Path(args.binary)
else:
# Try common locations
candidates = [
Path.home() / 'kflow.ai.builder/orbital-rust/target/release/orbital',
Path(__file__).parent.parent.parent.parent / 'orbital-rust/target/release/orbital',
Path('/home/osamah/kflow.ai.builder/orbital-rust/target/release/orbital'),
]
binary_path = None
for candidate in candidates:
if candidate.exists():
binary_path = candidate
break
if not binary_path:
print("Error: Could not find orbital binary. Build it first:")
print(" cd orbital-rust && cargo build --release --bin orbital")
return 1
print(f"Binary: {binary_path}")
print(f"Size: {binary_path.stat().st_size / 1024 / 1024:.1f} MB")
# Create repo
api = HfApi()
try:
create_repo(args.repo, repo_type='model', exist_ok=True)
print(f"Repository: https://huggingface.co/{args.repo}")
except Exception as e:
print(f"Note: {e}")
# Upload binary
print(f"\nUploading to {args.repo}...")
upload_file(
path_or_fileobj=str(binary_path),
path_in_repo='orbital-linux-x86_64',
repo_id=args.repo,
commit_message='Upload orbital CLI binary for Linux x86_64'
)
# Create README
readme = """---
license: apache-2.0
tags:
- orbital
- cli
- schema-validation
---
# Orbital CLI
Binary releases of the Orbital CLI for use in training pipelines.
## Files
- `orbital-linux-x86_64` - Linux x86_64 binary
## Usage
```bash
# Download
wget https://huggingface.co/orbital-ai/orbital-cli/resolve/main/orbital-linux-x86_64 -O orbital
chmod +x orbital
# Validate a schema
./orbital validate schema.orb
```
## Building from Source
```bash
cd orbital-rust
cargo build --release --bin orbital
```
"""
readme_path = Path('/tmp/orbital-cli-readme.md')
readme_path.write_text(readme)
upload_file(
path_or_fileobj=str(readme_path),
path_in_repo='README.md',
repo_id=args.repo,
commit_message='Add README'
)
print(f"\nDone! Binary available at:")
print(f" https://huggingface.co/{args.repo}/resolve/main/orbital-linux-x86_64")
return 0
if __name__ == '__main__':
exit(main())