From: Ian Kelling Date: Sat, 31 Oct 2020 22:04:53 +0000 (-0400) Subject: indent and fix logic for printing output X-Git-Url: https://iankelling.org/git/?a=commitdiff_plain;h=a6992c8fdacb3db1bd68b782a8f301f50629e620;p=cedit indent and fix logic for printing output --- diff --git a/cedit b/cedit index 9d37b55..60bb471 100755 --- a/cedit +++ b/cedit @@ -14,7 +14,7 @@ # limitations under the License. cedit() { - local help="Usage: [-h|--help ] [-v] [SECTION_NAME] FILE + local help="Usage: [-h|--help ] [-v] [SECTION_NAME] FILE Create/modify a section in a config file Returns 1 if the file is modified by this command, 2 or higher @@ -27,101 +27,99 @@ section. cedit is short for config edit. -v Verbose -b Keep backup file -h|--help Help" - local s diff name init - local file_dir="$(dirname "$file")" - local exists=true - local verbose=false - local backup=false - - case $1 in - -b) backup=true; shift ;; - -v) verbose=true; shift ;; - -h|--help) echo "$help"; return ;; - esac - - if (( $# == 2 )); then - name=": $1" - shift + local s diff name init + local file_dir="$(dirname "$file")" + local exists=true + local verbose=false + local backup=false + + case $1 in + -b) backup=true; shift ;; + -v) verbose=true; shift ;; + -h|--help) echo "$help"; return ;; + esac + + if (( $# == 2 )); then + name=": $1" + shift + fi + + local file="$1" + local file_name="${file##*/}" + + local begin="#_#_# start delimiter of cedit section$name. do not modify. #_#_#" + local end="#_#_# end delimiter of cedit section$name. do not modify. #_#_#" + + if [[ ! -e $file_dir ]]; then + if ! mkdir -p $file_dir; then + s=sudo + $s mkdir -p $file_dir || return 2 fi - - local file="$1" - local file_name="${file##*/}" - - local begin="#_#_# start delimiter of cedit section$name. do not modify. #_#_#" - local end="#_#_# end delimiter of cedit section$name. do not modify. #_#_#" - - if [[ ! -e $file_dir ]]; then - if ! mkdir -p $file_dir; then - s=sudo - $s mkdir -p $file_dir || return 2 - fi - fi - if [[ ! -e $file ]]; then - exists=false - if ! $s touch $file; then - s=sudo - $s touch $file || return 2 - fi + fi + if [[ ! -e $file ]]; then + exists=false + if ! $s touch $file; then + s=sudo + $s touch $file || return 2 fi - - [[ -w $file ]] || s=sudo - - - if $exists; then - local temp="$(mktemp -d)/$file_name" - cp "$file" "$temp" - cp /dev/null "$file" - local in_section=false - while IFS= read -r line; do - if [[ $line == $begin ]]; then - in_section=true; - fi - if ! $in_section; then - printf '%s\n' "$line" >> $file - fi - if [[ $line == $end ]]; then - in_section=false; - fi - done < "$temp" - fi - - IFS= read -d '' -n 1 -r init - if [[ $init ]]; then - $s tee -a "$file" >/dev/null <<<"$begin" - printf '%s' "$init" | $s tee -a "$file" >/dev/null - $s tee -a "$file" >/dev/null - $s tee -a "$file" >/dev/null <<<"$end" + fi + + [[ -w $file ]] || s=sudo + + + if $exists; then + local temp="$(mktemp -d)/$file_name" + cp "$file" "$temp" + cp /dev/null "$file" + local in_section=false + while IFS= read -r line; do + if [[ $line == $begin ]]; then + in_section=true; + fi + if ! $in_section; then + printf '%s\n' "$line" >> $file + fi + if [[ $line == $end ]]; then + in_section=false; + fi + done < "$temp" + fi + + IFS= read -d '' -n 1 -r init + if [[ $init ]]; then + $s tee -a "$file" >/dev/null <<<"$begin" + printf '%s' "$init" | $s tee -a "$file" >/dev/null + $s tee -a "$file" >/dev/null + $s tee -a "$file" >/dev/null <<<"$end" + fi + + if ! $exists; then + ret=1 + if $verbose; then + echo "New file $file:" + cat "$file" fi - - if ! $exists; then - ret=1 - if $verbose; then - echo "New file $file:" - cat "$file" - fi - elif type -t diff &>/dev/null; then - diff=$(diff -u "$temp" "$file") - ret=$? - if $verbose; then - if (( $ret == 0 )); then - echo "No changes made to $file" - fi - else - echo "backup of original at $temp" - echo diff -u "$temp" "$file": - echo "$diff" - fi - else - # for systems like openwrt which don't have diff - diff=$(cmp "$temp" "$file") - ret=$? - if $verbose; then - echo "$diff" - fi + elif type -t diff &>/dev/null; then + diff=$(diff -u "$temp" "$file") + ret=$? + if (( $ret )); then + echo "backup of original at $temp" + echo diff -u "$temp" "$file": + echo "$diff" + elif $verbose; then + echo "No changes made to $file" fi - if ! $backup; then - rm -r $"$temp" + else + # for systems like openwrt which don't have diff + diff=$(cmp "$temp" "$file") + ret=$? + if $verbose; then + echo "$diff" fi - return $ret + fi + if ! $backup; then + rm -r $"$temp" + fi + return $ret } cedit "$@"