@@ -9,7 +9,7 @@ use clap::Args;
99use eyre:: { bail, Context , Result } ;
1010use hf_hub:: {
1111 repository:: { AddSource , CommitOperation } ,
12- RepoType ,
12+ RepoType , RepoTypeKernel , RepoTypeModel ,
1313} ;
1414use kernels_data:: metadata:: Metadata ;
1515use walkdir:: WalkDir ;
@@ -29,15 +29,6 @@ pub enum RepoTypeArg {
2929 Kernel ,
3030}
3131
32- impl From < RepoTypeArg > for RepoType {
33- fn from ( arg : RepoTypeArg ) -> Self {
34- match arg {
35- RepoTypeArg :: Model => RepoType :: Model ,
36- RepoTypeArg :: Kernel => RepoType :: Kernel ,
37- }
38- }
39- }
40-
4132#[ derive( Debug , Args ) ]
4233pub struct UploadArgs {
4334 /// Directory of the kernel build (defaults to current directory).
@@ -96,8 +87,14 @@ fn get_repo_and_branch(
9687}
9788
9889pub fn run_upload ( args : UploadArgs ) -> Result < ( ) > {
90+ match args. repo_type {
91+ RepoTypeArg :: Model => run_upload_typed :: < RepoTypeModel > ( args) ,
92+ RepoTypeArg :: Kernel => run_upload_typed :: < RepoTypeKernel > ( args) ,
93+ }
94+ }
95+
96+ fn run_upload_typed < T : RepoType > ( args : UploadArgs ) -> Result < ( ) > {
9997 let api = hf:: api ( ) ?;
100- let repo_type: RepoType = args. repo_type . into ( ) ;
10198 let kernel_dir = check_or_infer_kernel_dir ( args. kernel_dir ) ?;
10299 let kernel_dir = fs:: canonicalize ( & kernel_dir)
103100 . wrap_err_with ( || format ! ( "Cannot resolve kernel directory `{}`" , kernel_dir. display( ) ) ) ?;
@@ -112,9 +109,9 @@ pub fn run_upload(args: UploadArgs) -> Result<()> {
112109 let ( repo_id, branch) = get_repo_and_branch ( & kernel_dir, args. repo_id , args. branch , & variants) ?;
113110
114111 let repo_url = api
115- . create_repo ( )
112+ . create_repository ( )
116113 . repo_id ( & repo_id)
117- . repo_type ( repo_type )
114+ . repo_type ( T :: default ( ) )
118115 . private ( args. private )
119116 . exist_ok ( true )
120117 . send ( )
@@ -128,7 +125,7 @@ pub fn run_upload(args: UploadArgs) -> Result<()> {
128125 . unwrap_or ( & repo_id)
129126 . to_owned ( ) ;
130127
131- let repo = repo_handle ( & api, repo_type , & repo_id) ;
128+ let repo = repo_handle :: < T > ( & api, & repo_id) ;
132129
133130 let is_new_version_branch = if let Some ( ref branch) = branch {
134131 let refs = repo
@@ -240,10 +237,7 @@ pub fn run_upload(args: UploadArgs) -> Result<()> {
240237 if total_ops == 0 {
241238 eprintln ! ( "No changes to upload." ) ;
242239 } else {
243- let type_prefix = match repo_type {
244- RepoType :: Kernel => "kernels/" ,
245- _ => "" ,
246- } ;
240+ let type_prefix = T :: default ( ) . url_prefix ( ) ;
247241 let tree_path = branch
248242 . as_ref ( )
249243 . map_or ( String :: new ( ) , |b| format ! ( "/tree/{b}" ) ) ;
0 commit comments