graph
warg
Our great sponsors
graph | warg | |
---|---|---|
33 | 7 | |
1,709 | 13 | |
- | - | |
6.4 | 7.5 | |
12 days ago | about 2 months ago | |
Go | Go | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
graph
- Create, analyze, and modify graphs and networks in Go
- Show HN: Creating, Modifying, Analyzing, and Visualizing Graphs/Networks in Go
-
Digger is trending on GitHub in Golang
Awesome project, and nice to see that it seems to use my graph library (graph) for managing dependencies!
- graph: A library for creating generic graph data structures and modifying, analyzing, and visualizing them
-
Dagger V3 Release (generic/concurrency-safe Directed Acyclic Graph)
Why should I use yours over this?
- graph v0.20 adds support for adding vertices and edges from other graphs, retrieving and updating edges, computing spanning trees, and more
-
GitHub doesn't show the latest commit and rejects any pushes
Any ideas how I could've ended up with this and how I could resolve this? The repository is github.com/dominikbraun/graph.
- graph v0.16 supports integrating any storage backend for storing graph data structures
- Visualize complex networks and structures in Go
warg
-
An Efficient Struct Configuration Pattern For Golang
Funcopts aren't always appropriate, but boy do they make things more readable sometimes. I use them pervasively in warg to allow declarative nested CLI commands
-
Which packages do you recommend for building cli tools?
I wrote my own! https://github.com/bbkane/warg/
-
Major standard library changes in Go 1.20
Very useful! I'll be playing with the error tree additions and studying the HTTP interface extension to see if I can replicate the pattern for https://github.com/bbkane/warg values. Id like to be able to have value-specific output for different types of --help , even ones not in warg
-
Have you used generics?
I'm using to allow for custom flag types in my CLI parsing library- a lot less duplicate code
-
Go: Functional Options Are Slow
One thing that I find nicer with functional options is building tree-like data structures.
My command line parsing library uses them to declaratively build CLI apps with arbitrarily nested subcommands.
Some examples at https://github.com/bbkane/warg/tree/master/examples
-
How are YOU using generics so far?
I'm writing a CLI parsing library, and generics have let me consolidate most of the flag value functionality for different types. So the flags for dbz --level 9000 --type superSaiyan share most of the same code even though one is an int and one is a string. So much fewer copy-paste-modify lines of code now!
-
Unix command line conventions over time
This is largely what the Azure CLI does. It simplifies even further by eliminating the no-value option. Instead, you pass "true" or "false" as the value ( --example true ). It's a little more verbose but very easy to parse/write/generate. I like this convention so much I stole it for my homemade Golang CLI parsing library https://github.com/bbkane/warg/ .
What are some alternatives?
be - The Go test helper for minimalists
cli-guidelines - A guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
scan - Scan provides the ability to to scan sql rows directly to any defined structure.
workgroup - Structured concurrency manager for Go
btree - BTree provides a simple, ordered, in-memory data structure for Go programs.
golang-generics-dao-example - Example using Generics with DAO
NetworkX - Network Analysis in Python
bob - SQL query builder and ORM/Factory generator for Go with support for PostgreSQL, MySQL and SQLite
RCIG_Coordination_Repo - A Coordination repo for all things Rust Cryptography oriented
JGraphT - Master repository for the JGraphT project
infra - Infra provides authentication and access management to servers and Kubernetes clusters.