#!/bin/bash
# SPDX-License-Identifier: MulanPSL-2.0+
# Copyright (c) 2020 Huawei Technologies Co., Ltd. All rights reserved.

# This script requires root permission to run.
# Origin script:
# https://gitee.com/tinylab/linux-lab/blob/master/tools/root/docker/extract.sh

image=$1
arch="$(uname -m)"
rootdir="./$(echo "$image" | sed 's/[^a-zA-Z0-9_]/-/g')"
image_name="$(echo "$image" | cut -d '/' -f 2 | cut -d ':' -f 1)-$arch.cgz"

if [ $UID -ne 0 ]; then
	 echo "Please run with root user"
	 exit 1
fi

if [ -z "$image" ]; then
	 echo "Usage: $0 image"
	 exit 2
fi

echo "LOG: Now install docker"

if  command -v docker >/dev/null; then
	true
else
	if  command -v yum >/dev/null; then
		yum -y repolist
		yum -y install docker
	fi

	if command -v apt-get >/dev/null; then
		apt-get -y update
		apt-get -y install docker.io
	fi
fi

echo "LOG: Pulling $image"
docker pull "$image" || exit 3

echo "LOG: Running $image"
id=$(docker run -d "$image")

echo "LOG: Creating temporary rootdir: $rootdir"
mkdir -p "$rootdir"

echo "LOG: Extract docker image to $rootdir"
docker cp -a "$id":/ "$rootdir"/

# echo "LOG: Removing docker container"
# docker rm -f "$id"

# echo "LOG: Removing docker image"
# docker image rm -f "$image"

echo "LOG: Package rootfs"
cd "$rootdir" || exit 4
find . | cpio -o -Hnewc | gzip -9 > ../"$image_name"
echo "Package: $(realpath ../"$image_name")"
