Display architectures for tags
This commit is contained in:
parent
bd7867aeef
commit
27dabbf641
|
@ -34,14 +34,6 @@
|
|||
};
|
||||
|
||||
dockerImage = pkgs.dockerTools.buildImage {
|
||||
copyToRoot = pkgs.buildEnv {
|
||||
name = "image-root";
|
||||
paths = [
|
||||
pkgs.coreutils
|
||||
pkgs.bash
|
||||
];
|
||||
pathsToLink = [ "/bin" ];
|
||||
};
|
||||
name = "dref";
|
||||
config = {
|
||||
Cmd = [ "${my-crate}/bin/docker-rs-dashboard" ];
|
||||
|
|
15
src/css.rs
15
src/css.rs
|
@ -106,10 +106,23 @@ footer {
|
|||
|
||||
details {
|
||||
font-size: 1.3em;
|
||||
cursor: pointer;
|
||||
border: 2px solid var(--text);
|
||||
padding: 5px;
|
||||
margin: -2px 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
li span {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
li {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
details summary {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
details > ul {
|
||||
|
|
22
src/main.rs
22
src/main.rs
|
@ -15,6 +15,7 @@ struct Image {
|
|||
#[derive(Debug)]
|
||||
struct Tag {
|
||||
name: String,
|
||||
architectures: Vec<String>
|
||||
}
|
||||
|
||||
#[tokio::main(flavor = "multi_thread", worker_threads = 10)]
|
||||
|
@ -68,7 +69,13 @@ async fn root() -> Markup {
|
|||
summary { (image.name) }
|
||||
ul {
|
||||
@for tag in &image.tags {
|
||||
li { (tag.name) }
|
||||
li { (tag.name)
|
||||
div {
|
||||
@for arch in &tag.architectures {
|
||||
span { (arch) }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -104,5 +111,16 @@ async fn get_tags(image: String) -> Result<Vec<Tag>, boxed::Box<dyn error::Error
|
|||
let tags = dclient.get_tags(image.as_str(), None).collect::<Vec<_>>().await
|
||||
.into_iter()
|
||||
.map(Result::unwrap).collect::<Vec<String>>();
|
||||
Ok(tags.into_iter().map(|t| Tag{name: t}).collect())
|
||||
let tags_complete: Vec<Tag> = join_all(tags.into_iter().map(|t| async { Tag{name: String::from(&t), architectures: get_platforms(&image, t).await.unwrap() }})).await;
|
||||
Ok(tags_complete)
|
||||
}
|
||||
|
||||
async fn get_platforms(image: &String, tag: String) -> Result<Vec<String>, boxed::Box<dyn error::Error>> {
|
||||
let host = env::var("DREF_REGISTRY").unwrap();
|
||||
let dclient = Client::configure()
|
||||
.insecure_registry(false)
|
||||
.registry(&host)
|
||||
.build()?;
|
||||
let manifest = dclient.get_manifest(image.as_str(), tag.as_str()).await.unwrap();
|
||||
Ok(manifest.architectures().unwrap())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue