ghfetch icon indicating copy to clipboard operation
ghfetch copied to clipboard

[+] `--repo` flag to fetch Repository info

Open Azathothas opened this issue 1 year ago • 0 comments

Hi, a --repo flag would benefit this tool immensely, the api request would be similar. and the output (the default neofetch style) could be like this:

$ ghfetch --repo="mullvad/mullvadvpn-app"
#OR: 
$ ghfetch --repo="https://github.com/mullvad/mullvadvpn-app"

#Note, some of these were manually added since this repo I used as an example didn't have all the fields
..................................................
..................................................
.........................       ..................
....................... ..-===--..  ..............
......................--+########+=-  ............
................ ...-+@@=###########+. ...........
...................-=@@+=#############. ..........
...............--=+##+++##############+ ..........  Repo: mullvadvpn-app
.. =##++=++++++===---+################+ ..........  -------------
...-++++++++++++++++=--=##############- ..........  Name: mullvadvpn-app
.....-=+++++++++++++++=---+##########= ...........  Author: mullvad
.....-=+++++++++++++++=---+##########= ...........  Description: The Mullvad VPN client app for desktop and mobile 
.......=+++++++++++++++++=--==+#####= ............  Stars: 4995 ★
....... -=++++++++++++++++++==----=+. ............  Updated: 2024-09-26T11:09:18Z
........ .-=+++++++++++++++++++++==...............  Release: 2024-06-16T14:11:14Z
.......... .-=++++++++++=-==+++++++=..............  Version (Tag): v1.2.0
............  .++=====--==+++++++++=..............  Langauge: Rust,Swift,Kotlin
...............=+=====+++++++++++++=..............  License: GPL-3.0 license
...............=+=====+++++++++++++=..............  Issues (Open): 316
.............. -++++++++++++++++++++- ............  PR (Open): 25
.............. -++++++++++++++++++++- ............  Topics: vpn, privacy
.............. -++++++++++++++++++++- ............  -------------
..............=++++++++++++++++++++++-............████████████████████████
.............+++++++++++++++++++++++++=...........
.............-=+++++++++++++++++++++=-............
............. ..-==+++++++++++++==-.. ............
................  ...---------...  ...............
....................           ..........

The API, using curl looked somewhat like this:

#I copy pasted this from a script I was using, so I am sorry if this looks awful            
            
  REPO_NAME="$(echo ${REPO_URL} | sed 's|^https://github.com/||' | sed 's/\s//g' | sed 's/|//g' | tr -d '[:space:]')" && export REPO_NAME="${REPO_NAME}"
  REPO_METADATA="$(curl -qfsSL "https://api.github.com/repos/$REPO_NAME" -H "Authorization: Bearer $GITHUB_TOKEN" 2>/dev/null)" && export REPO_METADATA="$REPO_METADATA"
  RELEASE_METADATA="$(curl -qfsSL "https://api.github.com/repos/$REPO_NAME/releases/latest" -H "Authorization: Bearer $GITHUB_TOKEN" 2>/dev/null | jq '.assets=""')" && export RELEASE_METADATA="$RELEASE_METADATA"
 #Parse
  REPO_AUTHOR="$(echo $REPO_METADATA | jq -r '.owner.login')" && export REPO_AUTHOR="$REPO_AUTHOR"
  REPO_DESCRIPTION="$(echo $REPO_METADATA | jq -r '.description')" && export REPO_DESCRIPTION="$REPO_DESCRIPTION"
  REPO_LANGUAGE="$(echo $REPO_METADATA | jq -r '.language' )" && export REPO_LANGUAGE="$REPO_LANGUAGE"
  REPO_LICENSE="$(echo $REPO_METADATA | jq -r '.license.name')" && export REPO_LICENSE="$REPO_LICENSE"
  LAST_UPDATED="$(echo $REPO_METADATA | jq -r '.pushed_at')" && export LAST_UPDATED="$LAST_UPDATED"
 #If Releases don't exist, use tags
  if [ -z "$RELEASE_METADATA" ]; then
     PKG_VERSION="$(curl -qfsSL "https://api.github.com/repos/$REPO_NAME/tags" -H "Authorization: Bearer $GITHUB_TOKEN" 2>/dev/null | jq -r '.[0].name')" && export PKG_VERSION="$PKG_VERSION"
     PKG_RELEASED="$(curl -qfsSL "https://api.github.com/repos/$REPO_NAME/git/refs/tags/$PKG_VERSION" -H "Authorization: Bearer $GITHUB_TOKEN" 2>/dev/null | jq '.object.url' | xargs curl -qfsSL -H "Authorization: Bearer $GITHUB_TOKEN" 2>/dev/null | jq -r '.committer.date')" && export PKG_RELEASED="$PKG_RELEASED"
  else
     PKG_VERSION="$(echo $RELEASE_METADATA | jq -r '.tag_name' )" && export PKG_VERSION="$PKG_VERSION"
     PKG_RELEASED="$(echo $RELEASE_METADATA | jq -r '.published_at')" && export PKG_RELEASED="$PKG_RELEASED"
  fi
  REPO_STARS="$(echo $REPO_METADATA | jq -r '.stargazers_count')" && export REPO_STARS="$REPO_STARS"
  REPO_TOPICS="$(echo "$REPO_METADATA" | jq -c -r '.topics')" && export REPO_TOPICS="$REPO_TOPICS"

Azathothas avatar Oct 06 '24 02:10 Azathothas