diff --git a/flake.nix b/flake.nix index f6e01ce..585e15d 100644 --- a/flake.nix +++ b/flake.nix @@ -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" ]; diff --git a/src/css.rs b/src/css.rs index ceef226..2334bcb 100644 --- a/src/css.rs +++ b/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 { diff --git a/src/main.rs b/src/main.rs index e861939..7a6adde 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,6 +15,7 @@ struct Image { #[derive(Debug)] struct Tag { name: String, + architectures: Vec } #[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, boxed::Box>().await .into_iter() .map(Result::unwrap).collect::>(); - Ok(tags.into_iter().map(|t| Tag{name: t}).collect()) + let tags_complete: Vec = 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, boxed::Box> { + 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()) }