Skip to content
Snippets Groups Projects
Volker Schukai's avatar
02ec7f0e
History

Bob

bob is an HTML and HTML fragment builder

Documentation

To check out docs and examples, visit gitlab.schukai.com/oss/bob

Installation

wget -O ~/.local/bin/bob http://download.schukai.com/tools/bob/bob-$( uname -s | tr [:upper:] [:lower:])-$(echo `uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/`) && chmod u+x ~/.local/bin/bob

Usage

Template

Prepare

bob template prepare --input ./templates/ --output ./output/

This will create files in the ./output/ directory with all parsed templates from ./templates/ directory. Also, a data YAML. This data YAML is used to generate the final files.

This command prepares the title, description, keywords, and other metadata for the templates. Furthermore, it will parse the templates for images, anchors, and text.

Original Parsed
<html lang="en"><head> <html lang="en" data-attributes="lang path:lang"><head>
<title>Bob</title> <title data-attributes="title path:title">Bob</title>
<meta name="description" content="Bob is a html and html fragment builder"> <meta name="description" content="Bob is a html and html fragment builder" data-attributes="description path:meta.description">
<img alt="alt text" title="my title" src="..." <img alt="alt text" title="my title" src="..." data-attributes="alt path:img.id1003.alt title path:img.id1003.title src path:img.id1003.src">
<a href="https://gitlab.schukai.com/oss/bob"> <a href="https://gitlab.schukai.com/oss/bob" data-attributes="href path:a.id1004.href">
<p>Bob is a html and html fragment builder</p> <p><span data-attributes="text path:p.id1005.text">Bob is a html and html fragment builder</span></p>

HTML

Generate

This will generate HTML files from the prepared templates.

bob html generate --input ./output/ --output ./output/
Sync

This will sync HTML nodes from a source to a destination.

bob html sync --specification ./specification.yaml 

The structure of the specification file is as follows:

sync:
  - source:
      path: './source.html'
      selector: 'head'
    destination:
      path: './'
      exclude:
        - ./source.html
      keep:
        - title

With the above specification, the head node from ./source.html will be synced to all files in ./ except ./source.html. Furthermore, the title node will be kept.

Relative paths are relative to the specification file. Absolute paths are absolute, obviously.

Cut

This will cut a node from a source file and save it to a destination template file.

bob template cut --specification ./specification.yaml 

The structure of the specification file is as follows:

snippet:
  -
    source: ./test.html
    selector: 'head'
    destination: ./snippets/container.html
    attribute:
      - selector: 'li'
        name: 'class'
        value: 'list-item'
    replacement:
      -
        selector: '#myid'
        content: 'replacement content'

Relative paths are relative to the specification file.

Questions

For questions and commercial support, please contact schukai GmbH. The issue list of this repo is exclusively for bug reports and feature requests.

Issues

Please make sure to read the Issue Reporting Checklist before opening an issue. Issues not conforming to the guidelines may be closed immediately.

License

© schukai GmbH, released under the AGPL 3.0 License.

AGPL

You can also purchase a commercial license.