Changes
3 changed files (+152/-29)
-
-
@@ -26,6 +26,7 @@ const version = b.option([]const u8, "version", "Application version, without \"v\" prefix") orelse "dev";const update_snapshot = b.option(bool, "update-snapshot", "Update snapshot on snapshot tests") orelse false; const zsh_completion = b.option(bool, "zsh-completion", "Install Zsh completion file") orelse false; const fish_completion = b.option(bool, "fish-completion", "Install fish shell completion file") orelse false; const exe = addExe(b, .{ .target = target,
-
@@ -95,6 +96,14 @@ }if (zsh_completion) { const install = b.addInstallFile(b.path("dist/completion.zsh"), "share/zsh/site-functions/_sunwait"); root_step.dependOn(&install.step); } if (fish_completion) { const install = b.addInstallFile( b.path("dist/completion.fish"), "share/fish/vendor_completions.d/sunwait.fish", ); root_step.dependOn(&install.step); } }
-
-
dist/completion.fish (new)
-
@@ -0,0 +1,84 @@# Copyright (C) 2025 Shota FUJI # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # # SPDX-License-Identifier: GPL-3.0-only set -l commands poll wait report list set -l events sunrise sunset complete -c sunwait --no-files # sunwait [OPTIONS] complete -c sunwait --short h --long help -d "Prints usage to stdout and exits" complete -c sunwait --short v --long version -d "Prints version to stdout and exits" complete -c sunwait --long debug -d "Prints debug log and shortens wait duration to 1 min" complete -c sunwait --long utc -d "Parses timezone-less dates and times as UTC" complete -c sunwait \ --long latitude --require-parameter --no-files \ --description "Latitude in degree, signed float or positive float with N/S suffix" complete -c sunwait \ --long longitude --require-parameter --no-files \ --description "Longitude in degree, signed float or positive float with E/W suffix" complete -c sunwait \ --long twilight --require-parameter --no-files \ --argument "daylight civil nautical astronomical" \ --description "Twilight type or angle" complete -c sunwait \ --short o --long offset --require-parameter --no-files \ --description "Time offset in minutes" complete -c sunwait \ --condition "not __fish_seen_subcommand_from $commands" \ -a "$commands" # sunwait poll [OPTIONS] complete -c sunwait \ --condition "__fish_seen_subcommand_from poll" \ --long at --require-parameter --no-files \ --description "YYYY-MM-DDThh:mm:ssZ" # sunwait wait [OPTIONS] complete -c sunwait \ --condition "__fish_seen_subcommand_from wait" \ --short e --long event --require-parameter --no-files \ --argument "$events" \ --description "Events to wait for" # sunwait report [OPTIONS] complete -c sunwait \ --condition "__fish_seen_subcommand_from report" \ --long date --require-parameter --no-files \ --description "Date to generate report of, in YYYY-MM-DD" # sunwait list [OPTIONS] complete -c sunwait \ --condition "__fish_seen_subcommand_from list" \ --long from --require-parameter --no-files \ --description "Start date, in YYYY-MM-DD" complete -c sunwait \ --condition "__fish_seen_subcommand_from list" \ --short e --long event --require-parameter --no-files \ --argument "$events" \ --description "Events to print"
-
-
-
@@ -69,44 +69,74 @@zigBuildFlags = [ "-Dman" "-Dzsh-completion" "-Dfish-completion" ]; }; apps = { # $ nix run .#zsh # Bare-bone Zsh session for testing completion zsh = let sunwait = self.packages.${system}.default; apps = let sunwait = self.packages.${system}.default; in { # $ nix run .#zsh # Bare-bone Zsh session for testing completion zsh = let test-zsh = pkgs.symlinkJoin { name = "sunwait-test-zsh"; test-zsh = pkgs.symlinkJoin { name = "sunwait-test-zsh"; nativeBuildInputs = [ pkgs.makeWrapper ]; nativeBuildInputs = [ pkgs.makeWrapper ]; paths = [ pkgs.zsh self.packages.${system}.default ]; paths = [ pkgs.zsh self.packages.${system}.default ]; postBuild = '' mkdir -p $out/share/$name echo 'fpath+=${sunwait}/share/zsh/site-functions' >> $out/share/$name/.zshrc echo 'autoload -U compinit && compinit' >> $out/share/$name/.zshrc chmod +x $out/share/$name/.zshrc postBuild = '' mkdir -p $out/share/$name echo 'fpath+=${sunwait}/share/zsh/site-functions' >> $out/share/$name/.zshrc echo 'autoload -U compinit && compinit' >> $out/share/$name/.zshrc chmod +x $out/share/$name/.zshrc wrapProgram $out/bin/zsh \ --set ZDOTDIR $out/share/$name \ --set MANPATH :${sunwait}/share/man \ --prefix PATH : ${pkgs.lib.makeBinPath [ sunwait ]} ''; }; in { type = "app"; program = "${test-zsh}/bin/zsh"; }; wrapProgram $out/bin/zsh \ --set ZDOTDIR $out/share/$name \ --set MANPATH :${sunwait}/share/man \ --prefix PATH : ${pkgs.lib.makeBinPath [ sunwait ]} ''; # $ nix run .#fish # Fish session with completion configured fish = let test-fish = pkgs.symlinkJoin { name = "sunwait-test-fish"; nativeBuildInputs = [ pkgs.makeWrapper ]; paths = [ pkgs.fish self.packages.${system}.default ]; postBuild = '' wrapProgram $out/bin/fish \ --set MANPATH :${sunwait}/share/man \ --prefix fish_complete_path : ${sunwait}/share/fish/vendor_completions.d \ --prefix PATH : ${pkgs.lib.makeBinPath [ sunwait ]} ''; }; in { type = "app"; program = "${test-fish}/bin/fish"; }; in { type = "app"; program = "${test-zsh}/bin/zsh"; }; }; }; devShell = pkgs.mkShell { inherit nativeBuildInputs buildInputs;
-