Skip to content

Releases: Helcaraxan/gomod

v0.7.1

20 Jul 10:06
350493c
Compare
Choose a tag to compare

v0.7.1

Bug fixes

  • [#115] Enforce module-mode when running go list in projects using vendoring.

v0.7.0

27 May 09:50
Compare
Choose a tag to compare

v0.7.0

Bug fixes

  • Not all test-only dependent packages were adequately marked as such. This has been addressed and
    any packages only imported when building tests are now appropriately recognised as such.

New features

  • If no query is specified for gomod graph then it will return the full dependency graph by
    default.
  • Nodes in the generated DOT graphs are now coloured based on their (parent) module's name.
    Test-only dependencies are distinguishable by a lighter colour-palette than core dependencies.
    Similary edges reflecting test-only dependencies are now marked with a distinct colour just as
    indirect module dependencies are reflected by dashed lines instead of continous ones.

Breaking changes

  • The query syntax for paths has been modified in favour of using glob-based matching. As a result
    the foo/... prefix-matching is no longer recognised. Instead the more flexible foo/** can be
    used which also allows for middle-of-path wildcards such as foo/**/bar/*.

v0.6.2

09 Jan 21:24
Compare
Choose a tag to compare

v0.6.2

Bug fixes

  • Removed panic on non-test path queries at package-level.

v0.6.1

09 Jan 15:16
Compare
Choose a tag to compare

Quick patch release to fix a panic when combining --annotate and --packages as flags.

v0.6.0

09 Jan 14:02
Compare
Choose a tag to compare

After not being able to work much on gomod during 2020 this new release contains a slew of major changes and improvements. Some of the key points:

  • An entire rewrite of the internal graph logic to support both module and package-level dependencies.
  • A significant reduction in the complexity of the CLI interface with less flags and gomod no longer trying to wrap the dot binary in order to focus down on what the tool does best: building and querying your project's dependency graph.
  • A completely different approach to trimming down the full dependency based on graph queries to get the exact piece of the graph that you need.

Read the release-notes as well as the updated README and --help messages for the gomod graph command to get all the crunchy details.

v0.5.0

11 Aug 15:40
c67474b
Compare
Choose a tag to compare

0.5.0

High-level overview

  • A significant number of types, methods and functions have been renamed in preparation for a
    future v1.0.0 release. These renames aim to create a more coherent interface for the
    functionalities exposed by the depgraph package.

New features

  • The depgraph.DepGraph type now exposes a RemoveDependency method allowing to remove a given
    module including any edges starting or ending at this module.
  • The new lib/modules package exposes methods to retrieve various levels of module information.
  • The depgraph.DepAnalysis type now also contains information about the update backlog time of
    a module's dependencies. This reflects the timespan between the timestamp of the used version of a
    dependency and the timestamp of the newest available update.

Breaking changes

  • Package split: the depgraph.Module and depgraph.ModuleError types have been extracted to a
    separate lib/modules package in preparation for future work that will expand the configurability
    of information loading to support new features.
  • Type renames:
    • depgraph.Node has been renamed to depgraph.Dependency after the pre-existing type of that
      name has been removed in the v0.4.0 release.
    • depgraph.NodeReference has been renamed to depgraph.DependencyReference.
    • depgraph.NodeMap has been renamed to depgraph.DependencyMap and the associated
      NewNodeMap() function has accordingly been renamed to NewDependencyMap().
  • The depgraph.DepGraph type's methods have changed:
    • Main() has been removed in favour of direct access to a field with the same name.
    • Nodes() has been removed in favour of direct access to a field named Dependencies.
    • Node() has been renamed to GetDependency().
    • AddNode() has been renamed to AddDependency and now only returns a *Dependency instead of
      also a bool. The returned value is nil if the module passed as parameter could not be
      added.
  • The depgraph.DependencyFilter type's Dependency field has been renamed to Module.
  • The depgraph.NewDepGraph() function now also takes the path where the contained module lives.
  • The depgraph.GetDepGraph() function now also takes a relative or absolute path to the directory
    where the targeted Go module lives.

0.4.0 - Graph layout and formatting improvements

31 Jul 10:17
808a4ca
Compare
Choose a tag to compare

High-level overview

  • The presence of the .dot tool is now only required when specifying the -V | --visual flag to
    gomod graph.
  • Support for node clustering in generated .dot files.
  • More fine-grained control over graph generation via the new --style flag of gomod graph.

New features

  • Generated .dot graphs are now using box nodes rather than the default ellipse style to reduce
    the size of the generated image files and improve readability.
  • Specifying formatting options for image generation via gomod graph or the underlying library
    functions is now done via a dedicated configuration type.
  • The printer.PrintToDot function can now generate improved layouts for dependency graphs via the
    use of node clustering, tightly packing modules that share common reverse dependencies together.
    This can result in significant improvements for larger depdendency graphs (e.g. the PNG image of
    the full dependency graph for the kubernetes project
    has 42% less pixels and has a ~7x smaller binary size
    ).

Breaking changes

  • The depgraph.DepGraph and it's associated methods have been reworked to facilitate
    reproducibility through determinism, meaning their signatures have changed. Both a NodeReference
    and NodeMap type have been introduced.

  • The depgraph.GetDepGraph() method no longer takes a boolean to indicate what output should be
    forwarded from the invocations of underlying tools. Instead this is inferred from the level
    configured on the logrus.Logger instance argument that it takes. logrus.WarnLevel and below
    are considered the same as --quiet, logrus.DebugLevel and above are equivalent to --verbose.

  • Output behaviour for the invocation of underlying tools has slightly changed:

    • By default only their stderr will be forwarded to the terminal output.
    • If the -q | --quiet flag is passed neither their stderr, not their stdout will be
      forwarded.
    • If the -v | --verbose flag is passed both stderr and stdout will be forwarded.

    In any case the full output of these invocations can be found in the debug logs.

  • The Visual field of the printer.PrinterConfig type has been replaced by Style which is a
    pointer to a nested printer.StyleOptions type. The printer.Print method will generate an
    image if and only if Style has a non-nil value.

0.3.1 - Printing fix

18 Jun 16:15
Compare
Choose a tag to compare
  • Fixed graph printing which was broken between 0.2.1 and 0.3.0.
  • Fixed printing of non-versioned (local) hidden replace statements.

0.3.0 - Highlight hidden replace statements

17 Jun 16:14
Compare
Choose a tag to compare
  • Added the gomod reveal command to find and highlight hidden replaces in (indirect) module dependencies.
  • Added the analyze alias for gomod analyse.

0.2.1 - Reduce 'dot' requirement

17 Jun 16:23
Compare
Choose a tag to compare
  • Only require the dot tool when running the gomod graph command.
  • New developments in the project now have to go through CI before being merged.