File size: 1,599 Bytes
62f1804 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/usr/bin/env python3
import os, shutil, argparse
from huggingface_hub import Repository, create_repo
def deploy(hf_user, space_name, local_dir, private=False):
token = os.environ.get("HF_TOKEN")
if not token:
raise SystemExit("Please set HF_TOKEN env variable.")
repo_id = f"{hf_user}/{space_name}"
create_repo(repo_id=repo_id, repo_type="space", space_sdk="docker", private=private, exist_ok=True, token=token)
clone_dir = space_name
if os.path.exists(clone_dir):
shutil.rmtree(clone_dir)
repo = Repository(local_dir=clone_dir, clone_from=f"https://huggingface.co/spaces/{repo_id}", use_auth_token=token)
for item in os.listdir(local_dir):
s = os.path.join(local_dir, item)
d = os.path.join(clone_dir, item)
if os.path.isdir(s):
if os.path.exists(d): shutil.rmtree(d)
shutil.copytree(s, d)
else:
shutil.copy2(s, d)
with open(os.path.join(clone_dir, ".gitattributes"), "a") as f:
f.write("\n*.pkl filter=lfs diff=lfs merge=lfs -text\n")
repo.git_add()
try: repo.git_commit("Deploy Space")
except: pass
repo.push_to_hub()
print("Deployed -> https://huggingface.co/spaces/"+repo_id)
if __name__ == '__main__':
p = argparse.ArgumentParser()
p.add_argument('--hf_user', required=True)
p.add_argument('--space_name', required=True)
p.add_argument('--local_dir', required=True)
p.add_argument('--private', action='store_true')
args = p.parse_args()
deploy(args.hf_user, args.space_name, args.local_dir, private=args.private)
|