polylinguist

package module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 16, 2024 License: MIT Imports: 3 Imported by: 0

README

Polylinguist

More exact language usage stats from Github profile.

Features:

  • No limits like only "top 10 languages"
  • Both public & private repos via access token
  • Aliasing similar languages to same stats. For example, combine C & C++ to C/C++
  • Ignoring languages. For example, drop markup like SCSS, HTML, Twig etc.
  • Ignoring repositories. For example, drop a repository that contains megabytes of generated code, skewing statistics.

Install

go get github.com/stscoundrel/polylinguist

Usage

Polylinguist exposes a functions for getting Github language stats by username & access token.

With default settings:

package main

import (
    "fmt"

	"github.com/stscoundrel/polylinguist"
)

accessToken := "YOUR_ACCESS_TOKEN"

// Fetches all languages from all repos.
stats, err := polylinguist.GetTopLanguages("YOUR_USERNAME", accessToken)

if err != nil {
    // However you want to deal with your errors.
    // Most likely cause: failed network, failed auth.
}

for index, language := range stats {
    fmt.Printf("%d. %s - %f - %s \n", index+1, language.Name, language.Percentage, language.Color)
}

With custom settings:

package main

import (
    "fmt"

	"github.com/stscoundrel/polylinguist"
	"github.com/stscoundrel/polylinguist/stats"
)

accessToken := "YOUR_ACCESS_TOKEN"

// Setup custom settings to skip certain languages & repos
// Also set custom aliases to combine some languages into single statistic.
settings := stats.Settings{
    IgnoredLanguages: []string{"SCSS", "CSS", "ASL", "HTML"},
    IgnoredRepos: []string{
        "old-norwegian-dictionary",
        "old-norwegian-dictionary-rs",
        "old-norwegian-dictionary-go",
    },
    AliasedLanguages: []stats.LanguageAlias{
        {
            Language: "C",
            Alias:    "C/C++",
        },
        {
            Language: "C++",
            Alias:    "C/C++",
        },
    },
}

stats, err := polylinguist.GetTopLanguagesWithSettings("YOUR_USERNAME", accessToken, settings)

if err != nil {
    // However you want to deal with your errors.
}

for index, language := range stats {
    fmt.Printf("%d. %s - %f - %s \n", index+1, language.Name, language.Percentage, language.Color)
}

Output will be something to the effect of:

1. TypeScript - 37.237267 - #3178c6 
2. JavaScript - 28.081825 - #f1e05a 
3. Go - 9.608068 - #00ADD8 
4. Rust - 5.951985 - #dea584 
5. C# - 5.426030 - #178600 
6. PHP - 4.735421 - #4F5D95 
7. Python - 3.653692 - #3572A5 
8. Java - 2.354974 - #b07219 
9. Nim - 1.370613 - #ffc200 
10. Scala - 0.892341 - #c22d40 
11. C/C++ - 0.359692 - #555555 
12. Kotlin - 0.223640 - #A97BFF 
13. F# - 0.076285 - #b845fc 
14. Dockerfile - 0.027167 - #384d54 
15. Shell - 0.001000 - #89e051

Up to you what kind of graphic or chart you want to produce with the data. The data includes Github language colors for visual portions.

As Vercel Cloud Function

For a template on usage as a cloud function on Vercel, see this repo

Documentation

Index

Constants

View Source
const DEFAULT_GRAPHQL_URL = "https://api.github.com/graphql"

Variables

This section is empty.

Functions

func GetTopLanguages

func GetTopLanguages(username string, accessToken string) ([]stats.LanguageStatistic, error)

func GetTopLanguagesWithSettings

func GetTopLanguagesWithSettings(username string, accessToken string, settings stats.Settings) ([]stats.LanguageStatistic, error)

Types

This section is empty.

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL