A GitHub CLI extension that displays collaboration-related information about a GitHub repository.

collab-scanner GitHub CLI extension

A GitHub CLI extension that displays collaboration-related information on a repository.

collab-scanner

Install

gh extension install nicokosi/gh-collab-scanner

Use

From a folder where a GitHub repository has been cloned:

gh collab-scanner

will display something like:

(current repo) Repo nicokosi/gh-collab-scanner has: description ☑️ , README ☑️ , topics ☑️ , 1 collaborator 👤 , community profile score: 33 💯

For any GitHub repository, via its full name ${org}/${repo} (i.e. python/peps):

gh collab-scanner --repo python/peps

will display something like:

Repo python/peps has: description ☑️ , README ☑️ , no topics 😇 , community profile score: 71 💯

Need help? Run:

gh-collab-scanner --help

Develop

Build from source code ▶️

Build then run:

go build && ./gh-collab-scanner

Install from source code

Install and run:

gh extension install .; gh collab-scanner

Examine code 🔍

go vet

Run tests ☑️

go test -v -cover

Release 📦

Check the current version:

gh release view | head -n 2

Then create a tag for the next version with respect with semver:

git tag ${version}
git push origin ${version}
Owner
Nicolas Kosinski
Java developer, Scala/Clojure/Go/Rust rookie. PS: I ❤️ emojis!
Nicolas Kosinski
Comments
  • Fix the `community profile score` issue for forked repositories:  `HTTP 404: Not Found` 🐛

    Fix the `community profile score` issue for forked repositories: `HTTP 404: Not Found` 🐛

    For instance, with collab-scanner v1.0.5:

    gh collab-scanner --repo nicokosi/gilded-rose-kata
    README ☑️, no topics 😇, 1 collaborator 👤, HTTP 404: Not Found (https://api.github.com/repos/nicokosi/gilded-rose-kata/community/profile)
    
  • Current repository not detected if `gh auth` is not configured for `ssh`: `unable to determine current repository, none of the git remotes configured for this repository point to a known GitHub host`

    Current repository not detected if `gh auth` is not configured for `ssh`: `unable to determine current repository, none of the git remotes configured for this repository point to a known GitHub host`

    gh collab-scanner v1.0.3 (see fix d6f96dea850dd02d1421d43cb893586a4cffa041) issues this failure on my Ubuntu machine:

    $ gh collab-scanner --verbose                                                                                                                                                            
    (current repo)
    unable to determine current repository, none of the git remotes configured for this repository point to a known GitHub host
    
    $ pwd
    /home/nkosinski/work/gocode/gh-collab-scanner
    
    $ git config --local --list | grep "^remote."                                                                                                                                             
    [email protected]:nicokosi/gh-collab-scanner.git
    remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
    
    $ lsb_release -d
    Description:	Ubuntu 20.04.4 LTS
    
    $ gh version
    gh version 2.5.2 (2022-03-01)
    https://github.com/cli/cli/releases/tag/v2.5.2
    

    PS: it works OK on my other machine (macOS).

  • Fails `panic: runtime error: invalid memory address or nil pointer dereference` on Ubuntu :boom:

    Fails `panic: runtime error: invalid memory address or nil pointer dereference` on Ubuntu :boom:

    gh collab-scanner v1.0.1 fails when launched from a cloned repository, on my Ubuntu machine:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x6c5680]
    
    goroutine 1 [running]:
    main.getRepo(0x0, 0x0, 0x7f7aaddad100, 0x168, 0x915ec0)
    	/home/runner/work/gh-collab-scanner/gh-collab-scanner/main.go:62 +0x60
    main.main()
    	/home/runner/work/gh-collab-scanner/gh-collab-scanner/main.go:39 +0x65
    
    lsb_release -d
    Description:	Ubuntu 20.04.4 LTS
    
  • Update module github.com/cli/go-gh to v1

    Update module github.com/cli/go-gh to v1

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/cli/go-gh | require | major | v0.1.2 -> v1.0.0 |


    Release Notes

    cli/go-gh

    v1.0.0: go-gh 1.0.0

    Compare Source

    What's Changed

    New Contributors

    Full Changelog: https://github.com/cli/go-gh/compare/v0.1.2...v1.0.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

  • Update module github.com/cli/go-gh to v0.1.0

    Update module github.com/cli/go-gh to v0.1.0

    Mend Renovate

    This PR contains the following updates:

    | Package | Type | Update | Change | |---|---|---|---| | github.com/cli/go-gh | require | minor | v0.0.3 -> v0.1.0 |


    Release Notes

    cli/go-gh

    v0.1.0

    Compare Source

    New features

    What's Changed

    New Contributors

    Full Changelog: https://github.com/cli/go-gh/compare/v0.0.3...v0.1.0


    Configuration

    📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

    Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    🔕 Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, click this checkbox.

    This PR has been generated by Mend Renovate. View repository job log here.

  • Missing repository names when using the `--org` flag

    Missing repository names when using the `--org` flag

    For instance, the command gh collab-scanner --org softwarevidal displays:

    README ☑️, topics ☑️, 30 collaborators 👥
    no README 😇, topics ☑️, 30 collaborators 👥
    README ☑️, no topics 😇, 14 collaborators 👥
    README ☑️, no topics 😇, 30 collaborators 👥
    no README 😇, no topics 😇, 16 collaborators 
    
    gh collab-scanner --version
    
    Commit 08f779b43853bc8f422bedcbbdb205e433d4f47c (2022-04-04 04:51:12 +0000 UTC) (dirty)
    
  • Repository no detected from current folder `gh collab-scanner`

    Repository no detected from current folder `gh collab-scanner`

    With v1.2.2:

    $ pwd
    /Users/nicolas/work/gh-collab-scanner
    $ gh collab-scanner
    $
    

    Seems to be a regression from https://github.com/nicokosi/gh-collab-scanner/commit/a1ffb2f72aba12af596ff138d07a81a1ae8eff14. 😇

  • Use Go 1.18 🎉

    Use Go 1.18 🎉

    Go 1.18 has been released on 2022/03/15 (see release history). Let's keep up-to-date! 🎉

    PS: have a look at this paragraph:

    go version

    The go command now embeds version control information in binaries. It includes the currently checked-out revision, commit time, and a flag indicating whether edited or untracked files are present. Version control information is embedded if the go command is invoked in a directory within a Git, Mercurial, Fossil, or Bazaar repository, and the main package and its containing main module are in the same repository. This information may be omitted using the flag -buildvcs=false.

  • Scan all repositories from a user

    Scan all repositories from a user

    For instance, the following command:

    gh collab-scanner --user torvalds
    

    could scan all organization's repositories (via the GitHub /users/{org}/repos API) and output:

    torvalds/.github: README ☑️...
    torvalds/linux: README ☑️...
    # and so on...
    
  • Scan all repositories from an organization

    Scan all repositories from an organization

    For instance, the following command:

    gh collab-scanner --org python
    

    could scan all organization's repositories (via the GitHub /orgs/{org}/repos API) and output:

    python/.github: no README 😇, no topics 😇, community profile score: 28 💯
    python/asyncio: README ☑️, topics ☑️, community profile score: 42 💯
    # and so on...
    
  • Scan all items from the community standard checklist?

    Scan all items from the community standard checklist?

    For open source projects, it would be nice to give details about the community profile score. The GitHub community standard checklist visibly has these details. In addition to a description and a README, it also has:

    • Code of conduct
    • Contributing
    • Licence
    • Issue Templates
    • Pull Request Template
    Screenshot 2022-03-07 at 06 09 18
  • Dependency Dashboard

    Dependency Dashboard

    This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

    This repository currently has no open or pending branches.

    Detected dependencies

    github-actions
    .github/workflows/ci.yml
    • actions/checkout v3
    • actions/setup-go v3
    .github/workflows/release.yml
    • actions/checkout v3
    • cli/gh-extension-precompile v1
    gomod
    go.mod
    • go 1.19
    • github.com/cli/go-gh v1.0.0
    • github.com/stretchr/testify v1.8.1
    • gopkg.in/h2non/gock.v1 v1.1.2

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
OpenAPI specification and related artifacts for HashiCorp Nomad

