Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Description

Library of reusable babashka tasks and bbin CLIs

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

Collection of nbb tasks located here for use with nbb-logseq. Most of them are also be usable with nbb.

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.cached-db

Enables bb tasks to call nbb scripts with an up-to-date cached db of the current graph directory. The underlying bb task manages a cache like the one Logseq editor builds in ~/.logseq/graphs/. If a user git commits the cached db, nbb CI processes also benefit from the speed up.

To set this up in your graph:

  • Create a script/ directory and copy all the files in this example's script/ to it.
  • cd script && pnpm install && cd -
  • Copy this example's bb.edn to bb.edn
  • Change the implementation of script/query.cljs to queries specific to your graph. Some notes:
    • (cached-db/read-db) is necessary to read the cached db.
    • query.cljs is just an example nbb script. Any script works with the cached db.
  • Run bb query properties to call the nbb script to return properties in your graph.
    • Note the first time takes time as it builds the cache. Subsequent calls are pretty quick.
logseq.bb-tasks.nbb.cached-db/ensure-latest-cached-db

This task should be used in the :depends of a task calling a nbb script. The task ensures that the transit db is rebuilt if any graph file is detected to be outdated by their timestamp. Cache building is slow the first time as all files need to be parsed. Subsequent updates are quick because only files modified since the last cache are re-parsed.

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 && pnpm 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 ...

CLIs

To use the CLIs, first install bbin. Then install scripts in this repo:

bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_import.clj && \
bbin install https://raw.githubusercontent.com/logseq/bb-tasks/main/src/logseq/bb_tasks/bin/logseq_export.clj

To use these scripts:

# From any graph directory, export any text files e.g.
$ logseq-export journals/2022_03_22.md pages/Abraham\ Lincoln.md > export.edn
# cd to another graph and then import the export.edn
$ logseq-import ../previous-graph/export.edn
Imported journals/2022_03_22.md
Imported pages/Abraham Lincoln.md

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

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages