You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.6 KiB
87 lines
2.6 KiB
# Copyright 2022 Northern.tech AS
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
source modules/zip.sh
|
|
source modules/log.sh
|
|
|
|
# compression_type
|
|
#
|
|
# $1 - Path to the compressed disk image
|
|
#
|
|
# @return - The MENDER_COMPRESS_IMAGE compression type
|
|
#
|
|
function compression_type() {
|
|
if [[ $# -ne 1 ]]; then
|
|
log_fatal "compression_type() requires one argument"
|
|
fi
|
|
local -r disk_image="${1}"
|
|
case "${disk_image}" in
|
|
*.img | *.sdimg | *.wic | *.rpi-sdimg)
|
|
echo "none"
|
|
;;
|
|
*.gz)
|
|
echo "gzip"
|
|
;;
|
|
*.zip)
|
|
echo "zip"
|
|
;;
|
|
*.xz)
|
|
echo "lzma"
|
|
;;
|
|
*)
|
|
log_fatal "Unsupported compression type: ${disk_image}. Please uncompress the image yourself."
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Decompresses the given input image
|
|
#
|
|
# $1 - Path to the compressed image
|
|
# $2 - Path to the output directory
|
|
#
|
|
# @return - Name of the uncompressed image
|
|
#
|
|
function decompress_image() {
|
|
if [[ $# -ne 2 ]]; then
|
|
log_fatal "decompress_image() requires an image argument and an output directory"
|
|
fi
|
|
local -r input_image="${1}"
|
|
local -r output_dir="${2}"
|
|
local disk_image="${output_dir}/$(basename ${input_image})"
|
|
case "$(compression_type ${disk_image})" in
|
|
none)
|
|
:
|
|
;;
|
|
gzip)
|
|
log_info "Decompressing ${disk_image}..."
|
|
disk_image=${disk_image%.gz}
|
|
zcat "${input_image}" > "${disk_image}"
|
|
;;
|
|
zip)
|
|
log_info "Decompressing ${disk_image}..."
|
|
filename="$(zip_get_imgname ${input_image})"
|
|
unzip "${input_image}" -d "${output_dir}" &> /dev/null
|
|
disk_image="$(dirname ${disk_image})/${filename}"
|
|
;;
|
|
lzma)
|
|
log_info "Decompressing ${disk_image}..."
|
|
disk_image=${disk_image%.xz}
|
|
xzcat "${input_image}" > "${disk_image}"
|
|
;;
|
|
*)
|
|
log_fatal "Unsupported input image format: ${input_image}. We support: '.img', '.gz', '.zip', '.xz'."
|
|
;;
|
|
esac
|
|
echo "${disk_image}"
|
|
}
|
|
|