1- use std:: { collections:: HashMap , io:: Write } ;
1+ use std:: { collections:: BTreeMap , io:: Write } ;
22
33use anyhow:: Result ;
44use askama:: Template ;
@@ -11,20 +11,20 @@ use sha2::{Sha256, Sha512};
1111use crate :: {
1212 apt:: deb:: DebianPackage ,
1313 package:: Package ,
14- utils:: { Arch , hashsum} ,
14+ utils:: { Arch , ReleaseChannel , hashsum} ,
1515} ;
1616
1717#[ derive( Debug ) ]
1818pub struct AptIndices {
19- packages : HashMap < Arch , Vec < DebianPackage > > ,
19+ packages : BTreeMap < Arch , Vec < DebianPackage > > ,
2020 date : DateTime < Utc > ,
2121}
2222
2323#[ derive( Template ) ]
2424#[ template( path = "Release" ) ]
2525struct ReleaseIndex < ' a > {
26- origin : & ' a str ,
27- label : & ' a str ,
26+ channel : & ' a ReleaseChannel ,
27+ arch : Vec < String > ,
2828 date : String ,
2929 files : Vec < Files > ,
3030}
@@ -46,7 +46,7 @@ struct Files {
4646
4747impl AptIndices {
4848 pub fn new ( packages : & [ Package ] ) -> Result < AptIndices > {
49- let mut debian: HashMap < Arch , Vec < DebianPackage > > = HashMap :: new ( ) ;
49+ let mut debian: BTreeMap < Arch , Vec < DebianPackage > > = BTreeMap :: new ( ) ;
5050 // Find the latest date from the list of packages
5151 let mut date = DateTime :: UNIX_EPOCH ;
5252 for package in packages {
@@ -85,8 +85,7 @@ impl AptIndices {
8585 index. render ( ) . unwrap ( ) . trim ( ) . to_owned ( )
8686 }
8787
88- pub fn get_release_index ( & self ) -> String {
89- let name = ". stable" ;
88+ pub fn get_release_index ( & self , channel : & ReleaseChannel ) -> String {
9089 let date = self . date . to_rfc2822 ( ) ;
9190
9291 let mut files = vec ! [ ] ;
@@ -122,8 +121,8 @@ impl AptIndices {
122121 let index = ReleaseIndex {
123122 date,
124123 files,
125- origin : name ,
126- label : name ,
124+ channel ,
125+ arch : self . packages . keys ( ) . map ( |s| s . to_string ( ) ) . collect ( ) ,
127126 } ;
128127
129128 index. render ( ) . unwrap ( )
@@ -166,7 +165,7 @@ mod tests {
166165 assert_snapshot ! ( packages) ;
167166
168167 // Release
169- let release = indices. get_release_index ( ) ;
168+ let release = indices. get_release_index ( & ReleaseChannel :: Stable ) ;
170169 assert_snapshot ! ( release) ;
171170 }
172171
@@ -192,7 +191,7 @@ mod tests {
192191 assert_eq ! ( packages_gz. len( ) , 1105 ) ;
193192
194193 // Release
195- let release = indices. get_release_index ( ) ;
194+ let release = indices. get_release_index ( & ReleaseChannel :: Stable ) ;
196195 assert_snapshot ! ( release) ;
197196 }
198197
@@ -233,7 +232,7 @@ mod tests {
233232 let indices = AptIndices :: new ( & packages) . unwrap ( ) ;
234233
235234 // Release
236- let release = indices. get_release_index ( ) ;
235+ let release = indices. get_release_index ( & ReleaseChannel :: Stable ) ;
237236 assert_snapshot ! ( release) ;
238237 }
239238}
0 commit comments