advent_of_code_cli 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +99 -16
- data/lib/advent_of_code_cli/commands/solve.rb +1 -1
- data/lib/advent_of_code_cli/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 874bcb2472449a2b367b4276efabaf1c7b15a19857c0e331d16bf3cd6da7e700
|
4
|
+
data.tar.gz: 36f956b45bb8849b1b17880132842f16194209d3cfaff592be643b98da4d7ca2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3387033c1bf3c5f5edd4cd335647c64d3722ba0ffd5a6f716e7ec895d6e789a537d67b181cc44d29d1c99eec79590b3fe69a3627fe4d19e3eeedf180d1b091b1
|
7
|
+
data.tar.gz: e952fb854364b9bfbcfdd6a84e194476c038ed176fde60903818dce824899c570b84cb256819e46f6afe5438402551adef59bc0825520d85adfce1819c9e8d2a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,33 +1,116 @@
|
|
1
|
-
#
|
1
|
+
# 🎄 Advent of Code CLI
|
2
2
|
|
3
|
-
|
3
|
+
> ⚠️ **Note:** This tool is under active development. I built in in a couple hours with no automated tests. Things may change between versions!
|
4
4
|
|
5
|
-
|
5
|
+
A little CLI tool that scaffolds and runs [Advent of Code](https://advent-of-code.com) solutions in Ruby.
|
6
6
|
|
7
|
-
|
7
|
+
This project is heavily based on [advent-of-code-rust](https://github.com/arturopala/advent-of-code-rust). Go check it out!
|
8
8
|
|
9
|
-
|
9
|
+
## Installation
|
10
10
|
|
11
|
-
|
11
|
+
Add this line to your application's `Gemfile`:
|
12
12
|
|
13
|
-
|
13
|
+
```ruby
|
14
|
+
gem "advent_of_code_cli"
|
15
|
+
```
|
14
16
|
|
15
|
-
|
17
|
+
Run `bundle install`.
|
16
18
|
|
17
19
|
## Usage
|
18
20
|
|
19
|
-
|
21
|
+
### Scaffold
|
20
22
|
|
21
|
-
|
23
|
+
This command will set up the files for any day of Advent of Code. It takes a nubmer between 1 and 25 as an argument.
|
22
24
|
|
23
|
-
|
25
|
+
```bash
|
26
|
+
bundle exec aoc_cli scaffold 1
|
27
|
+
```
|
24
28
|
|
25
|
-
|
29
|
+
This will result in the following output:
|
26
30
|
|
27
|
-
|
31
|
+
```
|
32
|
+
Creating file: 01.rb...
|
33
|
+
Creating inputs directory...
|
34
|
+
Creating file: inputs/01.txt...
|
35
|
+
Creating examples directory...
|
36
|
+
Creating examples/01 directory...
|
37
|
+
```
|
38
|
+
|
39
|
+
The file `01.rb` will have the following structure:
|
40
|
+
|
41
|
+
```rb
|
42
|
+
module Day01
|
43
|
+
class << self
|
44
|
+
def part_one(input)
|
45
|
+
raise NotImplementedError
|
46
|
+
end
|
47
|
+
|
48
|
+
def part_two(input)
|
49
|
+
raise NotImplementedError
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
```
|
54
|
+
|
55
|
+
I would love to make this structure configurable in the future.
|
56
|
+
|
57
|
+
### Download
|
58
|
+
|
59
|
+
This command will download the input for a given day.
|
60
|
+
|
61
|
+
In order for this to work, you must provide your Advent of Code session cookie to the program in an environment variable:
|
62
|
+
|
63
|
+
```bash
|
64
|
+
export AOC_COOKIE=your-cookie
|
65
|
+
```
|
66
|
+
|
67
|
+
Once the environment variable is set, you can request your personal input for any day.
|
68
|
+
|
69
|
+
```bash
|
70
|
+
bundle exec aoc_cli download 1
|
71
|
+
```
|
28
72
|
|
29
|
-
|
73
|
+
This will create the following output:
|
30
74
|
|
31
|
-
|
75
|
+
```
|
76
|
+
Fetching input...
|
77
|
+
Writing input to inputs/01.txt...
|
78
|
+
Done!
|
79
|
+
```
|
80
|
+
|
81
|
+
By default, the CLI will request the input for this year, but you can request previous years' input by passing a `--year` flag.
|
82
|
+
|
83
|
+
```bash
|
84
|
+
bundle exec aoc_cli download 1 --year 2021
|
85
|
+
```
|
86
|
+
|
87
|
+
### Solve
|
88
|
+
|
89
|
+
This command will run your solution to a certain day's puzzle.
|
90
|
+
|
91
|
+
```
|
92
|
+
bundle exec aoc_cli solve 1
|
93
|
+
```
|
94
|
+
|
95
|
+
This will create the following output:
|
96
|
+
|
97
|
+
```
|
98
|
+
Reading input...
|
99
|
+
Loading solution...
|
100
|
+
|
101
|
+
Running part one...
|
102
|
+
Part one result: 10000
|
103
|
+
Took 0.000259 seconds to solve
|
104
|
+
|
105
|
+
Running part two...
|
106
|
+
Part two result: 10000
|
107
|
+
Took 0.00026 seconds to solve
|
108
|
+
|
109
|
+
Done!
|
110
|
+
```
|
111
|
+
|
112
|
+
This command expects files to be in the format provided by the `scaffold` command. Once again, I would love to make this configurable but haven't gotten around to it yet.
|
113
|
+
|
114
|
+
## Contributing
|
32
115
|
|
33
|
-
|
116
|
+
Issues and code contributions are welcome! Happy Advent of Code to all who celebrate! 🎁
|
@@ -10,7 +10,7 @@ module AdventOfCode
|
|
10
10
|
raise MissingSolutionError unless File.exist?(solution_file_name)
|
11
11
|
|
12
12
|
say "Reading input..."
|
13
|
-
input = File.
|
13
|
+
input = File.readlines(input_file_name, chomp: true)
|
14
14
|
|
15
15
|
say "Loading solution..."
|
16
16
|
load(solution_file_name)
|