#!/usr/bin/env perl

#---------------------------------------------------------------------

use strict ;
use Carp   ;

#---------------------------------------------------------------------

sub Main
{
    my $HOME = $ENV {'HOME'     };
    my $PT   = $ENV {'PRODTREE' };
    die unless defined ($HOME) && length ($HOME) && -d $HOME ;
    die unless defined ($PT  ) && length ($PT  ) && -d $PT   ;

    my $HDOCKER = "$HOME/.docker"        ;
    my $CLIDIR  = "$HDOCKER/cli-plugins" ;
    my $SBINDIR = "$PT/docker/sbin"      ;

    system "mkdir -p $CLIDIR" unless -d $CLIDIR;
    die unless -d $CLIDIR;

    system "ln -nsf $SBINDIR/docker-buildx $CLIDIR/";
    die unless -f   "$CLIDIR/docker-buildx";

#---------------------------------------------------------------------

# This part needs to be executed  at least once as "root"  before this
# script will work for other users. Therefore, to be safe, this script
# should be executed when the "docker" binaries are built  [presumably
# by "root"] and possibly also at boot time.

    my $DJSON = "/etc/docker/daemon.json";

    if (!-f $DJSON)
    {                           # This only works as "root"
        system "mkdir -p /etc/docker";
        open (OFD, ">$DJSON") || die;
        select OFD;
        print << 'END';
{        
    "exec-opts": ["native.cgroupdriver=cgroupfs"]
}
END
        close (OFD) || die;
        select STDOUT;
    }

#---------------------------------------------------------------------

    exec "$SBINDIR/docker-linux-amd64", @ARGV;
}

#---------------------------------------------------------------------

&Main();
