File size: 3,489 Bytes
1851bae | 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | use serde::Serialize;
use serde_json::Value;
/// Matrix entry for build targets
#[derive(Serialize, Clone)]
pub struct MatrixEntry {
pub os: &'static str,
pub target: &'static str,
pub binary_name: &'static str,
pub binary_path: &'static str,
pub cross: &'static str,
}
#[derive(Clone)]
pub struct ReleaseMatrix(Vec<MatrixEntry>);
impl Default for ReleaseMatrix {
/// Returns a vector of all build matrix entries
fn default() -> Self {
ReleaseMatrix(vec![
MatrixEntry {
os: "ubuntu-latest",
target: "x86_64-unknown-linux-musl",
binary_name: "forge-x86_64-unknown-linux-musl",
binary_path: "target/x86_64-unknown-linux-musl/release/forge",
cross: "true",
},
MatrixEntry {
os: "ubuntu-latest",
target: "aarch64-unknown-linux-musl",
binary_name: "forge-aarch64-unknown-linux-musl",
binary_path: "target/aarch64-unknown-linux-musl/release/forge",
cross: "true",
},
MatrixEntry {
os: "ubuntu-latest",
target: "x86_64-unknown-linux-gnu",
binary_name: "forge-x86_64-unknown-linux-gnu",
binary_path: "target/x86_64-unknown-linux-gnu/release/forge",
cross: "false",
},
MatrixEntry {
os: "ubuntu-latest",
target: "aarch64-unknown-linux-gnu",
binary_name: "forge-aarch64-unknown-linux-gnu",
binary_path: "target/aarch64-unknown-linux-gnu/release/forge",
cross: "true",
},
MatrixEntry {
os: "macos-latest",
target: "x86_64-apple-darwin",
binary_name: "forge-x86_64-apple-darwin",
binary_path: "target/x86_64-apple-darwin/release/forge",
cross: "false",
},
MatrixEntry {
os: "macos-latest",
target: "aarch64-apple-darwin",
binary_name: "forge-aarch64-apple-darwin",
binary_path: "target/aarch64-apple-darwin/release/forge",
cross: "false",
},
MatrixEntry {
os: "windows-latest",
target: "x86_64-pc-windows-msvc",
binary_name: "forge-x86_64-pc-windows-msvc.exe",
binary_path: "target/x86_64-pc-windows-msvc/release/forge.exe",
cross: "false",
},
MatrixEntry {
os: "windows-latest",
target: "aarch64-pc-windows-msvc",
binary_name: "forge-aarch64-pc-windows-msvc.exe",
binary_path: "target/aarch64-pc-windows-msvc/release/forge.exe",
cross: "false",
},
MatrixEntry {
os: "ubuntu-latest",
target: "aarch64-linux-android",
binary_name: "forge-aarch64-linux-android",
binary_path: "target/aarch64-linux-android/release/forge",
cross: "true",
},
])
}
}
impl ReleaseMatrix {
pub fn entries(&self) -> Vec<MatrixEntry> {
self.0.clone()
}
}
impl From<ReleaseMatrix> for Value {
fn from(value: ReleaseMatrix) -> Self {
serde_json::json!({
"include": value.entries()
})
}
}
|