@@ -160,6 +160,19 @@ impl Channel {
160
160
}
161
161
}
162
162
163
+ /// Returns the name of the channel
164
+ pub fn name ( & self ) -> & str {
165
+ match self . base_url ( ) . scheme ( ) {
166
+ // The name of the channel is only defined for http and https channels.
167
+ // If the name is not defined we return the base url.
168
+ "https" | "http" => self
169
+ . name
170
+ . as_deref ( )
171
+ . unwrap_or_else ( || self . base_url . as_str ( ) ) ,
172
+ _ => self . base_url . as_str ( ) ,
173
+ }
174
+ }
175
+
163
176
/// Returns the base Url of the channel. This does not include the platform part.
164
177
pub fn base_url ( & self ) -> & Url {
165
178
& self . base_url
@@ -442,6 +455,7 @@ mod tests {
442
455
Url :: from_str( "https://conda.anaconda.org/conda-forge/" ) . unwrap( )
443
456
) ;
444
457
assert_eq ! ( channel. name. as_deref( ) , Some ( "conda-forge" ) ) ;
458
+ assert_eq ! ( channel. name( ) , "conda-forge" ) ;
445
459
assert_eq ! ( channel. platforms, None ) ;
446
460
447
461
assert_eq ! ( channel, Channel :: from_name( "conda-forge/" , None , & config) ) ;
@@ -458,6 +472,7 @@ mod tests {
458
472
Url :: from_str( "https://conda.anaconda.org/conda-forge/" ) . unwrap( )
459
473
) ;
460
474
assert_eq ! ( channel. name. as_deref( ) , Some ( "conda-forge" ) ) ;
475
+ assert_eq ! ( channel. name( ) , "conda-forge" ) ;
461
476
assert_eq ! ( channel. platforms, None ) ;
462
477
assert_eq ! (
463
478
channel. base_url( ) . to_string( ) ,
@@ -471,6 +486,7 @@ mod tests {
471
486
472
487
let channel = Channel :: from_str ( "file:///var/channels/conda-forge" , & config) . unwrap ( ) ;
473
488
assert_eq ! ( channel. name. as_deref( ) , Some ( "conda-forge" ) ) ;
489
+ assert_eq ! ( channel. name( ) , "file:///var/channels/conda-forge/" ) ;
474
490
assert_eq ! (
475
491
channel. base_url,
476
492
Url :: from_str( "file:///var/channels/conda-forge/" ) . unwrap( )
@@ -484,6 +500,12 @@ mod tests {
484
500
let current_dir = std:: env:: current_dir ( ) . expect ( "no current dir?" ) ;
485
501
let channel = Channel :: from_str ( "./dir/does/not_exist" , & config) . unwrap ( ) ;
486
502
assert_eq ! ( channel. name. as_deref( ) , Some ( "./dir/does/not_exist" ) ) ;
503
+ assert_eq ! (
504
+ channel. name( ) ,
505
+ Url :: from_directory_path( absolute_path( Path :: new( "./dir/does/not_exist" ) ) )
506
+ . unwrap( )
507
+ . as_str( )
508
+ ) ;
487
509
assert_eq ! ( channel. platforms, None ) ;
488
510
assert_eq ! (
489
511
channel. base_url( ) . to_file_path( ) . unwrap( ) ,
@@ -502,6 +524,7 @@ mod tests {
502
524
) ;
503
525
assert_eq ! ( channel. name, None ) ;
504
526
assert_eq ! ( channel. platforms, None ) ;
527
+ assert_eq ! ( channel. name( ) , "http://localhost:1234/" ) ;
505
528
506
529
let noarch_url = channel. platform_url ( Platform :: NoArch ) ;
507
530
assert_eq ! ( noarch_url. to_string( ) , "http://localhost:1234/noarch/" ) ;
0 commit comments