From 6bb234ee6a36f6492b28a1e49c528f859a7c87b1 Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Mon, 6 Dec 2021 15:05:29 +0100 Subject: [PATCH] aoc-get: init helper script --- aoc-get/aoc-get | 39 +++++++++++++++++++++++++++++++++++++++ aoc-get/default.nix | 32 ++++++++++++++++++++++++++++++++ flake.nix | 6 ++++++ 3 files changed, 77 insertions(+) create mode 100755 aoc-get/aoc-get create mode 100644 aoc-get/default.nix diff --git a/aoc-get/aoc-get b/aoc-get/aoc-get new file mode 100755 index 0000000..a6248f0 --- /dev/null +++ b/aoc-get/aoc-get @@ -0,0 +1,39 @@ +#!/usr/bin/env fish + +function usage + printf "Usage: %s [OPTIONS]\n\n" (status -f) + printf "Options:\n" + printf " -h/--help Prints help and exits\n" + printf " -d/--day=NUM Day (minimum 1, maximum 25)\n" + printf " -y/--year=NUM Year (minimum 2015, default current year)\n" +end + +set --local options +set --append options (fish_opt --short h --long help) +set --append options (fish_opt --short d --long day --required-val)"!_validate_int --min 1 --max 25" +set --append options (fish_opt --short y --long year --required-val)"!_validate_int --min 2015" + +argparse $options -- $argv + +set --query _flag_year; or set --local _flag_year (date +%Y) + +if set --query _flag_help + usage + exit 0 +end + +if not set --query _flag_day + echo "Please provide a day to fetch" + exit 1 +end + +if not set --query AOC_SESSION + echo "Please provide a session cookie via the AOC_SESSION environment variable" + exit 1 +end + +set --local padded_day (string pad --width 2 --char 0 $_flag_day) + +curl https://adventofcode.com/{$_flag_year}/day/{$_flag_day}/input \ + --cookie "session="{$AOC_SESSION} \ + --output aoc{$_flag_year}/input/day{$padded_day}.txt diff --git a/aoc-get/default.nix b/aoc-get/default.nix new file mode 100644 index 0000000..eef4f45 --- /dev/null +++ b/aoc-get/default.nix @@ -0,0 +1,32 @@ +{ lib +, curl +, makeWrapper +, stdenvNoCC }: +stdenvNoCC.mkDerivation rec { + pname = "aoc-get"; + version = "0.1.0"; + + src = ./aoc-get; + + buildInputs = [ + makeWrapper + ]; + + dontUnpack = true; + dontBuild = true; + + wrapperPath = lib.makeBinPath [ + curl + ]; + + fixupPhase = '' + patchShebangs $out/bin/${pname} + wrapProgram $out/bin/${pname} --prefix PATH : "${wrapperPath}" + ''; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${pname} + chmod a+x $out/bin/${pname} + ''; +} diff --git a/flake.nix b/flake.nix index fb06686..31a64b2 100644 --- a/flake.nix +++ b/flake.nix @@ -18,9 +18,15 @@ nixpkgs-fmt rust-analyzer myRust + + self.packages.${system}.aoc-get ]; RUST_SRC_PATH = "${pkgs.rust-bin.stable.latest.rust-src}/lib/rustlib/src/rust/library"; }; + + packages = { + aoc-get = pkgs.callPackage ./aoc-get {}; + }; }); }