1+ use crate :: fakers:: {
2+ Child , Command , CommandRunner , FdMode , InnerCommandRunner , NullCommandRunnerBuilder ,
3+ } ;
14use std:: {
2- cell:: LazyCell , collections:: BTreeMap , future:: Future , io, path:: { Path , PathBuf } , pin:: Pin , process:: Output , rc:: Rc , str:: FromStr
5+ cell:: LazyCell ,
6+ collections:: BTreeMap ,
7+ future:: Future ,
8+ io,
9+ path:: { Path , PathBuf } ,
10+ pin:: Pin ,
11+ process:: Output ,
12+ rc:: Rc ,
13+ str:: FromStr ,
314} ;
415use tracing:: { debug, error, info, warn} ;
5- use crate :: fakers:: { CommandRunner , NullCommandRunnerBuilder , Command , Child , InnerCommandRunner , FdMode } ;
616
717mod desktop_file;
818
919pub use desktop_file:: * ;
1020
11-
1221#[ derive( Clone ) ]
1322pub struct FlatpakCommandRunner {
1423 pub command_runner : Rc < dyn InnerCommandRunner > ,
@@ -40,7 +49,6 @@ impl InnerCommandRunner for FlatpakCommandRunner {
4049 }
4150}
4251
43-
4452pub struct Distrobox {
4553 cmd_runner : CommandRunner ,
4654}
@@ -468,14 +476,10 @@ impl DistroboxCommandRunnerResponse {
468476
469477impl Distrobox {
470478 pub fn new ( cmd_runner : CommandRunner ) -> Self {
471- Self {
472- cmd_runner,
473- }
479+ Self { cmd_runner }
474480 }
475481
476- pub fn null_command_runner (
477- responses : & [ DistroboxCommandRunnerResponse ] ,
478- ) -> CommandRunner {
482+ pub fn null_command_runner ( responses : & [ DistroboxCommandRunnerResponse ] ) -> CommandRunner {
479483 let mut builder = NullCommandRunnerBuilder :: new ( ) ;
480484 for res in responses {
481485 for ( cmd, out) in res. clone ( ) . to_commands ( ) {
@@ -700,7 +704,10 @@ impl Distrobox {
700704 ) ) ;
701705 }
702706 let mut cmd = dbcmd ( ) ;
703- cmd. arg ( "assemble" ) . arg ( "create" ) . arg ( "--file" ) . arg ( file_path) ;
707+ cmd. arg ( "assemble" )
708+ . arg ( "create" )
709+ . arg ( "--file" )
710+ . arg ( file_path) ;
704711 self . cmd_spawn ( cmd)
705712 }
706713
@@ -726,7 +733,9 @@ impl Distrobox {
726733 cmd. arg ( "--name" ) . arg ( args. name . 0 ) ;
727734 }
728735 if args. init {
729- cmd. arg ( "--init" ) ;
736+ cmd. arg ( "--init" )
737+ . arg ( "--additional-packages" )
738+ . arg ( "systemd" ) ;
730739 }
731740 if args. nvidia {
732741 cmd. arg ( "--nvidia" ) ;
@@ -883,12 +892,15 @@ d24405b14180 | ubuntu | Created | ghcr.io/ublue-os/ubun
883892 ) ;
884893 assert_eq ! (
885894 db. list( ) . await ?,
886- BTreeMap :: from_iter( [ ( "ubuntu" . into( ) , ContainerInfo {
887- id: "d24405b14180" . into( ) ,
888- name: "ubuntu" . into( ) ,
889- status: Status :: Created ( "" . into( ) ) ,
890- image: "ghcr.io/ublue-os/ubuntu-toolbox:latest" . into( ) ,
891- } ) ] )
895+ BTreeMap :: from_iter( [ (
896+ "ubuntu" . into( ) ,
897+ ContainerInfo {
898+ id: "d24405b14180" . into( ) ,
899+ name: "ubuntu" . into( ) ,
900+ status: Status :: Created ( "" . into( ) ) ,
901+ image: "ghcr.io/ublue-os/ubuntu-toolbox:latest" . into( ) ,
902+ }
903+ ) ] )
892904 ) ;
893905 Ok ( ( ) )
894906 } )
@@ -986,8 +998,11 @@ Categories=Utility;Network;
986998 ..Default :: default ( )
987999 } ;
9881000 smol:: block_on ( db. create ( args) ) ?;
989- let expected = "distrobox create --yes --image docker.io/library/ubuntu:latest --init --nvidia --home /home/me --volume /mnt/sdb1:/mnt/sdb1 --volume /mnt/sdb4:/mnt/sdb4:ro" ;
990- assert_eq ! ( output_tracker. items( ) [ 0 ] . command( ) . unwrap( ) . to_string( ) , expected) ;
1001+ let expected = "distrobox create --yes --image docker.io/library/ubuntu:latest --init --additional-packages systemd --nvidia --home /home/me --volume /mnt/sdb1:/mnt/sdb1 --volume /mnt/sdb4:/mnt/sdb4:ro" ;
1002+ assert_eq ! (
1003+ output_tracker. items( ) [ 0 ] . command( ) . unwrap( ) . to_string( ) ,
1004+ expected
1005+ ) ;
9911006 Ok ( ( ) )
9921007 }
9931008 #[ test]
0 commit comments