dam/src/cmd_update
ayakael 72aac8134f
Deprecations in favour of changes in deployment workflow:
[is_selected] Deprecated (and exterminated)
[deploy_imageid] Deprecated in favor of deploy_cp, deploy_rm and deploy_meta
[deploy_trackid] Deprecated in favor of deploy_cp, deploy_rm and deploy_meta

Misc changes and bugfixes for print functions
[print_future_path] In the event that TITLE is not set, TITLE will now be ALBUM, for tracks without titles.
[print_meta_flac] Track TITLES with colons are now kept
[print_present_path] Now needs IMAGEID and TRACKID in argument for TRACKID wasn't unique enough
[print_trackids_to_imageids] Prints the IMAGEIDs of all TRACKIDs

New functions for new deployment workflow that allows for deletion first, copying later, and smarter metadata adjustments
[deploy_rm] Removes all given TRACKIDs (i.e, what FILE_DB defines as false, but target_dir is not null)
[deploy_cp] Function copies TRACKIDs on a IMAGEID by IMAGEID basis to TARGET
[deploy_meta] Function applies metadata to IMAGEID tracks
[cmd_deploy] Rewrote cmd_deploy for use of new deploy functions

Bug fixes to db selections and db update
[db_set] Now ignores all lines that have LAST_DEPLOY and LAST_UPDATE
[db_update] Added function to report a file as removed from git dir. (null in selection column)
[cmd_update] LAST_COMMIT is now LAST_UPDATE in favour of LAST_DEPLOY, which is for commit of when last deployment occured
[cmd_update] Gawk is now used for inplace editing of database

Misc. adjustements
[cmd_deploy] Rewrote disk usage check
2018-04-06 18:55:34 -04:00

34 lines
1.4 KiB
Bash

#!/bin/bash
# doc cmd_update{
#
# DESCRIPTION
# cmd_update - Updates database of TARGET from git HEAD to last commit hash.
#
# USAGE
# cmd_update </path/to/git/dir> </path/to/target/dir>
#
# }
cmd_update() {
local GIT_DIR="${1}"
local TARGET="${2}"
local DB_FILE="${TARGET}/${_OPT_DB_FILE}"
# In the event that LAST_COMMIT OR DB_FILE does not exist, echo out that the LAST_COMMIT
# is the first COMMIT of GIT_DIR, thus stating that no database update has ever occured
if [[ -z "$(grep LAST_UPDATE ${DB_FILE})" ]]; then
echo -e "LAST_UPDATE\t$(git -C "${GIT_DIR}" rev-list HEAD | tail -n 1)" >> ${DB_FILE}
fi
# Defines what imageids needs updating by determining what files has changed since last
# update via git diff --name-only.
local NEW_COMMIT=$(git -C "${GIT_DIR}" rev-parse HEAD)
local OLD_COMMIT=$(awk 'BEGIN{FS="\t"}{if($1=="LAST_UPDATE"){print $2}}' ${DB_FILE})
local imageidList=($(sed 's/\(.*\)\..*/\1/' <<< $(git -C "${GIT_DIR}" diff --name-only ${NEW_COMMIT} ${OLD_COMMIT}) | awk '!seen[$0]++' | grep SHA256))
_msg EXEC "Updating database from ${OLD_COMMIT} to ${NEW_COMMIT}"
db_update "${GIT_DIR}" "${TARGET}" "${DB_FILE}" ${imageidList[@]}
[[ $? -ne 0 ]] && { _msg WARN; local ERR=true; } || _msg OK
[[ ${ERR} ]] && return 1 || { gawk -i inplace -v newcommit=${NEW_COMMIT} 'BEGIN{FS="\t";OFS="\t"}{if($1=="LAST_UPDATE"){$2=newcommit}{print $0}}' ${DB_FILE}; return 0; }
}