Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jzimbel/adventofcode-elixir-template
Template repository for Elixir-based Advent of Code projects
https://github.com/jzimbel/adventofcode-elixir-template
advent-of-code adventofcode codespaces devcontainer elixir elixir-lang
Last synced: 28 days ago
JSON representation
Template repository for Elixir-based Advent of Code projects
- Host: GitHub
- URL: https://github.com/jzimbel/adventofcode-elixir-template
- Owner: jzimbel
- License: mit
- Created: 2024-11-25T01:04:53.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-25T18:18:53.000Z (30 days ago)
- Last Synced: 2024-11-25T18:34:58.014Z (30 days ago)
- Topics: advent-of-code, adventofcode, codespaces, devcontainer, elixir, elixir-lang
- Language: Elixir
- Homepage:
- Size: 10.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Advent of Code Elixir Starter
Template repository for Elixir solutions to [Advent of Code][aoc] puzzles.
Adapted from another [Advent of Code Elixir Starter][aoc-starter].
## ✨ Features ✨
- Two Mix tasks: (Run `mix help ` after building the project for usage info)
- `mix advent.gen` - Generate boilerplate solution and test modules for a new year of puzzles.
- `mix advent.solve` - Run or benchmark a solution.
- Automatically downloads puzzle inputs as needed.
- Optional benchmarking with Benchee.
- [Special support][shared-parse] for puzzle solutions that reuse the same parsed value for both parts.## Usage
Start by creating your own repository from this template, using the big green
button up there ↗️.Once that's done, let's get your project running.
Enable the automatic puzzle input downloader by creating a `config/secrets.exs`
file containing the following:```elixir
import Configconfig :advent_of_code, AdventOfCode.Input,
allow_network?: true,
session_cookie: "..." # paste your AoC session cookie value here
```Fetch dependencies with
```shell
mix deps.get
```Generate a set of solution and test files for a new year of puzzles with
```shell
mix advent.gen -y${YEAR}
```Now you can run the solutions with
```shell
mix advent.solve -d${DAY} [-p${1 | 2}] [-y${YEAR}] [--bench]
```and tests with
```shell
mix test
```either directly in your local terminal, or in VSCode's terminal pane while
connected to a dev container as described below.## Get started in a self-contained environment
Your project generated from this template repository can optionally run in a dev container for remote development.\
You have two options:### :octocat: Run in your browser using GitHub Codespaces
1. Go to the landing page of this repo.
1. Click the `<> Code` drop-down menu, select the Codespaces tab, and click the
big green button.
1. Wait for the Codespace to build. It should be relatively speedy if you build
from the main branch, as I have prebuilds configured for that.
1. Once the in-browser editor activates, follow the steps from [Usage](#usage)
to enable puzzle downloads and run a solution. (You can use
Ctrl+Shift+` to open a terminal pane.)### :whale: Using Visual Studio Code + Docker Desktop
Requires Docker Desktop or an alternative Docker-compliant CLI, like podman.
Simply open the project directory locally in VS Code. It will show a popup
asking if you want to use the Dev Container. It will then guide you through
getting set up, building the container image, and connecting to the running dev
container.[aoc]: https://adventofcode.com/
[aoc-starter]: https://github.com/mhanberg/advent-of-code-elixir-starter
[shared-parse]: lib/advent_of_code/solution/shared_parse.ex