Skip to content

logseq/bb-tasks

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Description

Library of reusable babashka tasks

Setup

Add a git dependency to your bb.edn:

:deps
{logseq/bb-tasks
 {:git/url "https://github.com/logseq/bb-tasks"
  :git/sha "<LATEST SHA>"}}

Define the tasks to import from this library in bb.edn e.g.

:tasks
{nbb:watch
 logseq.bb-tasks.nbb.watch/watch}

Some tasks require bb pods. Babashka doesn't yet support providing them through a gitlib dependency. This means that you will need to add the necessary :pods to your bb.edn. See bb.edn for pods and versions that are known to work.

Usage

Tasks are described by namespace.

logseq.bb-tasks.lint.carve

logseq.bb-tasks.lint.carve/-main

Finds unused vars with https://github.com/borkdude/carve. Also provides more friendly commandline interface as the default config is preserved when additional options are given.

logseq.bb-tasks.lint.datalog

logseq.bb-tasks.lint.datalog/lint-rules

Lints given datalog rules for valid parse-ability and unbound variables.

logseq.bb-tasks.lint.large-vars

logseq.bb-tasks.lint.large-vars/-main

Lints codebases for large vars. Large vars make it difficult for teams to maintain and understand codebases.

logseq.bb-tasks.nbb.test

logseq.bb-tasks.nbb.test/load-all-namespaces

Verify that all namespaces in a directory can be required by nbb-logseq. Useful for ensuring cljs code continues to be compatible with nbb(-logseq).

logseq.bb-tasks.nbb.watch

These tasks demonstrate that nbb-logseq scripts can run when a graph is saved to provide useful information to a Logseq user. When these scripts use the graph-parser, these scripts start to behave like intelligent assistants as they understand the data in your file as well as the Logseq app does.

Tasks in this namespace require installing nbb-logseq e.g. npm install -g @logseq/nbb-logseq. For the examples in this ns, there is a one time setup of cd examples && yarn install && cd -.

logseq.bb-tasks.nbb.watch/watch

Given a graph directory and an nbb script, the nbb script runs when either the script or a graph file is saved. The run on script save provides a live-editing experience as different queries can be run without restarting this task.

For an example, run the following:

$ bb nbb:watch /path/to/graph examples/analyze_file.cljs
Watching /path/to/graph ...

See this demo clip to see it in action.

logseq.bb-tasks.nbb.watch/portal-watch

Given a graph directory and an nbb script, portal renders the edn produced by the nbb script when either the script or a graph file is saved.

For an example, run the following:

$ bb nbb:portal-watch /path/to/graph examples/print_file_query.cljs
Watching /path/to/graph ...

Contributing

Bug reports are welcome. For feature contributions, please discuss them first as this library primarily serves https://github.com/logseq/logseq.

License

See LICENSE.md

Development

Tasks are linted with https://github.com/clj-kondo/clj-kondo using clojure -M:clj-kondo --lint src. Dependencies are kept up to date with https://github.com/liquidz/antq using clojure -M:outdated.

Additional Links

About

Reusable babashka tasks used by logseq team

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published