Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / office / todoman / default.nix
blobf2940b1e3fb9b1d99aa0ccc8c39671a72a39c2cc
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , glibcLocales
5 , installShellFiles
6 , jq
7 , python3
8 }:
10 python3.pkgs.buildPythonApplication rec {
11   pname = "todoman";
12   version = "4.4.0";
13   format = "pyproject";
15   src = fetchFromGitHub {
16     owner = "pimutils";
17     repo = pname;
18     rev = "refs/tags/v${version}";
19     hash = "sha256-5tQaNT6QVN9mxa9t6OvMux4ZGy4flUqszTAwet2QL0w=";
20   };
22   SETUPTOOLS_SCM_PRETEND_VERSION = version;
24   nativeBuildInputs = [
25     installShellFiles
26   ] ++ (with python3.pkgs; [
27     setuptools-scm
28   ]);
30   propagatedBuildInputs = with python3.pkgs; [
31     atomicwrites
32     click
33     click-log
34     click-repl
35     humanize
36     icalendar
37     parsedatetime
38     python-dateutil
39     pyxdg
40     tabulate
41     urwid
42   ];
44   nativeCheckInputs = with python3.pkgs; [
45     flake8
46     flake8-import-order
47     freezegun
48     hypothesis
49     pytestCheckHook
50     glibcLocales
51     pytest-cov
52   ];
54   LC_ALL = "en_US.UTF-8";
56   postInstall = ''
57     installShellCompletion --bash contrib/completion/bash/_todo
58     substituteInPlace contrib/completion/zsh/_todo --replace "jq " "${lib.getExe jq} "
59     installShellCompletion --zsh contrib/completion/zsh/_todo
60   '';
62   disabledTests = [
63     # Testing of the CLI part and output
64     "test_color_due_dates"
65     "test_color_flag"
66     "test_default_command"
67     "test_main"
68     "test_missing_cache_dir"
69     "test_sorting_null_values"
70     "test_xdg_existant"
71     # Tests are sensitive to performance
72     "test_sorting_fields"
73   ];
75   pythonImportsCheck = [
76     "todoman"
77   ];
79   meta = {
80     homepage = "https://github.com/pimutils/todoman";
81     description = "Standards-based task manager based on iCalendar";
82     longDescription = ''
83       Todoman is a simple, standards-based, cli todo (aka task) manager. Todos
84       are stored into iCalendar files, which means you can sync them via CalDAV
85       using, for example, vdirsyncer.
87       Todos are read from individual ics files from the configured directory.
88       This matches the vdir specification. There is support for the most common TODO
89       features for now (summary, description, location, due date and priority) for
90       now.
91       Unsupported fields may not be shown but are never deleted or altered.
92     '';
93     changelog = "https://todoman.readthedocs.io/en/stable/changelog.html#v${builtins.replaceStrings ["."] ["-"] version}";
94     license = lib.licenses.isc;
95     maintainers = with lib.maintainers; [ leenaars antonmosich ];
96     mainProgram = "todo";
97   };