vectorsigma

command module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 26, 2025 License: MIT Imports: 1 Imported by: 0

README

VectorSigma

License Go Report Card GitHub release

VectorSigma is a tool designed to generate finite state machines (FSM) in Go from UML diagrams. It supports creating standalone applications, extending existing codebases with state machine functionality, and implementing reconciliation loops for Kubernetes (k8s) operators. This flexibility allows developers to easily integrate state machine logic into various types of applications, whether starting from scratch or enhancing existing systems.

Features

  • Standalone Applications: Generate complete applications that incorporate finite state machines.
  • Extend Existing Applications: Add state machine functionality to your existing applications.
  • Kubernetes Integration: Support for reconciliation loops in Kubernetes operators, making it suitable for cloud-native applications.
  • Incremental Updates: Perform updates that regenerate state machines without overwriting existing code. The tool intelligently adds or removes actions and guards based on changes in the UML diagram. See Incremental Updates Documentation for details.
  • Simple UML Syntax: Utilize a specific UML syntax to define states, transitions, actions, and guards, making it easy to visualize and manage state machine logic.
  • Markdown Support: Extract UML diagrams directly from plantuml code blocks in Markdown files, allowing you to design your state machine while documenting your project.

The state chart of VectorSigma

VectorSigma is not just a tool for generating finite state machines; it is itself a finite state machine. The following state chart illustrates the internal workings of VectorSigma, showcasing how it processes input and transitions between different states.

statechart

Writing UML

For more detailed information on the UML syntax used by VectorSigma, please refer to the VectorSigma UML Syntax Documentation. Additionally, you can view the State Chart of VectorSigma to understand the various states and transitions within the application. If you're looking to deepen your understanding of state machines and state charts in general, visit statecharts.dev for a comprehensive set of resources.

For creating UML diagrams, a good online editor to consider is planttext.com. Another option is my Markdown Preview Language Server (mpls), which supports UML and allows you to edit UML in your favorite editor while displaying the state chart in a browser. This can enhance your workflow and make it easier to visualize your state machines.

Guides and Examples

Check out these guides to help you get started:

Installation Instructions

Homebrew (macOS and Linux)

The easiest way to install and keep VectorSigma updated:

brew tap mhersson/formulas
brew install vectorsigma

To update to the latest version:

brew upgrade vectorsigma
Go Install

If you allready have Go installed on your system, you can install VectorSigma using the following command:

go install github.com/mhersson/vectorsigma@latest

If not, you can install VectorSigma by downloading the latest build from the releases page:

  1. Download the appropriate tar.gz file for your operating system.

  2. Extract the contents of the tar.gz file. You can do this using the following command in your terminal:

    tar xzf vectorsigma<version>_linux_amd64.tar.gz
    

    (Replace <version> with the actual version of the release.)

  3. Copy the extracted binary to a directory that is in your system's PATH. For example:

    sudo cp vectorsigma /usr/local/bin/
    
If you otherwise prefer to build from source follow these steps
  1. Clone the repository:

    git clone https://github.com/mhersson/vectorsigma.git
    cd vectorsigma
    
  2. Build the project:

    Build the project using the following command:

    make build
    

    This command will compile the source code and create an executable.

  3. Install the executable:

    You have two options to install the executable:

    • Option 1: Copy the executable to your PATH:

      After building, you can manually copy the executable to a directory that is in your system's PATH. For example:

      sudo cp vectorsigma /usr/local/bin/
      
    • Option 2: Use make install if you are using GOPATH:

      If the GOPATH is in your PATH, you can run:

      make install
      

      This will install the executable to your $GOPATH/bin directory.

Verify the installation:

After installation, you can verify that vectorsigma is installed correctly by running:

vectorsigma --version

This should display the version of the vectorsigma executable. Now, VectorSigma should be installed and ready to use.

Usage Instructions

Below are the commands and flags you can use to operate VectorSigma.

General Usage

To run VectorSigma, use the following command:

vectorsigma [command] [flags]
Available Commands
  • completion: Generate the autocompletion script for your shell.
  • init: Initialize a new Go module with an FSM application generated from your UML diagram.
General Flags
Flag Description
--api-kind string Specify the API kind (used only when generating a k8s operator)
--api-version string Specify the API version (used only when generating a k8s operator)
-g, --group string Group (only used if generating a k8s operator)
-h, --help Show help information for VectorSigma
-i, --input string Provide the UML input file. This can also be a markdown file containing a plantuml code block
-m, --module string Set the name of the new Go module (defaults to module name from go.mod if it exists)
-O --operator Generate FSM for a k8s operator
-o, --output string Specify the output path for the generated FSM (defaults to the current working directory)
-p, --package string Set the package name of the generated FSM (defaults to "statemachine")
-v, --version Display the version of VectorSigma
The Init Command

To initialize a new Go module with an FSM, use the following command:

vectorsigma init [flags]
Init Command Flags
Flag Description
-h, --help Show help information for the init command
-i, --input string Provide the UML input file. This can also be a markdown file containing a plantuml code block
-m, --module string Set the name of the new Go module (defaults to the current directory name)
-p, --package string Set the package name of the generated FSM (defaults to "statemachine")
Example Usage

To generate an FSM from a UML file, you might run:

vectorsigma --input mydiagram.uml --output internal

If your input is in a markdown file, you can run:

vectorsigma --input mydiagram.md --output internal

To initialize a new go module in the current directory (generate a default go.mod and main.go file with the FSM)

vectorsigma init --input mydiagram.uml -m github.com/yourusername/newproject

To generate the reconcile loop of an k8s operator:

vectorsigma -i myreconcileloop.uml -o internal/controller --operator --group mycompany --api-version v1 --api-kind MyCRDKind

Contributing

Contributions are welcome! I love pull requests, bug reports, and feature suggestions!

Documentation

Overview

Copyright © 2024-2025 Morten Hersson <mhersson@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Directories

Path Synopsis
internal
statemachine
This file is generated by VectorSigma v1.1.0-5-g68bd54d (commit: 68bd54d, built at: 2025-11-24T09:14:51Z.1.0).
This file is generated by VectorSigma v1.1.0-5-g68bd54d (commit: 68bd54d, built at: 2025-11-24T09:14:51Z.1.0).
pkgs
uml

Jump to

Keyboard shortcuts

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