@@ -12,6 +12,14 @@ fn main() {
12
12
. find ( |link| link. contains ( "git-ovmf-x64" ) )
13
13
. expect ( "no ovmf link found" ) ;
14
14
println ! ( "Downloading {}" , file_name) ;
15
+ let ( date, build_number, hash) = {
16
+ let stripped = file_name. strip_prefix ( "edk2.git-ovmf-x64-0-" ) . unwrap ( ) ;
17
+ let mut components = stripped. split ( '.' ) ;
18
+ let date = components. next ( ) . unwrap ( ) ;
19
+ let build_number = components. next ( ) . unwrap ( ) ;
20
+ let hash = components. next ( ) . unwrap ( ) ;
21
+ ( date, build_number, hash)
22
+ } ;
15
23
16
24
let target_dir = Path :: new ( "target" ) . join ( "download" ) ;
17
25
std:: fs:: create_dir_all ( & target_dir) . unwrap ( ) ;
@@ -56,6 +64,16 @@ fn main() {
56
64
. join ( "ovmf-x64" ) ;
57
65
assert ! ( ovmf_root. exists( ) ) ;
58
66
59
- // TODO: if run on ci (check env variable), create a new release using `gh` cli tool:
60
- // gh release create v<date> {ovmf_root}
67
+ if std:: env:: var ( "CI" ) . as_deref ( ) == Ok ( "true" ) {
68
+ let version = format ! ( "v0.{}.{}+{}" , date, build_number, hash) ;
69
+ println ! ( "Releasing version {}" , version) ;
70
+ let mut cmd = std:: process:: Command :: new ( "gh" ) ;
71
+ cmd. arg ( "release" ) . arg ( "create" ) . arg ( & version) ;
72
+ for entry in std:: fs:: read_dir ( & ovmf_root) . unwrap ( ) {
73
+ cmd. arg ( entry. unwrap ( ) . path ( ) ) ;
74
+ }
75
+ if !cmd. status ( ) . unwrap ( ) . success ( ) {
76
+ panic ! ( "gh release failed" )
77
+ }
78
+ }
61
79
}
0 commit comments