@@ -10,35 +10,30 @@ use clap::Parser;
1010
1111use crate :: docker_client:: DockerClient ;
1212
13+ #[ cfg_attr( not( windows) , path = "unix.rs" ) ]
14+ #[ cfg_attr( windows, path = "windows.rs" ) ]
15+ mod os_specific;
16+
1317fn main ( ) {
1418 let cli = Cli :: parse ( ) ;
1519
16- let dockerfile: & [ u8 ] ;
17- let user_id: Option < u32 > ;
18- let group_id: Option < u32 > ;
19-
20- if cfg ! ( windows) {
21- user_id = None ;
22- group_id = None ;
23- dockerfile = include_bytes ! ( "../Dockerfile.windows" ) ;
24- } else {
25- user_id = Some ( users:: get_current_uid ( ) ) ;
26- group_id = Some ( users:: get_current_gid ( ) ) ;
27- dockerfile = include_bytes ! ( "../Dockerfile" ) ;
28- }
29-
3020 let ruby_version = cli. ruby_version ;
3121 let rails_version = cli. rails_version ;
3222
3323 // Run docker build --build-arg RUBY_VERSION=$RUBY_VERSION --build-arg RAILS_VERSION=$RAILS_VERSION -t rails-new-$RUBY_VERSION-$RAILS_VERSION
3424 // passing the content of DOCKERFILE to the command stdin
35- let mut child = DockerClient :: build_image ( & ruby_version, & rails_version, user_id, group_id)
36- . spawn ( )
37- . expect ( "Failed to execute process" ) ;
25+ let mut child = DockerClient :: build_image (
26+ & ruby_version,
27+ & rails_version,
28+ os_specific:: get_user_id ( ) ,
29+ os_specific:: get_group_id ( ) ,
30+ )
31+ . spawn ( )
32+ . expect ( "Failed to execute process" ) ;
3833
3934 let mut stdin = child. stdin . take ( ) . expect ( "Failed to open stdin" ) ;
4035 std:: thread:: spawn ( move || {
41- stdin. write_all ( dockerfile ) . unwrap ( ) ;
36+ stdin. write_all ( os_specific :: dockerfile_content ( ) ) . unwrap ( ) ;
4237 } ) ;
4338
4439 let status = child. wait ( ) . expect ( "failed to wait on child" ) ;
0 commit comments