depexplorer

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 14, 2024 License: MIT Imports: 8 Imported by: 2

README

depexplorer

Godoc license

depexplorer - Go library for explore project dependencies from:

  • go.mod
  • composer.json
  • composer.lock
  • package.json
  • package-lock.json

Result struct contains:

  • Name of dependency manager
  • List of dependencies and that versions
  • List of used frameworks
  • Name of programming language

Install as: go get github.com/artarts36/depexplorer

Explore Go dependencies

package main

import (
	"fmt"
	"github.com/artarts36/depexplorer"
	"os"
)

func main() {
	file, _ := os.ReadFile("/path/to/mod")
	depFile, _ := depexplorer.ExploreGoMod(file)
	for _, dep := range depFile.Dependencies {
		fmt.Println(dep.Name, dep.Version.Full)
	}
}

Explore Go dependencies by path

package main

import (
	"fmt"
	"github.com/artarts36/depexplorer"
)

func main() {
	depFile, _ := depexplorer.Explore("/path/to/mod", depexplorer.ExploreGoMod)
	for _, dep := range depFile.Dependencies {
		fmt.Println(dep.Name, dep.Version.Full)
	}
}

Guess dependency manager and explore dependencies by path

package main

import (
	"fmt"
	"github.com/artarts36/depexplorer"
)

func main() {
	file, _ := depexplorer.Guess("/path/to/package.json")
	fmt.Println(file.DependencyManager)
	for _, dep := range file.Dependencies {
		fmt.Println(dep.Name, dep.Version.Full)
	}
}

Explore from GitHub Repository

You need to install another package:

go get github.com/artarts36/depexplorer/pkg/github

And use this snippet:

package main

import (
	"context"
	"fmt"
	"github.com/artarts36/depexplorer/pkg/github"
	"github.com/artarts36/depexplorer/pkg/repository"
	githubClient "github.com/google/go-github/github"
)

func main() {
	files, _ := github.ExploreRepository(context.Background(), repository.Repo{
		Owner: "artarts36",
		Repo:  "depexplorer",
	})
	for _, file := range files {
		fmt.Println(file.Name)
		
		for _, dep := range file.Dependencies {
			fmt.Println(dep.Name, dep.Version.Full)
        }
	}
}

Documentation

Index

Constants

View Source
const (
	DependencyManagerNone     DependencyManager = ""
	DependencyManagerGoMod    DependencyManager = "go.mod"
	DependencyManagerComposer DependencyManager = "composer"
	DependencyManagerNPM      DependencyManager = "npm"

	LanguageNameNone LanguageName = "none"
	LanguageNameGo   LanguageName = "go"
	LanguageNamePHP  LanguageName = "php"
	LanguageNameJS   LanguageName = "js"
)

Variables

View Source
var ErrDependencyFilesNotFound = errors.New("dependency files not found")

Functions

func ExploreDirectory

func ExploreDirectory(files DirectoryFileIterator) (map[DependencyManager]*File, error)

func ScanProjectDir

func ScanProjectDir(dir string) (map[DependencyManager]*File, error)

Types

type Dependency

type Dependency struct {
	Name    string
	Version Version
}

type DependencyManager

type DependencyManager string

type DirectoryFileIterator

type DirectoryFileIterator interface {
	Next() (string, error) // filepath, error
	Read(filepath string) ([]byte, error)
}

type File

type File struct {
	Path string
	Name string

	DependencyManager DependencyManager
	Dependencies      []*Dependency

	Language   Language
	Frameworks []*Framework
}

func Explore

func Explore(path string, explorer FileExplorer) (*File, error)

func ExploreComposerJSON

func ExploreComposerJSON(file []byte) (*File, error)

func ExploreComposerLock

func ExploreComposerLock(file []byte) (*File, error)

func ExploreGoMod

func ExploreGoMod(file []byte) (*File, error)

func ExplorePackageJSON

func ExplorePackageJSON(file []byte) (*File, error)

func ExplorePackageLockJSON

func ExplorePackageLockJSON(file []byte) (*File, error)

func Guess

func Guess(path string) (*File, error)

type FileExplorer

type FileExplorer func(file []byte) (*File, error)

type Framework

type Framework struct {
	Name    FrameworkName
	Version Version
}

func (*Framework) String

func (f *Framework) String() string

type FrameworkName

type FrameworkName string
const (
	FrameworkNameGin   FrameworkName = "Gin Web Framework"
	FrameworkNameFiber FrameworkName = "Fiber"

	FrameworkNameSymfony FrameworkName = "Symfony"
	FrameworkNameLaravel FrameworkName = "Laravel"

	FrameworkNameVueJS FrameworkName = "Vue.js"
	FrameworkNameReact FrameworkName = "React"
)

type Language

type Language struct {
	Name    LanguageName
	Version *Version
}

type LanguageName

type LanguageName string

type Version

type Version struct {
	Full string
}

func (*Version) String

func (v *Version) String() string

Directories

Path Synopsis
pkg
github Module
repository Module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