Overview This repository contains the HashiCorp Nomad OpenAPI specification and related artifacts. The OpenAPI specification defines a machine-readabl

Dec 14, 2022
Lol-champions-api - A REST API app for CRUD' ing informations related to League of Legends champions, written with Go

LOL-CHAMPIONS-API Just a REST API app for CRUD' ing informations related to Leag

Mar 17, 2022
Service that wrap up different movies-related APIs like IMDB and match it to streaming services
Service that wrap up different movies-related APIs like IMDB and match it to streaming services

Service that wrap up different movies-related APIs like IMDB and match it to streaming services. That way you can check in which platforms you can find your favorite movies.

Feb 10, 2022
Golang-action - A template repository for writing custom GitHub Actions in Golang

Golang Action A template repository for writing custom GitHub Actions in Golang.

Feb 12, 2022
Updates labels for a Github repository using a template file.

Github Labeler The purpose of this application is to sync your default labels with a repository hosted by Github. Labeler automatically merges your la

Mar 6, 2022
Lambda Extension for iamlive

iamlive Lambda Extension The iamlive Lambda Extension helps generate a least-privilege IAM policy by monitoring the AWS calls made within the Lambda e

Dec 17, 2022
Go(lang) client library for accessing information of an Apache Mesos cluster.

megos Go(lang) client library for accessing an Apache Mesos cluster. Features Determine the Mesos leader Get the current state of every mesos node (ma

Sep 27, 2022
A simple Go utility to display track information from, and send commands to, spotifyd from Tiling Window Managers like Sway and i3
A simple Go utility to display track information from, and send commands to, spotifyd from Tiling Window Managers like Sway and i3

Untitled Spotifyd Controller A simple Go utility to display track information from, and send commands to, spotifyd from Tiling Window Managers like Sw

Mar 8, 2022
A site displaying musical groups information by receiving a public API. The server was written in Go.
A site displaying musical groups information by receiving a public API. The server was written in Go.

A site displaying musical groups information by receiving a public API. The API consists of 4 parts with each represent a subset of the information. W

Dec 13, 2021
This tool is helpful to get information of the Instagram Users

InstaOsint This tool is used to get the public accounts as well as Private accounts like their username, userid, Full_Name, followers and following co

Mar 9, 2022
Groupie Trackers consists on receiving a given API and manipulate the data contained in it, in order to create a site, displaying the information.

groupie-tracker Objectives Groupie Trackers consists on receiving a given API and manipulate the data contained in it, in order to create a site, disp

Jan 13, 2022
Simple Apple Software Release Notifier, sends an email containing release information

Apple Release Notifier Simple Apple Software Release Notifier, sends an email containing release information. Usage Fill in the contacts file with the

Feb 22, 2022
ApiMarvel - API on Marvel characters and information about them

ApiMarvel Cette API permet d'obtenir les infos des heros marvel, on pourra obten

Feb 3, 2022
Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://developer.github.com/v4/).

githubv4 Package githubv4 is a client library for accessing GitHub GraphQL API v4 (https://docs.github.com/en/graphql). If you're looking for a client

Dec 26, 2022
May 25, 2021
Trakt-cli - A CLI for trakt.tv using the trakt.tv API
Trakt-cli - A CLI for trakt.tv using the trakt.tv API

trakt-cli ████████╗██████╗ █████╗ ██╗ ██╗████████╗ ██████╗██╗ ██╗ ╚══

Dec 27, 2022
Plot your repository stars over time.

Plot your repository stars over time.

Dec 30, 2022
This repository shows how can we use `AWS Lambda` to build serverless applications in golang.

Serverless Api in Go with AWS Lambda Here we are going to use AWS Lambda to build serverless applications in golang. Prerequisites You’ll need an AWS

Nov 3, 2021
Repository generator for Go

repogen repogen is a Golang Codegen that generates database query and mutation end-to-end with its model. How it works repogen describe our given tabl

Aug 4, 2022