advent_of_code_cli 0.1.2 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 35f78ceadc5e206cc38c1384188d68b60fd1e7c747836493f65ff140f771946f
4
- data.tar.gz: 811234a1a95f4e87fb93f5b842ab057c1c5a9f5e0b3a8eb19a05aeaa350e72e6
3
+ metadata.gz: 0b2cac14f5226dc5a7c96642991455c2f33c794d2897669393c095ca350cdae2
4
+ data.tar.gz: e3d32b4654fc79cfb0fb86e2a33004019142ba6fb523215e2da7692b071879c5
5
5
  SHA512:
6
- metadata.gz: d95a59af2fcc9fda9ecc953e8156edb826329637ba6c5093af53ddd118e4becff8b65c92a41868a9612e79512cb54e15411a6c6a664c65b75b84e59e1ddd7411
7
- data.tar.gz: c469d86e56cbf45d67b3f28966a724f7c6036ed642d30ca218f3d1908429e62929491fed86da69ae1eb6eecb80168720ec8d3c992c94aa7e7e013f48a4d1c3b3
6
+ metadata.gz: 2e1723a650da1f128a8f3cae5af52ae0f2e7b04845a883a82181f076d47b14b984a26b3ad6cc79ea4c1ce2272b6232531d2892e8790cd202dbcd053d1ccab98f
7
+ data.tar.gz: 71fc3eed81a924700eddb86a9c1f06c2a3ce0c43cbaf09e64f34c6078e3876f6d5409bbfbb4e37952165db444c866e3ebbbd5daaf63a79b7a725402570705f92
data/.rubocop.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.6
3
+ NewCops: enable
3
4
 
4
5
  Style/Documentation:
5
6
  Enabled: false
@@ -14,3 +15,9 @@ Style/StringLiteralsInInterpolation:
14
15
 
15
16
  Layout/LineLength:
16
17
  Max: 120
