Examples & More

Besides the then sequencer, FiredUp offers some more support to allow grouped command classes to interact:

Globals and Arguments

Besides the clipboard to pass around information, you can also use globals and pass arguments to the constructors of the Groups:

from fired_up import FiredUp, Group

class Left(Group):
  def __init__(self, write, *args, **kwargs):
    super().__init__(*args, **kwargs)
    self._write = write

  def write(self):
    if self._write:
      self._globals["message"] = "left was here"

  def read(self):
    print("left>", self._globals["message"])

class Right(Group):
  def readwrite(self):
    print("right>", self._globals["message"])
    self._globals["message"] = "right was here too"

FiredUp(left=(Left, { "write" : True }), right=Right)
% python examples/globals.py left write then right readwrite then left read
right> left was here
left> right was here too

Simple Commands

Besides objects with commands and menus, you can also simply provide a function, which will be handled as a command:

from fired_up import FiredUp, __version__

def get_hello():
  return "hello"

def get_version():
  return __version__
  
FiredUp(hello=get_hello, version=get_version)
% python examples/version.py --all hello then version
hello
0.0.7

Public Functions and Output

Since FiredUp makes all public functions chainable, public functions that return some value can’t be used directly by other functions. To access the original return value one can use .paste() in a chaining way:

from fired_up import FiredUp, Group

class Test(Group):
  def public1(self):
    return "abc"                  # return value is "copied", self is returned

  def public2(self):
    print(self.public1().paste()) # returns the return value of public

  def public3(self):
    return self.public1()         # returns self, which is "pasted" as last result

FiredUp(test=Test)
% python examples/public.py test public1
abc
% python examples/public.py test public2
abc
% python examples/public.py test public3
NAME
    public.py test public3

SYNOPSIS
    public.py test public3 GROUP | COMMAND

GROUPS
    GROUP is one of the following:

     globals

COMMANDS
    COMMAND is one of the following:

     copy

     paste

     public1

     public2

     public3

     then

The examples/ Folder and Target

You can run all examples in one go, using the Makefile’s examples target:

Examples