From bce8cc6b95b639b0c59f61449fd1aba6b0f8c5ae Mon Sep 17 00:00:00 2001 From: typebrook Date: Fri, 13 Mar 2020 23:11:59 +0800 Subject: Refactor code for marking star/not-star gist --- gist | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/gist b/gist index ead8d3c..78dedcf 100755 --- a/gist +++ b/gist @@ -256,13 +256,11 @@ _show_list() { echo ' gist update' return 0 fi - local filter='/^ *s/ d; /^$/ d' - [[ $mark == 's' ]] && filter='/^ *[^ s]/ d; /^$/ d' - sed -e "$filter" $INDEX \ + local prefix=$mark; [[ -z $prefix ]] && prefix=[^s] + sed -Ene "/^$prefix/ p" $INDEX \ | while read -r index link blob_code file_num comment_num author description; do - [[ $mark == 's' ]] && local name=$author - #local repo; repo=$folder/$(echo $link | sed 's#.*/##') + [[ $index =~ ^s ]] && local name=$author local repo; repo=$folder/${link##*/} local extra; extra=$(_check_repo_status "$repo" "$blob_code") [[ -z $extra ]] && extra="$file_num $comment_num" @@ -278,7 +276,7 @@ _show_list() { # TODO support filenames, file contents _grep_content() { - _show_list | grep -i "$1" + hint=false mark=. _show_list | grep -Ei "^ *[^ ]+ [^ ]+ .*$1.*" } # Open Github repository import page @@ -315,8 +313,7 @@ _parse_response() { | tac | sed -e 's/, /,/g' | nl -s' ' \ | while read -r index link file_url_array public file_num comment_num author description; do local blob_code; blob_code=$(echo "$file_url_array" | tr ',' '\n' | sed -E -e 's#.*raw/(.*)/.*#\1#' | sort | cut -c -7 | paste -s -d '-' -) - local prefix=$mark - [[ $public == 'False' ]] && prefix=p + local prefix=$mark; [[ $public == 'False' ]] && prefix=p [[ -n $1 ]] && local index=$1 echo "$prefix$index $link $blob_code $file_num $comment_num $author $description" | tr -d '"' done @@ -329,17 +326,16 @@ _fetch_gists() { echo "fetching $user's gists from $GITHUB_API..." echo local route="users/$user/gists" - local filter='/^[^s]/ d; /^$/ d' if [[ $1 =~ ^(star|s)$ ]];then route='gists/starred' - local mark="s" - filter='/^[s]/ d; /^$/ d' + local mark=s fi result=$(http_method GET $GITHUB_API/$route?per_page=100 | mark=$mark _parse_response) [[ -z $result ]] && echo 'Not a single valid gist' && return 0 - sed -i'' -e "$filter" $INDEX && echo "$result" >> $INDEX + local prefix=$mark; [[ -z $prefix ]] && prefix=[^s] + sed -i'' -Ee "/^$prefix/ d" $INDEX && echo "$result" >> $INDEX mark=$mark _show_list [[ $auto_sync == 'true' ]] && (_sync_repos "$1" > /dev/null 2>&1 &) -- cgit v1.2.3-70-g09d2