Skip to content

kdeps/kartographer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kartographer

A Graph Library for Resolving Dependent Nodes

This package provides functionality for traversing and analyzing a dependency graph. The DependencyGraph struct and its methods allow for listing dependencies in various orders, including direct, recursive, top-down, and reverse dependencies.

Table of Contents

Installation

To use this package, you need to import it into your Go project. Make sure you have the following dependencies in your go.mod file:

import (
  graph "github.com/kdeps/kartographer/graph"
)

Usage

First, create a new DependencyGraph instance by calling the NewDependencyGraph function with the appropriate parameters.

import (
    graph "github.com/kdeps/kartographer/graph"
)

dependencies := map[string][]string{
    "A": {"B", "C"},
    "B": {"D"},
    "C": {"D"},
    "D": {},
}

dg := graph.NewDependencyGraph(fs, logger, dependencies)

Then you can call any of the methods on the DependencyGraph instance to list dependencies in various orders.

dg.ListDirectDependencies("A")
dg.ListDependencyTree("A")
dg.ListDependencyTreeTopDown("A")
dg.ListReverseDependencies("D")

Functions

TraverseDependencyGraph

Traverses the dependency graph starting from a given node and prints the paths.

func (dg *DependencyGraph) TraverseDependencyGraph(node string, dependencies map[string][]string, visited map[string]bool)

ListDependencyTreeTopDown

Lists the dependency tree in a top-down order starting from a given node.

func (dg *DependencyGraph) ListDependencyTreeTopDown(node string)

ListDependenciesRecursive

Lists all dependencies recursively from a given node and prints each dependency path.

func (dg *DependencyGraph) ListDependenciesRecursive(node string, path []string, visited map[string]bool)

ListReverseDependencies

Lists all reverse dependencies for a given node.

func (dg *DependencyGraph) ListReverseDependencies(node string)

ListDependencyTree

Lists the entire dependency tree for a given node.

func (dg *DependencyGraph) ListDependencyTree(node string)

BuildDependencyStack

Builds and returns a stack of dependencies starting from a given node.

func (dg *DependencyGraph) BuildDependencyStack(node string, visited map[string]bool) []string

InvertDependencies

Inverts the dependency graph, swapping dependencies with their dependents.

func (dg *DependencyGraph) InvertDependencies() map[string][]string

ListDirectDependencies

Lists direct dependencies for a given node.

func (dg *DependencyGraph) ListDirectDependencies(node string)

Utility Functions

The package also includes utility functions for constructing or printing dependency paths.

ConstructDependencyPath

Construct a given dependency path which returns a string

func (dg *DependencyGraph) ConstructDependencyPath(path []string, dir string) string

PrintDependencyPath

Prints a given dependency path.

func (dg *DependencyGraph) PrintDependencyPath(path []string, dir string)

This function can be used to format and print paths in a human-readable form.


With this package, you can easily manage and traverse dependency graphs in Go, allowing for complex dependency analysis and visualization.

About

A Graph Library for Resolving Dependent Nodes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published