Package: zazu
Zazu is a CLI development workflow management tool that combines
elements of git flow with CI and issue tracking.Zazu is implemented in Python and is aClickbased CLI. If you’re wondering why
Click, this is awell answeredquestion.InstallPre-requsites (linux)sudo apt-get install python-dev libssl-dev libffi-devAll platformssudo pip install --upgrade pip
sudo pip install zazuIf you get an error about a package called “six” use the following
command instead:sudo pip install--upgrade--ignore-installedzazuCommand overviewThe following diagram shows the available subcommands of zazu.Note: dashed lines are not yet implementedRepo managementzazu repo clone <name>clones repo and installs GIT
hookszazu repo init <name>initializes repo to default project
structure (Unimplemented)zazu repo setup hooksinstalls default GIT hooks to the repozazu repo setup cisets up CI builds based on the zazu.yaml file
in the repoCI build configuration managementZazu can setup CI server builds (currently only TeamCity is supported)
to build targets specified by a recipe file (the zazu.yaml file in the
root of a repo).zazu repo setup ciDevelopment workflow managementzazu dev startinteractivly creates new ticketzazu dev start <name>e.g.zazu dev startLC-440_a_cool_featurezazu dev statusdisplays ticket and pull request statuszazu dev ticketlaunches web browser to the ticket pagezazu dev buildslaunches web browser to the CI project pagezazu dev reviewlaunches web browser to create/view a pull
requestCode Style Enforcementzazu stylefixes code style using astyle and autopep8BuildingZazu uses the zazu.yaml file to build goals defined therezazu build <goal>The target architecture is assumed to be ‘local’ but may be
overridden using the –arch flag. e.gzazu build--arch=arm32-linux-gnueabihfpackagewould build
targeting 32 bit arm linux.Passing variables to the buildYou may pass extra variables to the build using key=value pairs.zazu build--arch=arm32-linux-gnueabihfpackage FOO=barThis sets
the environement variableFOOto the valuebarduring the build.Build tool installationZazu will automatically try to obtain required build tools needed for
each target as specified in the zazu.yaml file. These may be
installed/uninstalled manually as well:zazu tool install<tool==version>zazu tool uninstall<tool==version>These tools will be installed to the~/.zazu/tools/folder.zazu.yaml fileThe zazu.yaml file lives at the base of the repo and describes the CI
goals and architectures to be run. In addition it describes the
requirements for each goal.components:
  - name: networkInterface
    goals:
      - name: coverage
        description: "Runs the \"check\" target and reports coverage via gcovr"
        buildType: coverage
        buildVars:
              LOCAL_SERVER: ON
        builds:
          - arch: x86_64-linux-gcc
      - name: package
        buildType: minSizeRel
        builds:
          - arch: arm32-linux-gnueabihf
            requires:
              zazu:
                - gcc-linaro-arm-linux-gnueabihf==4.9
          - arch: x86_64-linux-gcc

issueTracker:
    type: github
    owner: stopthatcow
    repo: zazu

codeReviewer:
    type: github
    owner: stopthatcow
    repo: zazu

style:
  exclude:
    - dependencies/ #list path prefixes here to exclude from style
    - build/
  astyle:
    options:
      - "--options=astyle.conf" # options passed to astyle
    include:
      - src/*.cpp # list of globs of files to style
      - include/*.h
      - test/*.cpp
  autopep8:
    options:
      - "--max-line-length=150" # options passed to autopep8

  zazu: 0.2.0 # optional required zazu versionCompiler tuplesArchitectures are defined as tuple in the folowing form:<ISA>-<OS>-<ABI>Examplesx86_64-linux-gccx86_32-linux-gccx86_64-win-msvc_2013x86_64-win-msvc_2015x86_32-win-msvc_2013x86_32-win-msvc_2015arm32-linux-gnueabihfarm32-none-eabiCommand autocompletionNote that autocompletion currently only works for commands and
subcommands (not arguments).BASH usersAdd the following to your~/.bashrcfile:eval "$(_ZAZU_COMPLETE=source zazu)"ZSH usersAdd the following to your~/.zshrcfileautoload bashcompinit
bashcompinit
eval "$(_ZAZU_COMPLETE=source zazu)"Handy aliasesalias zz="zazu"
alias zd="zazu dev"
alias zds="zazu dev start"
alias zdr="zazu dev review"
alias zdt="zazu dev ticket"
alias zdb="zazu dev builds"
alias zs="zazu style"
alias zb="zazu build"