diff --git a/pkgs/default.nix b/pkgs/default.nix index b08d3df0..114f87b0 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -38,6 +38,8 @@ let kat-gpg-status = super.callPackage ./kat-gpg-status { }; + kat-tw-export = super.callPackage ./kat-tw-export { }; + kat-scrot = super.callPackage ./kat-scrot { }; linuxPackagesFor = kernel: diff --git a/pkgs/kat-tw-export/default.nix b/pkgs/kat-tw-export/default.nix new file mode 100644 index 00000000..85eef4e9 --- /dev/null +++ b/pkgs/kat-tw-export/default.nix @@ -0,0 +1,14 @@ +{ stdenv, makeWrapper, perl, perlPackages }: + +stdenv.mkDerivation rec { + pname = "kat-tw-export"; + version = "0.0.1"; + src = ./tw.pl; + buildInputs = [ perl perlPackages.JSON ]; + nativeBuildInputs = [ makeWrapper ]; + unpackPhase = "true"; + installPhase = '' + install -Dm0755 $src $out/bin/kat-tw-export + wrapProgram $out/bin/kat-tw-export --set PERL5LIB $PERL5LIB + ''; +} diff --git a/pkgs/kat-tw-export/tw.pl b/pkgs/kat-tw-export/tw.pl new file mode 100644 index 00000000..853f24b5 --- /dev/null +++ b/pkgs/kat-tw-export/tw.pl @@ -0,0 +1,90 @@ +#!/usr/bin/env perl +################################################################################ +## +## Copyright 2006 - 2017, Paul Beckingham, Federico Hernandez. +## +## Permission is hereby granted, free of charge, to any person obtaining a copy +## of this software and associated documentation files (the "Software"), to deal +## in the Software without restriction, including without limitation the rights +## to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +## copies of the Software, and to permit persons to whom the Software is +## furnished to do so, subject to the following conditions: +## +## The above copyright notice and this permission notice shall be included +## in all copies or substantial portions of the Software. +## +## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +## OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +## FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +## THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +## LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +## OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +## SOFTWARE. +## +## http://www.opensource.org/licenses/mit-license.php +## +################################################################################ + +use strict; +use warnings; + +# Give a nice error if the (non-standard) JSON module is not installed. +eval "use JSON"; +if ($@) +{ + print "Error: You need to install the JSON Perl module.\n"; + exit 1; +} + +# Use the taskwarrior 2.0+ export command to filter and return JSON +my $command = join (' ', ("env PATH='$ENV{PATH}' task rc.verbose=nothing rc.json.array=no export", @ARGV)); +if ($command =~ /No matches/) +{ + printf STDERR $command; + exit 1; +} + +# Generate output. +print "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n"; + +my $count = 0; +for my $task (split "\n", qx{$command}) +{ + ++$count; + my $data = from_json ($task); + + print " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n"; +} + +print " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDPriDescriptionProjectDue
", ($data->{'id'} || ''), "", ($data->{'priority'} || ''), "", ($data->{'description'} || ''), "", ($data->{'project'} || ''), "", ($data->{'due'} || ''), "
", $count, " matching tasks
\n", + " \n", + "\n"; + +exit 0; + +################################################################################ +