Skip to content

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - blinxen/tomli: Simple CLI for querying and editing TOML files · GitHub
Skip to content

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - blinxen/tomli: Simple CLI for querying and editing TOML files · GitHub
Skip to content

Repository files navigation

tomli

tomli is a format preserving command-line tool for querying and editing TOML files.

This project is currently under development and the command-line interface can change at any time.

Installation

Using Cargo

cargo install tomli

Release tarball

wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz

Usage

By default, tomli will read from stdin unless --filepath is specified.

Query expressions

tomli tries to use the same syntax as jq for query expressions. The following expressions are currently supported:

  • Key and table identifier paths, e.g foo.bar or . (whole document)
  • Array indices, e.g. foo[0] or foo.bar[0][1]

Query TOML files

Examples:

Get the value of the name key from the package table:

tomli query -f Cargo.toml package.name

Get the first element of the array called bin:

tomli query -f Cargo.toml bin[0]

Edit TOML files

tomli currently supports the following types when setting a value:

The value type can be specified with the --type argument. If not type is specified, then str is used.

Examples:

Add a new key to the package table called website:

tomli set -f Cargo.toml package.website https://example.com

Set the name of the first element in the bin array to tumli:

tomli set -f Cargo.toml bin[0].name tumli

Add a new table called website to the first element of the bin array:

tomli set -f Cargo.toml bin[0].website.url https://example.com

Add a new array called websites to the table package:

tomli set -f Cargo.toml package.websites[0] https://example.com

Add a new array called numbers to the table package and specify the type:

tomli set -f Cargo.toml --type int package.numbers[0] 5

Use dotted key notation instead of creating a subtable:

tomli set -f Cargo.toml --dotted-key --type bool package.version.workspace true

Delete name in the table package:

tomli delete -f Cargo.toml package.name

Delete the first element in the array authors:

tomli delete -f Cargo.toml package.authors[0]

Copying TOML items from one file to another

tomli supports copying a item (key/value pair, Table, Array etc.) from one file to another. If the destination file does not exit then tomli will try to create it if --in-place is set. At the moment, everything is simply copied over and overwritten.

Examples:

Copy table package into another file name another.toml:

tomli copy -f Cargo.toml package another.toml new_package

License

The source code is primarily distributed under the terms of the MIT License. See LICENSE for details.

About

Simple CLI for querying and editing TOML files

Resources

Stars

19 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages