Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so
, '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" + '
Add file based Config support. by G8XSU · Pull Request #28 · lightningdevkit/ldk-server · GitHub
Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so
, '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('^' + ".*" + ' Add file based Config support. by G8XSU · Pull Request #28 · lightningdevkit/ldk-server · GitHub
Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so
, '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('^' + ".*" + ' Add file based Config support. by G8XSU · Pull Request #28 · lightningdevkit/ldk-server · GitHub
Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so
, '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" + ' Add file based Config support. by G8XSU · Pull Request #28 · lightningdevkit/ldk-server · GitHub
Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so
, '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('^' + ".*" + ' Add file based Config support. by G8XSU · Pull Request #28 · lightningdevkit/ldk-server · GitHub
Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so
, '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); } })(); })(); Add file based Config support. by G8XSU · Pull Request #28 · lightningdevkit/ldk-server · GitHub
Skip to content

Add file based Config support. - #28

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config
Dec 4, 2024
Merged

Add file based Config support.#28
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:file-config

Conversation

@G8XSU

@G8XSUG8XSU commented Dec 4, 2024

Copy link
Copy Markdown
Contributor

Allows us to provide config params using ldk-server-config file.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:24
Comment threadldk-server/ldk-server-config.json Outdated
args[0]
);
if args.len() < 2 {
eprintln!("Usage: {} config_path", args[0]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the config strategy we wanna pursue? Just passing the file path? A lot of libraries have a multi-layered approach, using a config file, which can be overridden by environment variables, which can be overridden by command-line arguments, and all of that is neatly integrated into man and --help, but typically uses a third-party library.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think adding multiple levels of config knobs could add confusion,
for now i chose to keep it simple json config without any config reading dependencies.

With more and more config options, cli args won't really be feasible.
Although we could add support for overriding some config-values with env vars in future if needed.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, fair enough. What about defaults? It looks like currently the JSON file needs to have all the fields? Also, does the reading of the JSON file currently allow for additional fields that aren't used by us? Or even comment lines?

@G8XSUG8XSUDec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaults will need to be configured/handled in code.
Yes, currently it needs all the fields to be present, it does allow unknown-fields not being used by us. (added a test)
And doesn't allow comments currently. :(

I did have the option to use something like toml but wasn't sure about crate dependency for it.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added basic functionality to remove simple single-line comments using '//', tested in tests in latest commit.
Key/value can't contain '//' without escaping since it is a control character.

@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Pushed fixup commit.

@G8XSU
G8XSU requested a review from arik-soDecember 4, 2024 00:35
@G8XSU

G8XSU commented Dec 4, 2024

Copy link
Copy Markdown
ContributorAuthor

Squashed fixups !

@G8XSU
G8XSU merged commit ecfe4cc into lightningdevkit:mainDec 4, 2024
@G8XSUG8XSU mentioned this pull request Dec 4, 2024
9 tasks
rsafier pushed a commit to rsafier/ldk-server that referenced this pull request Apr 20, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@G8XSU@arik-so