manjaro-tools/lib/util-publish.sh

89 lines
2.6 KiB
Bash
Raw Normal View History

2015-11-12 19:03:21 +01:00
#!/bin/bash
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
2016-07-15 00:50:50 +02:00
connect(){
2018-04-15 15:59:44 +02:00
${alt_storage} && server="storage-in" || server="storage"
local storage="@${server}.osdn.net:/storage/groups/m/ma/"
2018-04-11 23:53:33 +02:00
echo "${account}${storage}${project}"
2016-07-15 00:50:50 +02:00
}
make_torrent(){
find ${src_dir} -type f -name "*.torrent" -delete
if [[ -n $(find ${src_dir} -type f -name "*.iso") ]]; then
2018-04-19 23:24:19 +02:00
for iso in $(ls ${src_dir}/*.iso); do
2018-04-15 12:19:15 +02:00
local seed=https://${host}/projects/${project}/storage/${profile}/${dist_release}/${iso##*/}
local mktorrent_args=(-c "${torrent_meta}" -p -l ${piece_size} -a ${tracker_url} -w ${seed})
${verbose} && mktorrent_args+=(-v)
msg2 "Creating (%s) ..." "${iso##*/}.torrent"
mktorrent ${mktorrent_args[*]} -o ${iso}.torrent ${iso}
done
fi
}
prepare_transfer(){
profile="$1"
2018-04-15 03:36:45 +02:00
hidden="$2"
2017-02-16 10:22:42 +01:00
edition=$(get_edition "${profile}")
[[ -z ${project} ]] && project="$(get_project)"
url=$(connect)
target_dir="${profile}/${dist_release}"
src_dir="${run_dir}/${edition}/${target_dir}"
2018-04-15 03:36:45 +02:00
${hidden} && target_dir="${profile}/.${dist_release}"
}
2018-04-15 20:10:20 +02:00
start_agent(){
msg2 "Initializing SSH agent..."
ssh-agent | sed 's/^echo/#echo/' > "$1"
chmod 600 "$1"
. "$1" > /dev/null
ssh-add
}
ssh_add(){
local ssh_env="$USER_HOME/.ssh/environment"
if [ -f "${ssh_env}" ]; then
. "${ssh_env}" > /dev/null
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent ${ssh_env};
}
else
start_agent ${ssh_env};
fi
}
sync_dir(){
2018-04-16 00:29:15 +02:00
count=1
max_count=10
2018-04-15 03:36:45 +02:00
prepare_transfer "$1" "${hidden}"
2018-04-15 17:02:39 +02:00
2018-04-15 17:28:48 +02:00
${torrent} && make_torrent
${sign} && signiso "${src_dir}"
2018-04-15 20:10:20 +02:00
${ssh_agent} && ssh_add
2018-04-15 17:02:39 +02:00
2018-04-14 20:11:30 +02:00
msg "Start upload [%s] to [%s] ..." "$1" "${project}"
2018-04-16 00:29:15 +02:00
while [[ $count -le $max_count ]]; do
rsync ${rsync_args[*]} ${src_dir}/ ${url}/${target_dir}/
2018-04-15 02:28:18 +02:00
if [[ $? != 0 ]]; then
2018-04-16 00:29:15 +02:00
count=$(($count + 1))
msg "Upload failed. retrying (%s/%s) ..." "$count" "$max_count"
2018-04-15 02:28:18 +02:00
sleep 2
else
2018-04-16 00:29:15 +02:00
count=$(($max_count + 1))
2018-04-15 02:28:18 +02:00
msg "Done upload [%s]" "$1"
show_elapsed_time "${FUNCNAME}" "${timer_start}"
fi
done
2015-11-12 19:03:21 +01:00
}