Repository files navigation

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 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

🎄 Advent of Code CLI 🎄

Description

This is a set of command line tools to help automate repetitive tasks and speed up your daily Advent of Code workflow.

Installation

npm install -g aoc-toools

Or, to install the application globally from the repo:

npm install -g .

Usage

To use the application, run the following command after installing the CLI:

aoc

This will display the help menu, which includes a list of available commands and their descriptions.

Commands

new

Create a new item with specified year, day, and an optional template.

aoc new <basePath><year><day> [-t <template>] [-s <session>]
  • <basePath>: The location in which to create files and directories.
  • <year>: The year for the problem.
  • <day>: The day of the problem. Must be a number between 1 and 25.
  • -t, --template [template]: Specify a template (optional). Defaults to 'typescript'. For more information on adding templates, see Custom Templates.
  • -s, --session [session]: Specify a session token (optional). Defaults to the value of the AOC_SESSION environment variable. For more information on session tokens, see Puzzle Input.

Example:

aoc new src/problems 2023 15

Custom Templates

Code is generated from templates using Handlebars. You can create custom templates for any language, framework, or style by adding a new directory to the templates directory. The name of the directory will be the name of the template. Inside the directory, you can add any files or directories you want to be created when the template is used. You can use the following variables in your file and directory names to have them replaced with the appropriate values:

  • {{year}}: The year of the problem.
  • {{day}}: The day of the problem.
  • {{puzzleInput}}: The puzzle input for the problem. Refer to Puzzle Input for more information.

Puzzle Input

You can specify a session token to be used to retrieve your own puzzle input for a problem. This can be done in one of two ways:

  1. Set the AOC_SESSION environment variable to your session token.
  2. Pass the session token as an argument to the new command using the -s or --session flag.

You can get your session token by going to the Advent of Code site while logged in, and inspecting your cookies in the DevTools. Search for the string session= and copy the value of the value attribute of the input element. This is your session token.

Features

  • Simple and intuitive CLI commands to save you those precious seconds late at night
  • Customizable templates to support whatever weird ass languages you are using for AoC

Contributing

Contributions to this project are welcome! Please feel free to submit pull requests or create issues for any bugs or enhancements.

About

Command Line tools for working on Advent of Code

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages