summaryrefslogtreecommitdiff
path: root/sysutils/gitwatch/files/patch-gitwatch.sh
blob: c4c88aeef64c9e238d3c4024692cd00b1d89e303 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
--- gitwatch.sh.orig	2020-11-15 05:05:21 UTC
+++ gitwatch.sh
@@ -43,6 +43,9 @@ COMMITMSG="Scripted auto-commit on change (%d) by gitw
 LISTCHANGES=-1
 LISTCHANGES_COLOR="--color=always"
 GIT_DIR=""
+GIT="$(which git)"
+INW="$(which inotifywait)";
+EVENTS="${EVENTS:-close_write,move,move_self,delete,create,modify}"
 
 # Print a message about how to use this script
 shelp () {
@@ -97,12 +100,6 @@ shelp () {
     echo "It is therefore recommended to terminate the script before changing the repo's"
     echo "config and restarting it afterwards."
     echo ""
-    echo "By default, gitwatch tries to use the binaries \"git\" and \"inotifywait\","
-    echo "expecting to find them in the PATH (it uses 'which' to check this and  will"
-    echo "abort with an error if they cannot be found). If you want to use binaries"
-    echo "that are named differently and/or located outside of your PATH, you can define"
-    echo "replacements in the environment variables GW_GIT_BIN and GW_INW_BIN for git"
-    echo "and inotifywait, respectively."
 }
 
 # print all arguments to stderr
@@ -118,11 +115,6 @@ cleanup () {
     exit 0
 }
 
-# Tests for the availability of a command
-is_command () {
-	hash "$1" 2>/dev/null
-}
-
 ###############################################################################
 
 while getopts b:d:h:g:L:l:m:p:r:s:e: option # Process command line options
@@ -149,65 +141,20 @@ if [ $# -ne 1 ]; then # If no command line arguments a
     exit # and exit
 fi
 
-# if custom bin names are given for git or inotifywait, use those; otherwise fall back to "git" and "inotifywait"
-if [ -z "$GW_GIT_BIN" ]; then GIT="git"; else GIT="$GW_GIT_BIN"; fi
-
-if [ -z "$GW_INW_BIN" ]; then
-    # if Mac, use fswatch
-    if [ "$(uname)" != "Darwin" ]; then
-        INW="inotifywait";
-        EVENTS="${EVENTS:-close_write,move,move_self,delete,create,modify}"
-    else
-        INW="fswatch";
-        # default events specified via a mask, see
-        # https://emcrisostomo.github.io/fswatch/doc/1.14.0/fswatch.html/Invoking-fswatch.html#Numeric-Event-Flags
-        # default of 414 = MovedTo + MovedFrom + Renamed + Removed + Updated + Created
-        #                = 256 + 128+ 16 + 8 + 4 + 2
-        EVENTS="${EVENTS:---event=414}"
-    fi;
-else
-    INW="$GW_INW_BIN";
-fi
-
-# Check availability of selected binaries and die if not met
-for cmd in "$GIT" "$INW"; do
-	is_command "$cmd" || { stderr "Error: Required command '$cmd' not found." ; exit 1; }
-done
-unset cmd
-
 ###############################################################################
 
 SLEEP_PID="" # pid of timeout subprocess
 
 trap "cleanup" EXIT # make sure the timeout is killed when exiting script
 
-
 # Expand the path to the target to absolute path
-if [ "$(uname)" != "Darwin" ]; then
-    IN=$(readlink -f "$1")
-else
-    if is_command "greadlink"; then
-      IN=$(greadlink -f "$1")
-    else
-      IN=$(readlink -f "$1")
-      if [ $? -eq 1 ]; then
-        echo "Seems like your readlink doesn't support '-f'. Running without. Please 'brew install coreutils'."
-        IN=$(readlink "$1")
-      fi
-    fi;
-fi;
+IN=$(readlink -f "$1")
 
-
 if [ -d "$1" ]; then # if the target is a directory
 
     TARGETDIR=$(sed -e "s/\/*$//" <<<"$IN") # dir to CD into before using git commands: trim trailing slash, if any
     # construct inotifywait-commandline
-    if [ "$(uname)" != "Darwin" ]; then
-        INW_ARGS=("-qmr" "-e" "$EVENTS" "--exclude" "'(\.git/|\.git$)'" "\"$TARGETDIR\"")
-    else
-        # still need to fix EVENTS since it wants them listed one-by-one
-        INW_ARGS=("--recursive" "$EVENTS" "--exclude" "'(\.git/|\.git$)'" "\"$TARGETDIR\"")
-    fi;
+    INW_ARGS=("-qmr" "-e" "$EVENTS" "--exclude" "'(\.git/|\.git$)'" "\"$TARGETDIR\"")
     GIT_ADD_ARGS="--all ." # add "." (CWD) recursively to index
     GIT_COMMIT_ARGS="" # add -a switch to "commit" call just to be sure
 
@@ -215,11 +162,7 @@ elif [ -f "$1" ]; then # if the target is a single fil
 
     TARGETDIR=$(dirname "$IN") # dir to CD into before using git commands: extract from file name
     # construct inotifywait-commandline
-    if [ "$(uname)" != "Darwin" ]; then
-        INW_ARGS=("-qm" "-e" "$EVENTS" "$IN")
-    else
-        INW_ARGS=("$EVENTS" "$IN")
-    fi
+    INW_ARGS=("-qm" "-e" "$EVENTS" "$IN")
 
     GIT_ADD_ARGS="$IN" # add only the selected file to index
     GIT_COMMIT_ARGS="" # no need to add anything more to "commit" call
@@ -260,6 +203,8 @@ if [ -n "$REMOTE" ]; then # are we pushing to a remote
             PUSH_CMD="$GIT push $REMOTE $BRANCH"
         fi
     fi
+elif [ -n $($GIT config --get remote.origin.url) ] ; then
+	PUSH_CMD="$GIT push"
 else
     PUSH_CMD="" # if not remote is selected, make sure push command is empty
 fi