#!/bin/bash # shellcheck source=kz-common.sh ############################################################################### # Pakket kz distribueren. # # Geschreven door Karel Zimmer . ############################################################################### PROGRAM_PATH=$(realpath "$(dirname "$0")") readonly PROGRAM_PATH source "$PROGRAM_PATH"/kz-common.sh readonly PROGRAM_NAME='kz-deploy' readonly DISPLAY_NAME=${PROGRAM_NAME/kz-/kz } readonly RELEASE_YEAR=2009 ############################################################################### # Global constants ############################################################################### readonly OPTIONS_SHORT=$OPTIONS_SHORT_COMMON readonly OPTIONS_LONG=$OPTIONS_LONG_COMMON readonly USAGE="Gebruik: $DISPLAY_NAME $OPTIONS_USAGE_COMMON" readonly HELP="Gebruik: $DISPLAY_NAME [OPTIE...] Pakket kz distribueren. Opties: $OPTIONS_HELP_COMMON" readonly SCRIPTS_REPO=$HOME/kz-scripts readonly UPLOADS_REPO=$HOME/kz-uploads readonly UPLOADS_DISTDIR=$UPLOADS_REPO/dist ############################################################################### # Global variables ############################################################################### ############################################################################### # Functions ############################################################################### function check_input { local full_name='' local -i getopt_rc=0 local parsed='' parsed=$( getopt --alternative \ --options "$OPTIONS_SHORT" \ --longoptions "$OPTIONS_LONG" \ --name "$DISPLAY_NAME" \ -- "$@" ) || getopt_rc=$? if [[ $getopt_rc -ne $SUCCESS ]]; then process_usage NOERROR=true exit $ERROR fi eval set -- "$parsed" process_common_options "$@" while true; do case $1 in --) shift break ;; *) shift ;; esac done if [[ "$*" ]]; then info 'Geen argumenten toegestaan.' process_usage NOERROR=true exit $ERROR fi # Aangemeld als ontwikkelaar? full_name=$( getent passwd karel | cut --delimiter=':' --fields=5 | cut --delimiter=',' --fields=1 || true ) if [[ $HOSTNAME == pc?? && ($USER = karel && $full_name = 'Karel Zimmer') ]]; then : else info 'Uitvoeren als ontwikkelaar.' NOERROR=true exit $ERROR fi check_user_root } function process_input { check_names check_scripts build_package upload_website install_package } function check_names { local -i check_rc=0 local deb_repo=$HOME/kz-deb local docs_repo=$HOME/kz-docs local uploads_repo=$HOME/kz-uploads/app info 'Controleer bestandsnamen (kz ckname)...' log "Check filenames with 'kz ckname'." "$SCRIPTS_REPO"/kz ckname "$SCRIPTS_REPO" \ "$docs_repo" \ "$deb_repo" \ "$uploads_repo" || check_rc=$? if [[ $check_rc -ne $SUCCESS ]]; then error ' Herstel alle meldingen hierboven en start daarna opnieuw.' exit $check_rc fi } function check_scripts { local -i check_rc=0 info 'Controleer scripts (kz ivp)...' log "Check scripts with 'kz ivp'." "$SCRIPTS_REPO"/kz ivp || check_rc=$? if [[ $check_rc -ne $SUCCESS ]]; then error ' Herstel alle meldingen hierboven en start daarna opnieuw.' exit $check_rc fi } function build_package { local -i check_rc=0 info 'Bouw website en pakket (kz build)...' log "Build package with 'kz build'." "$SCRIPTS_REPO"/kz build || check_rc=$? if [[ $check_rc -ne $SUCCESS ]]; then error ' Herstel alle meldingen hierboven en start daarna opnieuw.' exit $check_rc fi } function upload_website { local ftp_set='set ssl:verify-certificate no' local ftp_from=$UPLOADS_DISTDIR local ftp_to=/httpdocs local ftp_opts='--reverse --delete --verbose' local ftp_cmd="mirror $ftp_opts $ftp_from $ftp_to; exit" local ftp_host=server106.hosting2go.nl local ftp_user=kzimmer local ftp_login=$HOME/.kz-$ftp_host info 'Upload website (lftp)...' if ! [[ -f $ftp_login ]]; then read -rsp "FTP-wachtwoord voor $ftp_host: " info "$REPLY" > "$ftp_login" printf '\n' chmod 'u=rw,g=,o=' "$ftp_login" |& $LOGCMD fi if ! lftp --user "$ftp_user" \ --password "$(cat "$ftp_login")" \ -e "$ftp_set; $ftp_cmd" \ "$ftp_host" |& $LOGCMD; then rm "$ftp_login" error 'Uploaden website is mislukt.' info 'Controleer de log...!' exit $ERROR fi sleep 5 } function install_package { info 'Installeer pakket kz (kz getdeb)...' # Constructie '2> >($LOGCMD)' om stderr naar de log te krijgen. if ! wget -O- karelzimmer.nl/kz 2> >($LOGCMD) | bash; then error 'Installeren pakket kz is niet uitgevoerd.' info 'Controleer de log...!' exit $ERROR fi } function term_script { exit $SUCCESS } ############################################################################### # Script ############################################################################### function main { init_script "$@" check_input "$@" process_input term_script } main "$@"