18
+
19
+ Metrics/AbcSize:
20
+ Enabled: false
21
+
22
+ Metrics/MethodLength:
23
+ Enabled: false
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- advent_of_code_cli (0.1.2)
4
+ advent_of_code_cli (0.1.4)
5
5
  thor (>= 1.2.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,33 +1,118 @@
1
- # AdventOfCodeCli
1
+ # 🎄 Advent of Code CLI
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/advent_of_code_cli`. To experiment with that code, run `bin/console` for an interactive prompt.
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
- TODO: Delete this and the text above, and describe your gem
5
+ A little CLI tool that scaffolds and runs [Advent of Code](https://adventofcode.com) solutions in Ruby.
6
6
 
7
- ## Installation
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
- Install the gem and add to the application's Gemfile by executing:
9
+ ## Installation
10
10
 
11
- $ bundle add advent_of_code_cli
11
+ Add this line to your application's `Gemfile`:
12
12
 
13
- If bundler is not being used to manage dependencies, install the gem by executing:
13
+ ```ruby
14
+ gem "advent_of_code_cli"
15
+ ```
14
16
 
15
- $ gem install advent_of_code_cli
17
+ Run `bundle install`.
16
18
 
17
19
  ## Usage
18
20
 
19
- TODO: Write usage instructions here
21
+ ### Scaffold
20
22
 
21
- ## Development
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
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
25
+ ```bash
26
+ bundle exec aoc_cli scaffold 1
27
+ ```
24
28
 
25
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
29
+ This will result in the following output:
26
30
 
27
- ## Contributing
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
+ ...where `input` is an `Array[String]` of all the lines without newlines.
56
+
57
+ I would love to make this structure configurable in the future.
58
+
59
+ ### Download
60
+
61
+ This command will download the input for a given day.
62
+
63
+ In order for this to work, you must provide your Advent of Code session cookie to the program in an environment variable:
64
+
65
+ ```bash
66
+ export AOC_COOKIE=your-cookie
67
+ ```
68
+
69
+ Once the environment variable is set, you can request your personal input for any day.
70
+
71
+ ```bash
72
+ bundle exec aoc_cli download 1
73
+ ```
28
74
 
29
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/advent_of_code_cli.
75
+ This will create the following output:
30
76
 
31
- ## License
77
+ ```
78
+ Fetching input...
79
+ Writing input to inputs/01.txt...
80
+ Done!
81
+ ```
82
+
83
+ By default, the CLI will request the input for this year, but you can request previous years' input by passing a `--year` flag.
84
+
85
+ ```bash
86
+ bundle exec aoc_cli download 1 --year 2021
87
+ ```
88
+
89
+ ### Solve
90
+
91
+ This command will run your solution to a certain day's puzzle.
92
+
93
+ ```
94
+ bundle exec aoc_cli solve 1
95
+ ```
96
+
97
+ This will create the following output:
98
+
99
+ ```
100
+ Reading input...
101
+ Loading solution...
102
+
103
+ Running part one...
104
+ Part one result: 10000
105
+ Took 0.000259 seconds to solve
106
+
107
+ Running part two...
108
+ Part two result: 10000
109
+ Took 0.00026 seconds to solve
110
+
111
+ Done!
112
+ ```
113
+
114
+ 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.
115
+
116
+ ## Contributing
32
117
 
33
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
118
+ Issues and code contributions are welcome! Happy Advent of Code to all who celebrate! 🎁
@@ -31,7 +31,7 @@ module AdventOfCode
31
31
  private
32
32
 
33
33
  def cookie
34
- @cookie ||= ENV["AOC_COOKIE"]
34
+ @cookie ||= ENV.fetch("AOC_COOKIE", nil)
35
35
  end
36
36
 
37
37
  def cookie_present?
@@ -46,6 +46,9 @@ module AdventOfCode
46
46
 
47
47
  request = Net::HTTP::Get.new(url)
48
48
  request["Cookie"] = "session=#{cookie}"
49
+ # The creator of Advent of Code has requested that automated tools send identifying information
50
+ # when making requests: https://www.reddit.com/r/adventofcode/comments/z9dhtd
51
+ request["User-Agent"] = "github.com/egiurleo/advent_of_code_cli by emily.samp@icloud.com"
49
52
 
50
53
  response = https.request(request)
51
54
  response.read_body
@@ -32,17 +32,17 @@ module AdventOfCode
32
32
 
33
33
  def solution_file_contents
34
34
  <<~RUBY
35
- module Day#{day_string}
36
- class << self
37
- def part_one(input)
38
- raise NotImplementedError
39
- end
40
-
41
- def part_two(input)
42
- raise NotImplementedError
35
+ module Day#{day_string}
36
+ class << self
37
+ def part_one(input)
38
+ raise NotImplementedError
39
+ end
40
+
41
+ def part_two(input)
42
+ raise NotImplementedError
43
+ end
43
44
  end
44
45
  end
45
- end
46
46
  RUBY
47
47
  end
48
48
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'benchmark'
4
-
5
3
  module AdventOfCode
6
4
  module Commands
7
5
  class Solve < Command
@@ -10,7 +8,7 @@ module AdventOfCode
10
8
  raise MissingSolutionError unless File.exist?(solution_file_name)
11
9
 
12
10
  say "Reading input..."
13
- input = File.read(input_file_name).strip
11
+ input = File.readlines(input_file_name, chomp: true)
14
12
 
15
13
  say "Loading solution..."
16
14
  load(solution_file_name)
@@ -34,7 +32,7 @@ module AdventOfCode
34
32
  end_time = Time.now
35
33
 
36
34
  say "Part #{part} result: #{result}"
37
- say "Took #{end_time-start_time} seconds to solve"
35
+ say "Took #{end_time - start_time} seconds to solve"
38
36
  end
39
37
  end
40
38
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AdventOfCode
4
- VERSION = "0.1.2"
4
+ VERSION = "0.1.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: advent_of_code_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emily Samp
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-01 00:00:00.000000000 Z
11
+ date: 2022-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -54,6 +54,7 @@ licenses:
54
54
  metadata:
55
55
  homepage_uri: https://github.com/egiurleo/advent_of_code_cli
56
56
  source_code_uri: https://github.com/egiurleo/advent_of_code_cli
57
+ rubygems_mfa_required: 'true'
57
58
  post_install_message:
58
59
  rdoc_options: []
59
60
  require_paths:
@@ -69,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  requirements: []
72
- rubygems_version: 3.3.7
73
+ rubygems_version: 3.3.26
73
74
  signing_key:
74
75
  specification_version: 4
75
76
  summary: A CLI tool to scaffold and run Advent of Code solutions.