Compare commits

...

13 Commits

Author SHA1 Message Date
Paul Beckingham
1422a15cbc Merge branch '1.7.1'
Conflicts:
	doc/man5/taskrc.5
2009-06-09 19:49:36 -04:00
Paul Beckingham
9c15457d7f Merge branch '1.7.1' 2009-06-09 19:35:24 -04:00
Federico Hernandez
20d8124a1d Fixed documentation for 1.7.1 2009-06-09 17:30:09 +02:00
Federico Hernandez
db6de54ccc * Updated project homepage reference and license text 2009-06-09 09:32:23 +02:00
Federico Hernandez
eb864820cf * Removed hard-coded version number 2009-06-09 09:31:44 +02:00
Federico Hernandez
0291e4c72e Changed some more references from beckingham.net to taskwarrior.org 2009-06-09 08:56:59 +02:00
Paul Beckingham
6e27feb8a3 Code Cleanup
- Removed Makefile.in from repository.  This was done in 1.8.0, but
  wasn't in 1.7.0.  It's time.
- Added Makefile.in to the .gitignore files.
2009-06-08 23:24:09 -04:00
Paul Beckingham
1dcba4619e Documentation Update
- Bumped version to 1.7.1.
- Changed references to email addresses, URLs.
2009-06-08 23:14:38 -04:00
Paul Beckingham
7538b43c68 Bug Fix - Build failure on OpenBSD
- Fixed build failure on OpenBSD (thanks to Mike Adonay).
2009-06-08 23:03:30 -04:00
Paul Beckingham
a57552f8bc Patch - Corrected missing line break
From 88311e6941804f5c697967ce82e6935d07941d02 Mon Sep 17 00:00:00 2001
From: Federico Hernandez <ultrafredde@gmail.com>
Date: Sat, 30 May 2009 23:00:32 +0200
Subject: [PATCH] iCorrected missing line break.
2009-05-30 17:17:54 -04:00
Paul Beckingham
64a891e8b1 Documentation Update - ran a spellchecker
- Caught a couple of typos in the man pages.
2009-05-28 11:47:44 -04:00
Paul Beckingham
73ecb0480f Patch - "Bug" discovered while creating Ubuntu deb package using lintian tool.
From 6b0bd9f9be642a8f08ea27c937a1c1eb2253565e Mon Sep 17 00:00:00 2001
From: Federico Hernandez <ultrafredde@gmail.com>
Date: Thu, 28 May 2009 08:58:28 +0200
Subject: [PATCH] Fixing line breaks.

"Bug" discovered while creating Ubuntu deb package using lintian tool.
2009-05-28 09:21:01 -04:00
Paul Beckingham
419ab2ad51 Documentation Update - synch with web site
- This commit synchronizes the web site and the master branch.
  Edits have been made on the site but not in the master branch,
  which is wrong.
2009-05-22 20:15:01 -04:00
28 changed files with 484 additions and 1637 deletions

1
.gitignore vendored
View File

@@ -12,3 +12,4 @@ configure
config.log config.log
www.xls www.xls
*~ *~
Makefile.in

View File

@@ -33,4 +33,5 @@ With thanks to:
Eric Farris Eric Farris
Bruce Dillahunty Bruce Dillahunty
Askme Too Askme Too
Mike Adonay

View File

@@ -1,6 +1,13 @@
------ current release --------------------------- ------ current release ---------------------------
1.7.1 (6/8/2009)
+ Fixed build failure on OpenBSD (thanks to Mike Adonay).
+ Took the opportunity of a patch release to update the various email
addresses and URLs in the various documents.
------ old releases ------------------------------
1.7.0 (5/14/2009) 1.7.0 (5/14/2009)
+ Improved the errors when parsing a corrupt or unrecognized pending.data + Improved the errors when parsing a corrupt or unrecognized pending.data
or completed.data file (thanks to T. Charles Yun). or completed.data file (thanks to T. Charles Yun).
@@ -39,8 +46,6 @@
variable, $VISUAL or $EDITOR environment variable) and allows direct variable, $VISUAL or $EDITOR environment variable) and allows direct
editing of all editable task details. editing of all editable task details.
------ old releases ------------------------------
1.6.1 (4/24/2009) 1b6faf57c998617024d0348a87b941a5d2ab2249 1.6.1 (4/24/2009) 1b6faf57c998617024d0348a87b941a5d2ab2249
+ Fixed bug that caused new, first-time .taskrc files to be written without + Fixed bug that caused new, first-time .taskrc files to be written without
including the custom report labels (thanks to P.C. Shyamshankar). including the custom report labels (thanks to P.C. Shyamshankar).

View File

@@ -18,5 +18,5 @@ included.
color.cpp Color support functions. color.cpp Color support functions.
rules.cpp Auto-colorization rules. rules.cpp Auto-colorization rules.
Please send bugs, patches to task@beckingham.net Please send bugs, patches to support@taskwarrior.org

View File

@@ -2,5 +2,5 @@ SUBDIRS = src
EXTRA_DIST = task_completion.sh doc/man1/task.1 doc/man5/taskrc.5 EXTRA_DIST = task_completion.sh doc/man1/task.1 doc/man5/taskrc.5
man1_MANS = doc/man1/task.1 man1_MANS = doc/man1/task.1
man5_MANS = doc/man5/taskrc.5 man5_MANS = doc/man5/taskrc.5
otherdir = $(datadir)/doc/task-1.7.0 otherdir = $(datadir)/doc/task-$(VERSION)
other_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README task_completion.sh other_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README task_completion.sh

View File

@@ -1,734 +0,0 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = .
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/auto.h.in \
$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
depcomp install-sh missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = auto.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
man1dir = $(mandir)/man1
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" \
"$(DESTDIR)$(otherdir)"
man5dir = $(mandir)/man5
NROFF = nroff
MANS = $(man1_MANS) $(man5_MANS)
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
otherDATA_INSTALL = $(INSTALL_DATA)
DATA = $(other_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = src
EXTRA_DIST = task_completion.sh doc/man1/task.1 doc/man5/taskrc.5
man1_MANS = doc/man1/task.1
man5_MANS = doc/man5/taskrc.5
otherdir = $(datadir)/doc/task-1.7.0
other_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README task_completion.sh
all: auto.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
cd $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
auto.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/auto.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status auto.h
$(srcdir)/auto.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f auto.h stamp-h1
install-man1: $(man1_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
done
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.1*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
1*) ;; \
*) ext='1' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
done
install-man5: $(man5_MANS) $(man_MANS)
@$(NORMAL_INSTALL)
test -z "$(man5dir)" || $(MKDIR_P) "$(DESTDIR)$(man5dir)"
@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.5*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
5*) ;; \
*) ext='5' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man5dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man5dir)/$$inst"; \
done
uninstall-man5:
@$(NORMAL_UNINSTALL)
@list='$(man5_MANS) $(dist_man5_MANS) $(nodist_man5_MANS)'; \
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
for i in $$l2; do \
case "$$i" in \
*.5*) list="$$list $$i" ;; \
esac; \
done; \
for i in $$list; do \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
case "$$ext" in \
5*) ;; \
*) ext='5' ;; \
esac; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
echo " rm -f '$(DESTDIR)$(man5dir)/$$inst'"; \
rm -f "$(DESTDIR)$(man5dir)/$$inst"; \
done
install-otherDATA: $(other_DATA)
@$(NORMAL_INSTALL)
test -z "$(otherdir)" || $(MKDIR_P) "$(DESTDIR)$(otherdir)"
@list='$(other_DATA)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
f=$(am__strip_dir) \
echo " $(otherDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(otherdir)/$$f'"; \
$(otherDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(otherdir)/$$f"; \
done
uninstall-otherDATA:
@$(NORMAL_UNINSTALL)
@list='$(other_DATA)'; for p in $$list; do \
f=$(am__strip_dir) \
echo " rm -f '$(DESTDIR)$(otherdir)/$$f'"; \
rm -f "$(DESTDIR)$(otherdir)/$$f"; \
done
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) auto.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) auto.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) auto.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) auto.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
test -d $(distdir) || mkdir $(distdir)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
am__remove_distdir=: \
am__skip_length_check=: \
distdir) \
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-lzma: distdir
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(MANS) $(DATA) auto.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man5dir)" "$(DESTDIR)$(otherdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-man install-otherDATA
install-dvi: install-dvi-recursive
install-exec-am:
install-html: install-html-recursive
install-info: install-info-recursive
install-man: install-man1 install-man5
install-pdf: install-pdf-recursive
install-ps: install-ps-recursive
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-man uninstall-otherDATA
uninstall-man: uninstall-man1 uninstall-man5
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
install-strip
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am am--refresh check check-am clean clean-generic \
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
distclean-generic distclean-hdr distclean-tags distcleancheck \
distdir distuninstallcheck dvi dvi-am html html-am info \
info-am install install-am install-data install-data-am \
install-dvi install-dvi-am install-exec install-exec-am \
install-html install-html-am install-info install-info-am \
install-man install-man1 install-man5 install-otherDATA \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
tags-recursive uninstall uninstall-am uninstall-man \
uninstall-man1 uninstall-man5 uninstall-otherDATA
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

14
NEWS
View File

@@ -1,4 +1,4 @@
Welcome to Task 1.7.0. Welcome to Task 1.7.1.
Task has been built and tested on the following configurations: Task has been built and tested on the following configurations:
@@ -12,17 +12,18 @@ Task has been built and tested on the following configurations:
- Ubuntu 8.10 Intrepid Ibex - Ubuntu 8.10 Intrepid Ibex
- Ubuntu 9.04 Jaunty Jackalope - Ubuntu 9.04 Jaunty Jackalope
- Arch Linux - Arch Linux
- OpenBSD 4.5
- Solaris 8 - Solaris 8
- Solaris 10 - Solaris 10
- Cygwin 1.5.25-14 - Cygwin 1.5.25-14
While Task has undergone testing, bugs are sure to remain. If you encounter a While Task has undergone testing, bugs are sure to remain. If you encounter a
bug, please contact me at task@beckingham.net. Here is what you could do, in bug, please contact me at support@taskwarrior.org. Here is what you could do, in
order of increasing effort (to you) and usefulness (to me): order of increasing effort (to you) and usefulness (to me):
- Do nothing. Bug probably won't get fixed. - Do nothing. Bug probably won't get fixed.
- Send an email to task@beckingham.net, explaining what you saw. The bug - Send an email to support@taskwarrior.org, explaining what you saw. The bug
will be addressed, and a new release will be made. You will be a hero. will be addressed, and a new release will be made. You will be a hero.
- Send an email, and a reproducible test case in the form of the few commands - Send an email, and a reproducible test case in the form of the few commands
@@ -33,9 +34,10 @@ order of increasing effort (to you) and usefulness (to me):
will be applied and tested, and a new release will be made. You will be a will be applied and tested, and a new release will be made. You will be a
hero. hero.
- Another option involves using Github's issue tracker, which can be found - Another option involves using the taskwarrior.org issue tracker, which can
at http://github.com/pbeckingham/task/issues which has the advantage that be found at http://taskwarrior.org/projects/taskwarrior/issues/new which has
everyone gets to see and track the issue. You will still be a hero. the advantage that everyone gets to see and track the issue. You will still
be a hero.
Thank you. Thank you.

14
README
View File

@@ -30,11 +30,7 @@ task is not for everyone and some of you may prefer to not proceed. The
movie or online tutorial file are the quickest way for you to make that movie or online tutorial file are the quickest way for you to make that
decision. The online tutorial can be found at: decision. The online tutorial can be found at:
http://www.beckingham.net/task.html http://taskwarrior.org/wiki/taskwarrior/Simple
Task is based on ideas presented in the todo.sh script, found on:
http://todotxt.org
Task has many more features than todo.sh, but fundamentally, they are Task has many more features than todo.sh, but fundamentally, they are
both working toward the same goals, which is to help you follow basic both working toward the same goals, which is to help you follow basic
@@ -42,14 +38,14 @@ Getting Things Done (GTD) principles.
All feedback is welcome, in addition to any bug reports or patches to: All feedback is welcome, in addition to any bug reports or patches to:
task@beckingham.net support@taskwarrior.org
Or better yet, get involved in the discussion at Or better yet, get involved in the discussion at
http://groups.google.com/group/taskprogram http://taskwarrior.org
Got an idea for an enhancement? Post a message! Got an idea for an enhancement? Post a message!
I have found that task makes me more productive and organized. We have found that task makes me more productive and organized.
I hope task can do the same for you. We hope task can do the same for you.

View File

@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61) AC_PREREQ(2.61)
AC_INIT(task, 1.7.0, bugs@beckingham.net) AC_INIT(task, 1.7.1, support@taskwarrior.org)
CFLAGS="${CFLAGS=}" CFLAGS="${CFLAGS=}"
CXXFLAGS="${CXXFLAGS=}" CXXFLAGS="${CXXFLAGS=}"

View File

@@ -1,4 +1,4 @@
.TH task 1 2009-05-14 "Task 1.7.0" "User Manuals" .TH task 1 2009-05-14 "Task 1.7.1" "User Manuals"
.SH NAME .SH NAME
task \- A command line todo manager. task \- A command line todo manager.
@@ -111,7 +111,7 @@ Shows a monthly calendar with due tasks marked.
.TP .TP
.B active .B active
Shows all tasks that are started but not comleted. Shows all tasks that are started but not completed.
.TP .TP
.B overdue .B overdue
@@ -220,7 +220,7 @@ Specify alternate configuration file.
.SH SPECIFYING DATES AND FREQUENCIES .SH SPECIFYING DATES AND FREQUENCIES
.SS DATES .SS DATES
Task reads dates from the commandline and displays dates in the Task reads dates from the command line and displays dates in the
reports. The expected and desired date format is determined by the reports. The expected and desired date format is determined by the
configuration variable configuration variable
.I dateformat .I dateformat
@@ -252,7 +252,7 @@ task ... due:eom
task ... due:eoy task ... due:eoy
.TP .TP
Next occuring weekday Next occurring weekday
task ... due:fri task ... due:fri
.RE .RE
@@ -272,15 +272,15 @@ Mondays, Tuesdays, Wednesdays, Thursdays, Fridays and skipping weekend days.
.TP .TP
weekly, 1w, 2w, ... weekly, 1w, 2w, ...
Eery week or a number of weeks. Every week or a number of weeks.
.TP .TP
biweekly, fortnight biweekly, fortnight
Every two weeks. Every two weeks.
.TP .TP
quaterly, 1q, 2q, ... quarterly, 1q, 2q, ...
Every three months, a quarter, or a number of quaters. Every three months, a quarter, or a number of quarters.
.TP .TP
semiannual semiannual
@@ -319,16 +319,14 @@ could be list, ls or long.
.SH EXAMPLES .SH EXAMPLES
A small section for examples e.g. some stuff from For examples please see the online documentation at
.br .br
http://www.beckingham.net/30second.html <http://taskwarrior.org/wiki/taskwarrior/Simple>
.br
http://www.beckingham.net/simple.html
.SH FILES .SH FILES
.TP .TP
~/.taskrc User configuration file. ~/.taskrc User configuration file - see also taskrc(5).
.TP .TP
~/.task The default directory where task stores its data files. The location ~/.task The default directory where task stores its data files. The location
@@ -341,7 +339,7 @@ can be configured in the configuration file.
~/.task/completed.data The file that contains the completed "done" tasks. ~/.task/completed.data The file that contains the completed "done" tasks.
.SH "CREDITS & COPYRIGHTS" .SH "CREDITS & COPYRIGHTS"
task was written by P. Beckingham <task@beckingham.net>. task was written by P. Beckingham <paul@beckingham.net>.
.br .br
Copyright (C) 2006 \- 2009 P. Beckingham Copyright (C) 2006 \- 2009 P. Beckingham
@@ -357,26 +355,18 @@ http://www.gnu.org/licenses/gpl-2.0.txt for more information.
For more information regarding task, the following may be referenced: For more information regarding task, the following may be referenced:
.TP .TP
<http://www.beckingham.net/task.html> The official site at
The official site. <http://taskwarrior.org>
.TP
<http://groups.google.com/group/taskprogram>
The official mailing list.
.TP .TP
The official code repository at
<http://github.com/pbeckingham/task/> <http://github.com/pbeckingham/task/>
The official code repository.
.TP
You can contact the project by writing an email to
<support@taskwarrior.org>
.SH REPORTING BUGS .SH REPORTING BUGS
.TP
Bugs in task may be reported to the issue-tracker at Bugs in task may be reported to the issue-tracker at
<http://taskwarrior.org>
.RS
<http://github.com/pbeckingham/task/issues>
.RE
or to the mailing list at
.RS
<http://groups.google.com/group/taskprogram>
.RE

View File

@@ -1,10 +1,11 @@
.TH taskrc 5 2009-05-14 "Task 1.7.0" "User Manuals" .TH taskrc 5 2009-05-14 "Task 1.7.1" "User Manuals"
.SH NAME .SH NAME
taskrc \- Configuration file for the task(1) command taskrc \- Configuration file for the task(1) command
.SH SYNOPSIS .SH SYNOPSIS
.B $HOME/.taskrc .B $HOME/.taskrc
.br
.B task rc:<directory-path>/.taskrc .B task rc:<directory-path>/.taskrc
.SH DESCRIPTION .SH DESCRIPTION
@@ -17,7 +18,7 @@ obtains its configuration data from a file called
$HOME/.taskrc $HOME/.taskrc
.RE .RE
The default location can be overriden using the The default location can be overridden using the
.I rc: .I rc:
attribute when running task: attribute when running task:
@@ -51,7 +52,7 @@ is the value the variable is to be set to.
and set a configuration variable to a certain value. The equal sign ("=") is used to separate the variable and set a configuration variable to a certain value. The equal sign ("=") is used to separate the variable
name from the value to be set. name from the value to be set.
The hash mark, or pounf sign ("#") is used as a "comment" character. It can be used to annotte the The hash mark, or pound sign ("#") is used as a "comment" character. It can be used to annotate the
configuration file. It is placed at the beginning of a line and all text after the character to the configuration file. It is placed at the beginning of a line and all text after the character to the
end of the line is ignored. end of the line is ignored.
@@ -222,7 +223,7 @@ Colors any task where the description contains X.
.TP .TP
.B .B
shadow.file=$HOME/.task/shadow.txt shadow.file=$HOME/.task/shadow.txt
If specified, designates a file path that will be autoamtically written to by task, If specified, designates a file path that will be automatically written to by task,
whenever the task database changes. In other words, it is automatically kept up to date. whenever the task database changes. In other words, it is automatically kept up to date.
The shadow.command configuration variable is used to determine which report is written The shadow.command configuration variable is used to determine which report is written
to the shadow file. There is no color used in the shadow file. This feature can be useful to the shadow file. There is no color used in the shadow file. This feature can be useful
@@ -301,8 +302,10 @@ Lists all task, all data, matching the specified criteria
.B .B
report.long.labels=ID,Project,Pri,Added,Started,Due,Recur,Age,Tags,Description report.long.labels=ID,Project,Pri,Added,Started,Due,Recur,Age,Tags,Description
.RE .RE
.br
.B .B
report.long.columns=id,project,priority,entry,start,due,recur,age,tags,description report.long.columns=id,project,priority,entry,start,due,recur,age,tags,description
.br
.B .B
report.long.sort=due+,priority-,project+ report.long.sort=due+,priority-,project+
@@ -315,8 +318,10 @@ Lists all tasks matching the specified criteria
.B .B
report.list.labels=ID,Project,Pri,Due,Active,Age,Description report.list.labels=ID,Project,Pri,Due,Active,Age,Description
.RE .RE
.br
.B .B
report.list.columns=id,project,priority,due,active,age,description report.list.columns=id,project,priority,due,active,age,description
.br
.B .B
report.list.sort=due+,priority-,project+ report.list.sort=due+,priority-,project+
@@ -330,8 +335,10 @@ Minimal listing of all tasks matching the specified criteria
.B .B
report.ls.labels=ID,Project,Pri,Description report.ls.labels=ID,Project,Pri,Description
.RE .RE
.br
.B .B
report.ls.columns=id,project,priority,description report.ls.columns=id,project,priority,description
.br
.B .B
report.ls.sort=priority-,project+ report.ls.sort=priority-,project+
@@ -344,10 +351,13 @@ Shows the newest tasks
.B .B
report.newest.labels=ID,Project,Pri,Due,Active,Age,Description report.newest.labels=ID,Project,Pri,Due,Active,Age,Description
.RE .RE
.br
.B .B
report.newest.columns=id,project,priority,due,active,age,description report.newest.columns=id,project,priority,due,active,age,description
.br
.B .B
report.newest.sort=id- report.newest.sort=id-
.br
.B .B
report.newest.limit=10 report.newest.limit=10
@@ -361,16 +371,18 @@ Shows the oldest tasks
.B .B
report.oldest.labels=ID,Project,Pri,Due,Active,Age,Description report.oldest.labels=ID,Project,Pri,Due,Active,Age,Description
.RE .RE
.br
.B .B
report.oldest.columns=id,project,priority,due,active,age,description report.oldest.columns=id,project,priority,due,active,age,description
.br
.B .B
report.oldest.sort=id+ report.oldest.sort=id+
.br
.B .B
report.oldest.limit=10 report.oldest.limit=10
.SH "CREDITS & COPYRIGHTS" .SH "CREDITS & COPYRIGHTS"
task was written by P. Beckingham <task@beckingham.net>. task was written by P. Beckingham <paul@beckingham.net>.
.br .br
Copyright (C) 2006 \- 2009 P. Beckingham Copyright (C) 2006 \- 2009 P. Beckingham
@@ -381,31 +393,23 @@ task is distributed under the GNU General Public License. See
http://www.gnu.org/licenses/gpl-2.0.txt for more information. http://www.gnu.org/licenses/gpl-2.0.txt for more information.
.SH SEE ALSO .SH SEE ALSO
.BR task (1) .BR task(1)
For more information regarding task, the following may be referenced: For more information regarding task, the following may be referenced:
.TP .TP
<http://www.beckingham.net/task.html> The official site at
The official site. <http://taskwarrior.org>
.TP
<http://groups.google.com/group/taskprogram>
The official mailing list.
.TP .TP
The official code repository at
<http://github.com/pbeckingham/task/> <http://github.com/pbeckingham/task/>
The official code repository.
.TP
You can contact the project by writing an email to
<support@taskwarrior.org>
.SH REPORTING BUGS .SH REPORTING BUGS
.TP
Bugs in task may be reported to the issue-tracker at Bugs in task may be reported to the issue-tracker at
<http://taskwarrior.org>
.RS
<http://github.com/pbeckingham/task/issues>
.RE
or to the mailing list at
.RS
<http://groups.google.com/group/taskprogram>
.RE

View File

@@ -90,7 +90,7 @@
<p> <p>
The intent here is that task 3 have its description modified to be The intent here is that task 3 have its description modified to be
"40123 is back-ordered, try again next week", but will be "4-123 is back-ordered, try again next week", but will be
misinterpreted as tasks 3, 4, 5, 6 ... 123 will all be modified misinterpreted as tasks 3, 4, 5, 6 ... 123 will all be modified
to have the description "is back-ordered, try again next week". to have the description "is back-ordered, try again next week".
The solution is to quote the whole description: The solution is to quote the whole description:

View File

@@ -120,21 +120,21 @@
<td>Mac OS X 10.5 (Leopard) Intel-only:</td> <td>Mac OS X 10.5 (Leopard) Intel-only:</td>
<td><a href="http://www.beckingham.net/task-1.7.0.pkg">task-1.7.0.pkg</a></td> <td><a href="http://www.beckingham.net/task-1.7.0.pkg">task-1.7.0.pkg</a></td>
</tr> </tr>
-->
<tr> <tr>
<td> <td>
Debian: Ubuntu 9.04:
(Thanks to <a href="http://blog.rfquerin.org">Richard&nbsp;Querin</a>): (Thanks to <a href="http://www.ultrafredde.com">Federico&nbsp;Hernandez</a>):
</td> </td>
<td><a href="http://www.beckingham.net/task_1.7.0-1_i386.deb">task_1.7.0-1_i386.deb</a></td> <td><a href="http://www.beckingham.net/task_1.7.0-0ubuntu1_i386.deb">task_1.7.0-0ubuntu1_i386.deb</a></td>
</tr> </tr>
<tr> <tr>
<td> <td>
Red Hat: Red Hat:
(Thanks to <a href="http://www.ultrafredde.com">Federico&nbsp;Hernandez</a>): (Thanks to <a href="http://www.ultrafredde.com">Federico&nbsp;Hernandez</a>):
</td> </td>
<td><a href="http://www.beckingham.net/task-1.7.0-1.FC10.i386.rpm">task-1.7.0-1.FC10.i386.rpm</a></td> <td><a href="http://www.beckingham.net/task-1.7.0-2.fc10.i386.rpm">task-1.7.0-2.fc10.i386.rpm</a></td>
</tr> </tr>
-->
<tr> <tr>
<td>Git - get the whole source and history:</td> <td>Git - get the whole source and history:</td>
<td><a href="http://github.com/pbeckingham/task">http://github.com/pbeckingham/task</a></td> <td><a href="http://github.com/pbeckingham/task">http://github.com/pbeckingham/task</a></td>
@@ -202,6 +202,7 @@
<li>Ubuntu 8.10 Intrepid Ibex <li>Ubuntu 8.10 Intrepid Ibex
<li>Ubuntu 9.04 Jaunty Jackalope <li>Ubuntu 9.04 Jaunty Jackalope
<li>Arch Linux <li>Arch Linux
<li>Slackware 12-12.2
<li>Solaris 8 <li>Solaris 8
<li>Solaris 10 <li>Solaris 10
<li>Cygwin 1.5.25-14 <li>Cygwin 1.5.25-14

1
src/.gitignore vendored
View File

@@ -1 +1,2 @@
*.o *.o
Makefile.in

View File

@@ -1,436 +0,0 @@
# Makefile.in generated by automake 1.10.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = task$(EXEEXT)
subdir = src
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/auto.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_task_OBJECTS = Config.$(OBJEXT) Date.$(OBJEXT) T.$(OBJEXT) \
TDB.$(OBJEXT) Table.$(OBJEXT) Grid.$(OBJEXT) Timer.$(OBJEXT) \
color.$(OBJEXT) parse.$(OBJEXT) task.$(OBJEXT) \
command.$(OBJEXT) edit.$(OBJEXT) report.$(OBJEXT) \
util.$(OBJEXT) text.$(OBJEXT) rules.$(OBJEXT) import.$(OBJEXT)
task_OBJECTS = $(am_task_OBJECTS)
task_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(task_SOURCES)
DIST_SOURCES = $(task_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
task_SOURCES = Config.cpp Date.cpp T.cpp TDB.cpp Table.cpp Grid.cpp Timer.cpp color.cpp parse.cpp task.cpp command.cpp edit.cpp report.cpp util.cpp text.cpp rules.cpp import.cpp Config.h Date.h T.h TDB.h Table.h Grid.h Timer.h color.h task.h
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
task$(EXEEXT): $(task_OBJECTS) $(task_DEPENDENCIES)
@rm -f task$(EXEEXT)
$(CXXLINK) $(task_OBJECTS) $(task_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Config.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Date.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Grid.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/T.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TDB.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Table.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Timer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/color.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/command.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/import.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/report.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rules.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/text.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-info: install-info-am
install-man:
install-pdf: install-pdf-am
install-ps: install-ps-am
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am uninstall-binPROGRAMS
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -32,7 +32,7 @@
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Default // Default
T::T () Tt::Tt ()
{ {
mUUID = uuid (); mUUID = uuid ();
mStatus = pending; mStatus = pending;
@@ -49,13 +49,13 @@ T::T ()
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Initialize by parsing storage format // Initialize by parsing storage format
T::T (const std::string& line) Tt::Tt (const std::string& line)
{ {
parse (line); parse (line);
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
T::T (const T& other) Tt::Tt (const Tt& other)
{ {
mStatus = other.mStatus; mStatus = other.mStatus;
mUUID = other.mUUID; mUUID = other.mUUID;
@@ -69,7 +69,7 @@ T::T (const T& other)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
T& T::operator= (const T& other) Tt& Tt::operator= (const Tt& other)
{ {
if (this != &other) if (this != &other)
{ {
@@ -88,12 +88,12 @@ T& T::operator= (const T& other)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
T::~T () Tt::~Tt ()
{ {
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool T::hasTag (const std::string& tag) const bool Tt::hasTag (const std::string& tag) const
{ {
std::vector <std::string>::const_iterator it = find (mTags.begin (), mTags.end (), tag); std::vector <std::string>::const_iterator it = find (mTags.begin (), mTags.end (), tag);
if (it != mTags.end ()) if (it != mTags.end ())
@@ -104,38 +104,38 @@ bool T::hasTag (const std::string& tag) const
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// SPECIAL METHOD - DO NOT REMOVE // SPECIAL METHOD - DO NOT REMOVE
void T::getRemoveTags (std::vector<std::string>& all) void Tt::getRemoveTags (std::vector<std::string>& all)
{ {
all = mRemoveTags; all = mRemoveTags;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// SPECIAL METHOD - DO NOT REMOVE // SPECIAL METHOD - DO NOT REMOVE
void T::addRemoveTag (const std::string& tag) void Tt::addRemoveTag (const std::string& tag)
{ {
if (tag.find (' ') != std::string::npos) if (tag.find (' ') != std::string::npos)
throw std::string ("T::addRemoveTag - tags may not contain spaces"); throw std::string ("Tt::addRemoveTag - tags may not contain spaces");
mRemoveTags.push_back (tag); mRemoveTags.push_back (tag);
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int T::getTagCount () const int Tt::getTagCount () const
{ {
return mTags.size (); return mTags.size ();
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::getTags (std::vector<std::string>& all) const void Tt::getTags (std::vector<std::string>& all) const
{ {
all = mTags; all = mTags;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::addTag (const std::string& tag) void Tt::addTag (const std::string& tag)
{ {
if (tag.find (' ') != std::string::npos) if (tag.find (' ') != std::string::npos)
throw std::string ("T::addTag - tags may not contain spaces"); throw std::string ("Tt::addTag - tags may not contain spaces");
if (tag[0] == '+') if (tag[0] == '+')
{ {
@@ -150,12 +150,12 @@ void T::addTag (const std::string& tag)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::addTags (const std::vector <std::string>& tags) void Tt::addTags (const std::vector <std::string>& tags)
{ {
for (size_t i = 0; i < tags.size (); ++i) for (size_t i = 0; i < tags.size (); ++i)
{ {
if (tags[i].find (' ') != std::string::npos) if (tags[i].find (' ') != std::string::npos)
throw std::string ("T::addTags - tags may not contain spaces"); throw std::string ("Tt::addTags - tags may not contain spaces");
if (tags[i][0] == '+') if (tags[i][0] == '+')
{ {
@@ -171,7 +171,7 @@ void T::addTags (const std::vector <std::string>& tags)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::removeTag (const std::string& tag) void Tt::removeTag (const std::string& tag)
{ {
std::vector <std::string> copy; std::vector <std::string> copy;
for (size_t i = 0; i < mTags.size (); ++i) for (size_t i = 0; i < mTags.size (); ++i)
@@ -182,19 +182,19 @@ void T::removeTag (const std::string& tag)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::removeTags () void Tt::removeTags ()
{ {
mTags.clear (); mTags.clear ();
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::getAttributes (std::map<std::string, std::string>& all) void Tt::getAttributes (std::map<std::string, std::string>& all)
{ {
all = mAttributes; all = mAttributes;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
const std::string T::getAttribute (const std::string& name) const std::string Tt::getAttribute (const std::string& name)
{ {
if (mAttributes.find (name) != mAttributes.end ()) if (mAttributes.find (name) != mAttributes.end ())
return mAttributes[name]; return mAttributes[name];
@@ -203,7 +203,7 @@ const std::string T::getAttribute (const std::string& name)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::setAttribute (const std::string& name, const std::string& value) void Tt::setAttribute (const std::string& name, const std::string& value)
{ {
if (name.find (' ') != std::string::npos) if (name.find (' ') != std::string::npos)
throw std::string ("An attribute name may not contain spaces"); throw std::string ("An attribute name may not contain spaces");
@@ -215,7 +215,7 @@ void T::setAttribute (const std::string& name, const std::string& value)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::setAttributes (const std::map <std::string, std::string>& attributes) void Tt::setAttributes (const std::map <std::string, std::string>& attributes)
{ {
foreach (i, attributes) foreach (i, attributes)
{ {
@@ -230,13 +230,13 @@ void T::setAttributes (const std::map <std::string, std::string>& attributes)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::removeAttributes () void Tt::removeAttributes ()
{ {
mAttributes.clear (); mAttributes.clear ();
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::removeAttribute (const std::string& name) void Tt::removeAttribute (const std::string& name)
{ {
std::map <std::string, std::string> copy = mAttributes; std::map <std::string, std::string> copy = mAttributes;
mAttributes.clear (); mAttributes.clear ();
@@ -246,7 +246,7 @@ void T::removeAttribute (const std::string& name)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::getSubstitution ( void Tt::getSubstitution (
std::string& from, std::string& from,
std::string& to, std::string& to,
bool& global) const bool& global) const
@@ -257,7 +257,7 @@ void T::getSubstitution (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::setSubstitution ( void Tt::setSubstitution (
const std::string& from, const std::string& from,
const std::string& to, const std::string& to,
bool global) bool global)
@@ -268,19 +268,19 @@ void T::setSubstitution (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::getAnnotations (std::map <time_t, std::string>& all) const void Tt::getAnnotations (std::map <time_t, std::string>& all) const
{ {
all = mAnnotations; all = mAnnotations;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::setAnnotations (const std::map <time_t, std::string>& all) void Tt::setAnnotations (const std::map <time_t, std::string>& all)
{ {
mAnnotations = all; mAnnotations = all;
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void T::addAnnotation (const std::string& description) void Tt::addAnnotation (const std::string& description)
{ {
std::string sanitized = description; std::string sanitized = description;
std::replace (sanitized.begin (), sanitized.end (), '"', '\''); std::replace (sanitized.begin (), sanitized.end (), '"', '\'');
@@ -290,7 +290,7 @@ void T::addAnnotation (const std::string& description)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool T::sequenceContains (int id) const bool Tt::sequenceContains (int id) const
{ {
foreach (seq, mSequence) foreach (seq, mSequence)
if (*seq == id) if (*seq == id)
@@ -308,7 +308,7 @@ bool T::sequenceContains (int id) const
// attributes \w+:\w+ \s ... // attributes \w+:\w+ \s ...
// description .+ // description .+
// //
const std::string T::compose () const const std::string Tt::compose () const
{ {
// UUID // UUID
std::string line = mUUID + ' '; std::string line = mUUID + ' ';
@@ -367,7 +367,7 @@ const std::string T::compose () const
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
const std::string T::composeCSV () const std::string Tt::composeCSV ()
{ {
// UUID // UUID
std::string line = "'" + mUUID + "',"; std::string line = "'" + mUUID + "',";
@@ -441,7 +441,7 @@ const std::string T::composeCSV ()
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Read all file formats, write only the latest. // Read all file formats, write only the latest.
void T::parse (const std::string& line) void Tt::parse (const std::string& line)
{ {
switch (determineVersion (line)) switch (determineVersion (line))
{ {
@@ -659,7 +659,7 @@ void T::parse (const std::string& line)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// If this code is inaccurate, data corruption ensues. // If this code is inaccurate, data corruption ensues.
int T::determineVersion (const std::string& line) int Tt::determineVersion (const std::string& line)
{ {
// Version 1 looks like: // Version 1 looks like:
// //
@@ -721,7 +721,7 @@ int T::determineVersion (const std::string& line)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// TODO Expand this method into a full-blown task validation check. // TODO Expand this method into a full-blown task validation check.
bool T::validate () const bool Tt::validate () const
{ {
// TODO Verify until > due // TODO Verify until > due
// TODO Verify entry < until, due, start, end // TODO Verify entry < until, due, start, end

16
src/T.h
View File

@@ -24,8 +24,8 @@
// USA // USA
// //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
#ifndef INCLUDED_T #ifndef INCLUDED_Tt
#define INCLUDED_T #define INCLUDED_Tt
#include <string> #include <string>
#include <vector> #include <vector>
@@ -34,16 +34,16 @@
// Length of longest line. // Length of longest line.
#define T_LINE_MAX 32768 #define T_LINE_MAX 32768
class T class Tt
{ {
public: public:
enum status {pending, completed, deleted, recurring}; enum status {pending, completed, deleted, recurring};
T (); // Default constructor Tt (); // Default constructor
T (const std::string&); // Initialize by parsing storage format Tt (const std::string&); // Initialize by parsing storage format
T (const T&); // Copy constructor Tt (const Tt&); // Copy constructor
T& operator= (const T&); // Assignment operator Tt& operator= (const Tt&); // Assignment operator
~T (); // Destructor ~Tt (); // Destructor
std::string getUUID () const { return mUUID; } std::string getUUID () const { return mUUID; }
void setUUID (const std::string& uuid) { mUUID = uuid; } void setUUID (const std::string& uuid) { mUUID = uuid; }

View File

@@ -68,20 +68,20 @@ void TDB::dataDirectory (const std::string& directory)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Combine allPendingT with allCompletedT. // Combine allPendingT with allCompletedT.
// Note: this method is O(N1) + O(N2), where N2 is not bounded. // Note: this method is O(N1) + O(N2), where N2 is not bounded.
bool TDB::allT (std::vector <T>& all) bool TDB::allT (std::vector <Tt>& all)
{ {
all.clear (); all.clear ();
// Retrieve all the pending records. // Retrieve all the pending records.
std::vector <T> allp; std::vector <Tt> allp;
if (allPendingT (allp)) if (allPendingT (allp))
{ {
std::vector <T>::iterator i; std::vector <Tt>::iterator i;
for (i = allp.begin (); i != allp.end (); ++i) for (i = allp.begin (); i != allp.end (); ++i)
all.push_back (*i); all.push_back (*i);
// Retrieve all the completed records. // Retrieve all the completed records.
std::vector <T> allc; std::vector <Tt> allc;
if (allCompletedT (allc)) if (allCompletedT (allc))
{ {
for (i = allc.begin (); i != allc.end (); ++i) for (i = allc.begin (); i != allc.end (); ++i)
@@ -96,7 +96,7 @@ bool TDB::allT (std::vector <T>& all)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Only accesses to the pending file result in Tasks that have assigned ids. // Only accesses to the pending file result in Tasks that have assigned ids.
bool TDB::pendingT (std::vector <T>& all) bool TDB::pendingT (std::vector <Tt>& all)
{ {
all.clear (); all.clear ();
@@ -111,9 +111,9 @@ bool TDB::pendingT (std::vector <T>& all)
{ {
try try
{ {
T t (*it); Tt t (*it);
t.setId (mId++); t.setId (mId++);
if (t.getStatus () == T::pending) if (t.getStatus () == Tt::pending)
all.push_back (t); all.push_back (t);
} }
@@ -136,7 +136,7 @@ bool TDB::pendingT (std::vector <T>& all)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Only accesses to the pending file result in Tasks that have assigned ids. // Only accesses to the pending file result in Tasks that have assigned ids.
bool TDB::allPendingT (std::vector <T>& all) bool TDB::allPendingT (std::vector <Tt>& all)
{ {
all.clear (); all.clear ();
@@ -151,7 +151,7 @@ bool TDB::allPendingT (std::vector <T>& all)
{ {
try try
{ {
T t (*it); Tt t (*it);
t.setId (mId++); t.setId (mId++);
all.push_back (t); all.push_back (t);
} }
@@ -174,7 +174,7 @@ bool TDB::allPendingT (std::vector <T>& all)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::completedT (std::vector <T>& all) const bool TDB::completedT (std::vector <Tt>& all) const
{ {
all.clear (); all.clear ();
@@ -187,8 +187,8 @@ bool TDB::completedT (std::vector <T>& all) const
{ {
try try
{ {
T t (*it); Tt t (*it);
if (t.getStatus () != T::deleted) if (t.getStatus () != Tt::deleted)
all.push_back (t); all.push_back (t);
} }
@@ -210,7 +210,7 @@ bool TDB::completedT (std::vector <T>& all) const
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::allCompletedT (std::vector <T>& all) const bool TDB::allCompletedT (std::vector <Tt>& all) const
{ {
all.clear (); all.clear ();
@@ -223,7 +223,7 @@ bool TDB::allCompletedT (std::vector <T>& all) const
{ {
try try
{ {
T t (*it); Tt t (*it);
all.push_back (t); all.push_back (t);
} }
@@ -245,9 +245,9 @@ bool TDB::allCompletedT (std::vector <T>& all) const
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::addT (const T& t) bool TDB::addT (const Tt& t)
{ {
T task (t); Tt task (t);
std::vector <std::string> tags; std::vector <std::string> tags;
task.getTags (tags); task.getTags (tags);
@@ -262,8 +262,8 @@ bool TDB::addT (const T& t)
} }
} }
if (task.getStatus () == T::pending || if (task.getStatus () == Tt::pending ||
task.getStatus () == T::recurring) task.getStatus () == Tt::recurring)
{ {
return writePending (task); return writePending (task);
} }
@@ -272,16 +272,16 @@ bool TDB::addT (const T& t)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::modifyT (const T& t) bool TDB::modifyT (const Tt& t)
{ {
T modified (t); Tt modified (t);
std::vector <T> all; std::vector <Tt> all;
allPendingT (all); allPendingT (all);
std::vector <T> pending; std::vector <Tt> pending;
std::vector <T>::iterator it; std::vector <Tt>::iterator it;
for (it = all.begin (); it != all.end (); ++it) for (it = all.begin (); it != all.end (); ++it)
{ {
if (it->getId () == t.getId ()) if (it->getId () == t.getId ())
@@ -306,7 +306,7 @@ bool TDB::lock (FILE* file) const
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::overwritePending (std::vector <T>& all) bool TDB::overwritePending (std::vector <Tt>& all)
{ {
// Write a single task to the pending file // Write a single task to the pending file
FILE* out; FILE* out;
@@ -317,7 +317,7 @@ bool TDB::overwritePending (std::vector <T>& all)
while (flock (fileno (out), LOCK_EX) && ++retry <= 3) while (flock (fileno (out), LOCK_EX) && ++retry <= 3)
delay (0.1); delay (0.1);
std::vector <T>::iterator it; std::vector <Tt>::iterator it;
for (it = all.begin (); it != all.end (); ++it) for (it = all.begin (); it != all.end (); ++it)
fputs (it->compose ().c_str (), out); fputs (it->compose ().c_str (), out);
@@ -329,7 +329,7 @@ bool TDB::overwritePending (std::vector <T>& all)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::writePending (const T& t) bool TDB::writePending (const Tt& t)
{ {
// Write a single task to the pending file // Write a single task to the pending file
FILE* out; FILE* out;
@@ -350,7 +350,7 @@ bool TDB::writePending (const T& t)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
bool TDB::writeCompleted (const T& t) bool TDB::writeCompleted (const Tt& t)
{ {
// Write a single task to the pending file // Write a single task to the pending file
FILE* out; FILE* out;
@@ -414,18 +414,18 @@ int TDB::gc ()
int count = 0; int count = 0;
// Read everything from the pending file. // Read everything from the pending file.
std::vector <T> all; std::vector <Tt> all;
allPendingT (all); allPendingT (all);
// A list of the truly pending tasks. // A list of the truly pending tasks.
std::vector <T> pending; std::vector <Tt> pending;
std::vector<T>::iterator it; std::vector<Tt>::iterator it;
for (it = all.begin (); it != all.end (); ++it) for (it = all.begin (); it != all.end (); ++it)
{ {
// Some tasks stay in the pending file. // Some tasks stay in the pending file.
if (it->getStatus () == T::pending || if (it->getStatus () == Tt::pending ||
it->getStatus () == T::recurring) it->getStatus () == Tt::recurring)
{ {
pending.push_back (*it); pending.push_back (*it);
} }

View File

@@ -38,13 +38,13 @@ public:
~TDB (); ~TDB ();
void dataDirectory (const std::string&); void dataDirectory (const std::string&);
bool allT (std::vector <T>&); bool allT (std::vector <Tt>&);
bool pendingT (std::vector <T>&); bool pendingT (std::vector <Tt>&);
bool allPendingT (std::vector <T>&); bool allPendingT (std::vector <Tt>&);
bool completedT (std::vector <T>&) const; bool completedT (std::vector <Tt>&) const;
bool allCompletedT (std::vector <T>&) const; bool allCompletedT (std::vector <Tt>&) const;
bool addT (const T&); bool addT (const Tt&);
bool modifyT (const T&); bool modifyT (const Tt&);
int gc (); int gc ();
int nextId (); int nextId ();
@@ -52,9 +52,9 @@ public:
private: private:
bool lock (FILE*) const; bool lock (FILE*) const;
bool overwritePending (std::vector <T>&); bool overwritePending (std::vector <Tt>&);
bool writePending (const T&); bool writePending (const Tt&);
bool writeCompleted (const T&); bool writeCompleted (const Tt&);
bool readLockedFile (const std::string&, std::vector <std::string>&) const; bool readLockedFile (const std::string&, std::vector <std::string>&) const;
private: private:

View File

@@ -41,7 +41,7 @@
#endif #endif
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleAdd (TDB& tdb, T& task, Config& conf) std::string handleAdd (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -59,7 +59,7 @@ std::string handleAdd (TDB& tdb, T& task, Config& conf)
if (task.getAttribute ("due") != "" && if (task.getAttribute ("due") != "" &&
task.getAttribute ("recur") != "") task.getAttribute ("recur") != "")
{ {
task.setStatus (T::recurring); task.setStatus (Tt::recurring);
task.setAttribute ("mask", ""); task.setAttribute ("mask", "");
} }
@@ -86,12 +86,12 @@ std::string handleAdd (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleProjects (TDB& tdb, T& task, Config& conf) std::string handleProjects (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
// Get all the tasks, including deleted ones. // Get all the tasks, including deleted ones.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.pendingT (tasks); tdb.pendingT (tasks);
// Scan all the tasks for their project name, building a map using project // Scan all the tasks for their project name, building a map using project
@@ -99,7 +99,7 @@ std::string handleProjects (TDB& tdb, T& task, Config& conf)
std::map <std::string, int> unique; std::map <std::string, int> unique;
for (unsigned int i = 0; i < tasks.size (); ++i) for (unsigned int i = 0; i < tasks.size (); ++i)
{ {
T task (tasks[i]); Tt task (tasks[i]);
unique[task.getAttribute ("project")] += 1; unique[task.getAttribute ("project")] += 1;
} }
@@ -141,12 +141,12 @@ std::string handleProjects (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleTags (TDB& tdb, T& task, Config& conf) std::string handleTags (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
// Get all the tasks. // Get all the tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.pendingT (tasks); tdb.pendingT (tasks);
// Scan all the tasks for their project name, building a map using project // Scan all the tasks for their project name, building a map using project
@@ -154,7 +154,7 @@ std::string handleTags (TDB& tdb, T& task, Config& conf)
std::map <std::string, std::string> unique; std::map <std::string, std::string> unique;
for (unsigned int i = 0; i < tasks.size (); ++i) for (unsigned int i = 0; i < tasks.size (); ++i)
{ {
T task (tasks[i]); Tt task (tasks[i]);
std::vector <std::string> tags; std::vector <std::string> tags;
task.getTags (tags); task.getTags (tags);
@@ -183,22 +183,22 @@ std::string handleTags (TDB& tdb, T& task, Config& conf)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// If a task is deleted, but is still in the pending file, then it may be // If a task is deleted, but is still in the pending file, then it may be
// undeleted simply by changing it's status. // undeleted simply by changing it's status.
std::string handleUndelete (TDB& tdb, T& task, Config& conf) std::string handleUndelete (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
filterSequence (all, task); filterSequence (all, task);
foreach (t, all) foreach (t, all)
{ {
if (t->getStatus () == T::deleted) if (t->getStatus () == Tt::deleted)
{ {
if (t->getAttribute ("recur") != "") if (t->getAttribute ("recur") != "")
out << "Task does not support 'undo' for recurring tasks.\n"; out << "Task does not support 'undo' for recurring tasks.\n";
t->setStatus (T::pending); t->setStatus (Tt::pending);
t->removeAttribute ("end"); t->removeAttribute ("end");
tdb.modifyT (*t); tdb.modifyT (*t);
@@ -221,22 +221,22 @@ std::string handleUndelete (TDB& tdb, T& task, Config& conf)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// If a task is done, but is still in the pending file, then it may be undone // If a task is done, but is still in the pending file, then it may be undone
// simply by changing it's status. // simply by changing it's status.
std::string handleUndo (TDB& tdb, T& task, Config& conf) std::string handleUndo (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
filterSequence (all, task); filterSequence (all, task);
foreach (t, all) foreach (t, all)
{ {
if (t->getStatus () == T::completed) if (t->getStatus () == Tt::completed)
{ {
if (t->getAttribute ("recur") != "") if (t->getAttribute ("recur") != "")
out << "Task does not support 'undo' for recurring tasks.\n"; out << "Task does not support 'undo' for recurring tasks.\n";
t->setStatus (T::pending); t->setStatus (Tt::pending);
t->removeAttribute ("end"); t->removeAttribute ("end");
tdb.modifyT (*t); tdb.modifyT (*t);
@@ -290,7 +290,7 @@ std::string handleVersion (Config& conf)
link.setColumnWidth (0, Table::flexible); link.setColumnWidth (0, Table::flexible);
link.setColumnJustification (0, Table::left); link.setColumnJustification (0, Table::left);
link.addCell (link.addRow (), 0, link.addCell (link.addRow (), 0,
"See http://www.beckingham.net/task.html for the latest releases and a " "See http://taskwarrior.org for the latest releases and a "
"full tutorial. New releases containing fixes and enhancements are " "full tutorial. New releases containing fixes and enhancements are "
"made frequently."); "made frequently.");
@@ -418,11 +418,11 @@ std::string handleVersion (Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleDelete (TDB& tdb, T& task, Config& conf) std::string handleDelete (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
filterSequence (all, task); filterSequence (all, task);
@@ -455,7 +455,7 @@ std::string handleDelete (TDB& tdb, T& task, Config& conf)
if (sibling->getAttribute ("parent") == parent || if (sibling->getAttribute ("parent") == parent ||
sibling->getUUID () == parent) sibling->getUUID () == parent)
{ {
sibling->setStatus (T::deleted); sibling->setStatus (Tt::deleted);
sibling->setAttribute ("end", endTime); sibling->setAttribute ("end", endTime);
tdb.modifyT (*sibling); tdb.modifyT (*sibling);
@@ -472,7 +472,7 @@ std::string handleDelete (TDB& tdb, T& task, Config& conf)
else else
{ {
// Update mask in parent. // Update mask in parent.
t->setStatus (T::deleted); t->setStatus (Tt::deleted);
updateRecurrenceMask (tdb, all, *t); updateRecurrenceMask (tdb, all, *t);
t->setAttribute ("end", endTime); t->setAttribute ("end", endTime);
@@ -488,7 +488,7 @@ std::string handleDelete (TDB& tdb, T& task, Config& conf)
} }
else else
{ {
t->setStatus (T::deleted); t->setStatus (Tt::deleted);
t->setAttribute ("end", endTime); t->setAttribute ("end", endTime);
tdb.modifyT (*t); tdb.modifyT (*t);
@@ -509,11 +509,11 @@ std::string handleDelete (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleStart (TDB& tdb, T& task, Config& conf) std::string handleStart (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.pendingT (all); tdb.pendingT (all);
filterSequence (all, task); filterSequence (all, task);
@@ -546,11 +546,11 @@ std::string handleStart (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleStop (TDB& tdb, T& task, Config& conf) std::string handleStop (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.pendingT (all); tdb.pendingT (all);
filterSequence (all, task); filterSequence (all, task);
@@ -574,18 +574,18 @@ std::string handleStop (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleDone (TDB& tdb, T& task, Config& conf) std::string handleDone (TDB& tdb, Tt& task, Config& conf)
{ {
int count = 0; int count = 0;
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
std::vector <T> filtered = all; std::vector <Tt> filtered = all;
filterSequence (filtered, task); filterSequence (filtered, task);
foreach (seq, filtered) foreach (seq, filtered)
{ {
if (seq->getStatus () == T::pending) if (seq->getStatus () == Tt::pending)
{ {
// Apply deltas. // Apply deltas.
deltaDescription (*seq, task); deltaDescription (*seq, task);
@@ -599,7 +599,7 @@ std::string handleDone (TDB& tdb, T& task, Config& conf)
seq->setAttribute ("end", entryTime); seq->setAttribute ("end", entryTime);
// Change status. // Change status.
seq->setStatus (T::completed); seq->setStatus (Tt::completed);
if (!tdb.modifyT (*seq)) if (!tdb.modifyT (*seq))
throw std::string ("Could not mark task as completed."); throw std::string ("Could not mark task as completed.");
@@ -638,7 +638,7 @@ std::string handleDone (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleExport (TDB& tdb, T& task, Config& conf) std::string handleExport (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream output; std::stringstream output;
@@ -669,13 +669,13 @@ std::string handleExport (TDB& tdb, T& task, Config& conf)
<< "\n"; << "\n";
int count = 0; int count = 0;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
filter (all, task); filter (all, task);
foreach (t, all) foreach (t, all)
{ {
if (t->getStatus () != T::recurring && if (t->getStatus () != Tt::recurring &&
t->getStatus () != T::deleted) t->getStatus () != Tt::deleted)
{ {
out << t->composeCSV ().c_str (); out << t->composeCSV ().c_str ();
++count; ++count;
@@ -695,14 +695,14 @@ std::string handleExport (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleModify (TDB& tdb, T& task, Config& conf) std::string handleModify (TDB& tdb, Tt& task, Config& conf)
{ {
int count = 0; int count = 0;
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
std::vector <T> filtered = all; std::vector <Tt> filtered = all;
filterSequence (filtered, task); filterSequence (filtered, task);
foreach (seq, filtered) foreach (seq, filtered)
{ {
@@ -749,14 +749,14 @@ std::string handleModify (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleAppend (TDB& tdb, T& task, Config& conf) std::string handleAppend (TDB& tdb, Tt& task, Config& conf)
{ {
int count = 0; int count = 0;
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
std::vector <T> filtered = all; std::vector <Tt> filtered = all;
filterSequence (filtered, task); filterSequence (filtered, task);
foreach (seq, filtered) foreach (seq, filtered)
{ {
@@ -799,20 +799,20 @@ std::string handleAppend (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleDuplicate (TDB& tdb, T& task, Config& conf) std::string handleDuplicate (TDB& tdb, Tt& task, Config& conf)
{ {
int count = 0; int count = 0;
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
std::vector <T> filtered = all; std::vector <Tt> filtered = all;
filterSequence (filtered, task); filterSequence (filtered, task);
foreach (seq, filtered) foreach (seq, filtered)
{ {
if (seq->getStatus () != T::recurring && seq->getAttribute ("parent") == "") if (seq->getStatus () != Tt::recurring && seq->getAttribute ("parent") == "")
{ {
T dup (*seq); Tt dup (*seq);
dup.setUUID (uuid ()); // Needs a new UUID. dup.setUUID (uuid ()); // Needs a new UUID.
// Apply deltas. // Apply deltas.
@@ -942,10 +942,10 @@ std::string handleColor (Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleAnnotate (TDB& tdb, T& task, Config& conf) std::string handleAnnotate (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.pendingT (all); tdb.pendingT (all);
filterSequence (all, task); filterSequence (all, task);
@@ -967,18 +967,18 @@ std::string handleAnnotate (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
T findT (int id, const std::vector <T>& all) Tt findT (int id, const std::vector <Tt>& all)
{ {
std::vector <T>::const_iterator it; std::vector <Tt>::const_iterator it;
for (it = all.begin (); it != all.end (); ++it) for (it = all.begin (); it != all.end (); ++it)
if (id == it->getId ()) if (id == it->getId ())
return *it; return *it;
return T (); return Tt ();
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int deltaAppend (T& task, T& delta) int deltaAppend (Tt& task, Tt& delta)
{ {
if (delta.getDescription () != "") if (delta.getDescription () != "")
{ {
@@ -994,7 +994,7 @@ int deltaAppend (T& task, T& delta)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int deltaDescription (T& task, T& delta) int deltaDescription (Tt& task, Tt& delta)
{ {
if (delta.getDescription () != "") if (delta.getDescription () != "")
{ {
@@ -1006,7 +1006,7 @@ int deltaDescription (T& task, T& delta)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int deltaTags (T& task, T& delta) int deltaTags (Tt& task, Tt& delta)
{ {
int changes = 0; int changes = 0;
@@ -1038,7 +1038,7 @@ int deltaTags (T& task, T& delta)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int deltaAttributes (T& task, T& delta) int deltaAttributes (Tt& task, Tt& delta)
{ {
int changes = 0; int changes = 0;
@@ -1058,7 +1058,7 @@ int deltaAttributes (T& task, T& delta)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
int deltaSubstitutions (T& task, T& delta) int deltaSubstitutions (Tt& task, Tt& delta)
{ {
int changes = 0; int changes = 0;
std::string from; std::string from;

View File

@@ -87,14 +87,14 @@ static std::string findDate (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
static std::string formatStatus (T& task) static std::string formatStatus (Tt& task)
{ {
switch (task.getStatus ()) switch (task.getStatus ())
{ {
case T::pending: return "Pending"; break; case Tt::pending: return "Pending"; break;
case T::completed: return "Completed"; break; case Tt::completed: return "Completed"; break;
case T::deleted: return "Deleted"; break; case Tt::deleted: return "Deleted"; break;
case T::recurring: return "Recurring"; break; case Tt::recurring: return "Recurring"; break;
} }
return ""; return "";
@@ -103,7 +103,7 @@ static std::string formatStatus (T& task)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
static std::string formatDate ( static std::string formatDate (
Config& conf, Config& conf,
T& task, Tt& task,
const std::string& attribute) const std::string& attribute)
{ {
std::string value = task.getAttribute (attribute); std::string value = task.getAttribute (attribute);
@@ -117,7 +117,7 @@ static std::string formatDate (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
static std::string formatTask (Config& conf, T task) static std::string formatTask (Config& conf, Tt task)
{ {
std::stringstream before; std::stringstream before;
before << "# The 'task edit <id>' command allows you to modify all aspects of a task" << std::endl before << "# The 'task edit <id>' command allows you to modify all aspects of a task" << std::endl
@@ -182,7 +182,7 @@ static std::string formatTask (Config& conf, T task)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
static void parseTask (Config& conf, T& task, const std::string& after) static void parseTask (Config& conf, Tt& task, const std::string& after)
{ {
// project // project
std::string value = findValue (after, "Project:"); std::string value = findValue (after, "Project:");
@@ -300,7 +300,7 @@ static void parseTask (Config& conf, T& task, const std::string& after)
task.setAttribute ("end", value); task.setAttribute ("end", value);
} }
} }
else if (task.getStatus () != T::deleted) else if (task.getStatus () != Tt::deleted)
throw std::string ("Cannot set a done date on a pending task."); throw std::string ("Cannot set a done date on a pending task.");
} }
else else
@@ -308,7 +308,7 @@ static void parseTask (Config& conf, T& task, const std::string& after)
if (task.getAttribute ("end") != "") if (task.getAttribute ("end") != "")
{ {
std::cout << "Done date removed." << std::endl; std::cout << "Done date removed." << std::endl;
task.setStatus (T::pending); task.setStatus (Tt::pending);
task.removeAttribute ("end"); task.removeAttribute ("end");
} }
} }
@@ -338,7 +338,7 @@ static void parseTask (Config& conf, T& task, const std::string& after)
{ {
if (task.getAttribute ("due") != "") if (task.getAttribute ("due") != "")
{ {
if (task.getStatus () == T::recurring || if (task.getStatus () == Tt::recurring ||
task.getAttribute ("parent") != "") task.getAttribute ("parent") != "")
{ {
std::cout << "Cannot remove a due date from a recurring task." << std::endl; std::cout << "Cannot remove a due date from a recurring task." << std::endl;
@@ -393,7 +393,7 @@ static void parseTask (Config& conf, T& task, const std::string& after)
if (task.getAttribute ("due") != "") if (task.getAttribute ("due") != "")
{ {
task.setAttribute ("recur", value); task.setAttribute ("recur", value);
task.setStatus (T::recurring); task.setStatus (Tt::recurring);
} }
else else
throw std::string ("A recurring task must have a due date."); throw std::string ("A recurring task must have a due date.");
@@ -404,7 +404,7 @@ static void parseTask (Config& conf, T& task, const std::string& after)
else else
{ {
std::cout << "Recurrence removed." << std::endl; std::cout << "Recurrence removed." << std::endl;
task.setStatus (T::pending); task.setStatus (Tt::pending);
task.removeAttribute ("recur"); task.removeAttribute ("recur");
task.removeAttribute ("until"); task.removeAttribute ("until");
task.removeAttribute ("mask"); task.removeAttribute ("mask");
@@ -491,10 +491,10 @@ static void parseTask (Config& conf, T& task, const std::string& after)
// Introducing the Silver Bullet. This feature is the catch-all fixative for // Introducing the Silver Bullet. This feature is the catch-all fixative for
// various other ills. This is like opening up the hood and going in with a // various other ills. This is like opening up the hood and going in with a
// wrench. To be used sparingly. // wrench. To be used sparingly.
std::string handleEdit (TDB& tdb, T& task, Config& conf) std::string handleEdit (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> all; std::vector <Tt> all;
tdb.allPendingT (all); tdb.allPendingT (all);
filterSequence (all, task); filterSequence (all, task);
@@ -513,7 +513,7 @@ std::string handleEdit (TDB& tdb, T& task, Config& conf)
mkstemp (cpattern); mkstemp (cpattern);
char* file = cpattern; char* file = cpattern;
// Format the contents, T -> text, write to a file. // Format the contents, Tt -> text, write to a file.
std::string before = formatTask (conf, *seq); std::string before = formatTask (conf, *seq);
spit (file, before); spit (file, before);

View File

@@ -155,7 +155,7 @@ static fileType determineFileType (const std::vector <std::string>& lines)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
static void decorateTask (T& task, Config& conf) static void decorateTask (Tt& task, Config& conf)
{ {
char entryTime[16]; char entryTime[16];
sprintf (entryTime, "%u", (unsigned int) time (NULL)); sprintf (entryTime, "%u", (unsigned int) time (NULL));
@@ -227,7 +227,7 @@ static std::string importTask_1_4_3 (
throw "unrecoverable"; throw "unrecoverable";
// Build up this task ready for insertion. // Build up this task ready for insertion.
T task; Tt task;
// Handle the 12 fields. // Handle the 12 fields.
for (unsigned int f = 0; f < fields.size (); ++f) for (unsigned int f = 0; f < fields.size (); ++f)
@@ -239,10 +239,10 @@ static std::string importTask_1_4_3 (
break; break;
case 1: // 'status' case 1: // 'status'
if (fields[f] == "'pending'") task.setStatus (T::pending); if (fields[f] == "'pending'") task.setStatus (Tt::pending);
else if (fields[f] == "'recurring'") task.setStatus (T::recurring); else if (fields[f] == "'recurring'") task.setStatus (Tt::recurring);
else if (fields[f] == "'deleted'") task.setStatus (T::deleted); else if (fields[f] == "'deleted'") task.setStatus (Tt::deleted);
else if (fields[f] == "'completed'") task.setStatus (T::completed); else if (fields[f] == "'completed'") task.setStatus (Tt::completed);
break; break;
case 2: // 'tags' case 2: // 'tags'
@@ -383,7 +383,7 @@ static std::string importTask_1_5_0 (
throw "unrecoverable"; throw "unrecoverable";
// Build up this task ready for insertion. // Build up this task ready for insertion.
T task; Tt task;
// Handle the 13 fields. // Handle the 13 fields.
for (unsigned int f = 0; f < fields.size (); ++f) for (unsigned int f = 0; f < fields.size (); ++f)
@@ -395,10 +395,10 @@ static std::string importTask_1_5_0 (
break; break;
case 1: // 'status' case 1: // 'status'
if (fields[f] == "'pending'") task.setStatus (T::pending); if (fields[f] == "'pending'") task.setStatus (Tt::pending);
else if (fields[f] == "'recurring'") task.setStatus (T::recurring); else if (fields[f] == "'recurring'") task.setStatus (Tt::recurring);
else if (fields[f] == "'deleted'") task.setStatus (T::deleted); else if (fields[f] == "'deleted'") task.setStatus (Tt::deleted);
else if (fields[f] == "'completed'") task.setStatus (T::completed); else if (fields[f] == "'completed'") task.setStatus (Tt::completed);
break; break;
case 2: // 'tags' case 2: // 'tags'
@@ -544,7 +544,7 @@ static std::string importTask_1_6_0 (
throw "unrecoverable"; throw "unrecoverable";
// Build up this task ready for insertion. // Build up this task ready for insertion.
T task; Tt task;
// Handle the 13 fields. // Handle the 13 fields.
for (unsigned int f = 0; f < fields.size (); ++f) for (unsigned int f = 0; f < fields.size (); ++f)
@@ -556,10 +556,10 @@ static std::string importTask_1_6_0 (
break; break;
case 1: // 'status' case 1: // 'status'
if (fields[f] == "'pending'") task.setStatus (T::pending); if (fields[f] == "'pending'") task.setStatus (Tt::pending);
else if (fields[f] == "'recurring'") task.setStatus (T::recurring); else if (fields[f] == "'recurring'") task.setStatus (Tt::recurring);
else if (fields[f] == "'deleted'") task.setStatus (T::deleted); else if (fields[f] == "'deleted'") task.setStatus (Tt::deleted);
else if (fields[f] == "'completed'") task.setStatus (T::completed); else if (fields[f] == "'completed'") task.setStatus (Tt::completed);
break; break;
case 2: // 'tags' case 2: // 'tags'
@@ -670,7 +670,7 @@ static std::string importTaskCmdLine (
std::vector <std::string> args; std::vector <std::string> args;
split (args, std::string ("add ") + line, ' '); split (args, std::string ("add ") + line, ' ');
T task; Tt task;
std::string command; std::string command;
parse (args, command, task, conf); parse (args, command, task, conf);
handleAdd (tdb, task, conf); handleAdd (tdb, task, conf);
@@ -776,18 +776,18 @@ static std::string importTodoSh_2_0 (
} }
} }
T task; Tt task;
std::string command; std::string command;
parse (args, command, task, conf); parse (args, command, task, conf);
decorateTask (task, conf); decorateTask (task, conf);
if (isPending) if (isPending)
{ {
task.setStatus (T::pending); task.setStatus (Tt::pending);
} }
else else
{ {
task.setStatus (T::completed); task.setStatus (Tt::completed);
char end[16]; char end[16];
sprintf (end, "%u", (unsigned int) endDate.toEpoch ()); sprintf (end, "%u", (unsigned int) endDate.toEpoch ());
@@ -850,7 +850,7 @@ static std::string importText (
std::vector <std::string> args; std::vector <std::string> args;
split (args, std::string ("add ") + line, ' '); split (args, std::string ("add ") + line, ' ');
T task; Tt task;
std::string command; std::string command;
parse (args, command, task, conf); parse (args, command, task, conf);
decorateTask (task, conf); decorateTask (task, conf);
@@ -1040,7 +1040,7 @@ static std::string importCSV (
std::vector <std::string> fields; std::vector <std::string> fields;
split (fields, *it, ','); split (fields, *it, ',');
T task; Tt task;
int f; int f;
if ((f = mapping["uuid"]) != -1) if ((f = mapping["uuid"]) != -1)
@@ -1050,10 +1050,10 @@ static std::string importCSV (
{ {
std::string value = lowerCase (unquoteText (trim (fields[f]))); std::string value = lowerCase (unquoteText (trim (fields[f])));
if (value == "recurring") task.setStatus (T::recurring); if (value == "recurring") task.setStatus (Tt::recurring);
else if (value == "deleted") task.setStatus (T::deleted); else if (value == "deleted") task.setStatus (Tt::deleted);
else if (value == "completed") task.setStatus (T::completed); else if (value == "completed") task.setStatus (Tt::completed);
else task.setStatus (T::pending); else task.setStatus (Tt::pending);
} }
if ((f = mapping["tags"]) != -1) if ((f = mapping["tags"]) != -1)
@@ -1128,7 +1128,7 @@ static std::string importCSV (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleImport (TDB& tdb, T& task, Config& conf) std::string handleImport (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;

View File

@@ -469,7 +469,7 @@ bool validDuration (std::string& input)
void parse ( void parse (
std::vector <std::string>& args, std::vector <std::string>& args,
std::string& command, std::string& command,
T& task, Tt& task,
Config& conf) Config& conf)
{ {
command = ""; command = "";

View File

@@ -47,12 +47,12 @@
#endif #endif
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void filterSequence (std::vector<T>& all, T& task) void filterSequence (std::vector<Tt>& all, Tt& task)
{ {
std::vector <int> sequence = task.getAllIds (); std::vector <int> sequence = task.getAllIds ();
std::vector <T> filtered; std::vector <Tt> filtered;
std::vector <T>::iterator t; std::vector <Tt>::iterator t;
for (t = all.begin (); t != all.end (); ++t) for (t = all.begin (); t != all.end (); ++t)
{ {
std::vector <int>::iterator s; std::vector <int>::iterator s;
@@ -64,7 +64,7 @@ void filterSequence (std::vector<T>& all, T& task)
if (sequence.size () != filtered.size ()) if (sequence.size () != filtered.size ())
{ {
std::vector <int> filteredSequence; std::vector <int> filteredSequence;
std::vector <T>::iterator fs; std::vector <Tt>::iterator fs;
for (fs = filtered.begin (); fs != filtered.end (); ++fs) for (fs = filtered.begin (); fs != filtered.end (); ++fs)
filteredSequence.push_back (fs->getId ()); filteredSequence.push_back (fs->getId ());
@@ -94,9 +94,9 @@ void filterSequence (std::vector<T>& all, T& task)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void filter (std::vector<T>& all, T& task) void filter (std::vector<Tt>& all, Tt& task)
{ {
std::vector <T> filtered; std::vector <Tt> filtered;
// Split any description specified into words. // Split any description specified into words.
std::vector <std::string> descWords; std::vector <std::string> descWords;
@@ -113,7 +113,7 @@ void filter (std::vector<T>& all, T& task)
// Iterate over each task, and apply selection criteria. // Iterate over each task, and apply selection criteria.
for (unsigned int i = 0; i < all.size (); ++i) for (unsigned int i = 0; i < all.size (); ++i)
{ {
T refTask (all[i]); Tt refTask (all[i]);
// Apply description filter. // Apply description filter.
std::string desc = lowerCase (refTask.getDescription ()); std::string desc = lowerCase (refTask.getDescription ());
@@ -189,7 +189,7 @@ void filter (std::vector<T>& all, T& task)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Successively apply filters based on the task object built from the command // Successively apply filters based on the task object built from the command
// line. Tasks that match all the specified criteria are listed. // line. Tasks that match all the specified criteria are listed.
std::string handleCompleted (TDB& tdb, T& task, Config& conf) std::string handleCompleted (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -205,7 +205,7 @@ std::string handleCompleted (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get the pending tasks. // Get the pending tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.completedT (tasks); tdb.completedT (tasks);
filter (tasks, task); filter (tasks, task);
@@ -244,7 +244,7 @@ std::string handleCompleted (TDB& tdb, T& task, Config& conf)
// Iterate over each task, and apply selection criteria. // Iterate over each task, and apply selection criteria.
for (unsigned int i = 0; i < tasks.size (); ++i) for (unsigned int i = 0; i < tasks.size (); ++i)
{ {
T refTask (tasks[i]); Tt refTask (tasks[i]);
// Now format the matching task. // Now format the matching task.
Date end (::atoi (refTask.getAttribute ("end").c_str ())); Date end (::atoi (refTask.getAttribute ("end").c_str ()));
@@ -293,7 +293,7 @@ std::string handleCompleted (TDB& tdb, T& task, Config& conf)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Display all information for the given task. // Display all information for the given task.
std::string handleInfo (TDB& tdb, T& task, Config& conf) std::string handleInfo (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -309,14 +309,14 @@ std::string handleInfo (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get all the tasks. // Get all the tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.allPendingT (tasks); tdb.allPendingT (tasks);
// Find the task. // Find the task.
int count = 0; int count = 0;
for (unsigned int i = 0; i < tasks.size (); ++i) for (unsigned int i = 0; i < tasks.size (); ++i)
{ {
T refTask (tasks[i]); Tt refTask (tasks[i]);
if (refTask.getId () == task.getId () || task.sequenceContains (refTask.getId ())) if (refTask.getId () == task.getId () || task.sequenceContains (refTask.getId ()))
{ {
@@ -348,10 +348,10 @@ std::string handleInfo (TDB& tdb, T& task, Config& conf)
table.addCell (row, 0, "ID"); table.addCell (row, 0, "ID");
table.addCell (row, 1, refTask.getId ()); table.addCell (row, 1, refTask.getId ());
std::string status = refTask.getStatus () == T::pending ? "Pending" std::string status = refTask.getStatus () == Tt::pending ? "Pending"
: refTask.getStatus () == T::completed ? "Completed" : refTask.getStatus () == Tt::completed ? "Completed"
: refTask.getStatus () == T::deleted ? "Deleted" : refTask.getStatus () == Tt::deleted ? "Deleted"
: refTask.getStatus () == T::recurring ? "Recurring" : refTask.getStatus () == Tt::recurring ? "Recurring"
: ""; : "";
if (refTask.getAttribute ("parent") != "") if (refTask.getAttribute ("parent") != "")
status += " (Recurring)"; status += " (Recurring)";
@@ -389,7 +389,7 @@ std::string handleInfo (TDB& tdb, T& task, Config& conf)
table.addCell (row, 1, refTask.getAttribute ("priority")); table.addCell (row, 1, refTask.getAttribute ("priority"));
} }
if (refTask.getStatus () == T::recurring || if (refTask.getStatus () == Tt::recurring ||
refTask.getAttribute ("parent") != "") refTask.getAttribute ("parent") != "")
{ {
if (refTask.getAttribute ("recur") != "") if (refTask.getAttribute ("recur") != "")
@@ -540,11 +540,11 @@ std::string handleInfo (TDB& tdb, T& task, Config& conf)
// Project Remaining Avg Age Complete 0% 100% // Project Remaining Avg Age Complete 0% 100%
// A 12 13d 55% XXXXXXXXXXXXX----------- // A 12 13d 55% XXXXXXXXXXXXX-----------
// B 109 3d 12h 10% XXX--------------------- // B 109 3d 12h 10% XXX---------------------
std::string handleReportSummary (TDB& tdb, T& task, Config& conf) std::string handleReportSummary (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.allT (tasks); tdb.allT (tasks);
handleRecurrence (tdb, tasks); handleRecurrence (tdb, tasks);
filter (tasks, task); filter (tasks, task);
@@ -552,7 +552,7 @@ std::string handleReportSummary (TDB& tdb, T& task, Config& conf)
// Generate unique list of project names from all pending tasks. // Generate unique list of project names from all pending tasks.
std::map <std::string, bool> allProjects; std::map <std::string, bool> allProjects;
foreach (t, tasks) foreach (t, tasks)
if (t->getStatus () == T::pending) if (t->getStatus () == Tt::pending)
allProjects[t->getAttribute ("project")] = false; allProjects[t->getAttribute ("project")] = false;
// Initialize counts, sum. // Initialize counts, sum.
@@ -577,7 +577,7 @@ std::string handleReportSummary (TDB& tdb, T& task, Config& conf)
std::string project = t->getAttribute ("project"); std::string project = t->getAttribute ("project");
++counter[project]; ++counter[project];
if (t->getStatus () == T::pending) if (t->getStatus () == Tt::pending)
{ {
++countPending[project]; ++countPending[project];
@@ -586,7 +586,7 @@ std::string handleReportSummary (TDB& tdb, T& task, Config& conf)
sumEntry[project] = sumEntry[project] + (double) (now - entry); sumEntry[project] = sumEntry[project] + (double) (now - entry);
} }
else if (t->getStatus () == T::completed) else if (t->getStatus () == Tt::completed)
{ {
++countCompleted[project]; ++countCompleted[project];
@@ -702,12 +702,12 @@ std::string handleReportSummary (TDB& tdb, T& task, Config& conf)
// //
// Make the "three" tasks a configurable number // Make the "three" tasks a configurable number
// //
std::string handleReportNext (TDB& tdb, T& task, Config& conf) std::string handleReportNext (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
// Load all pending. // Load all pending.
std::vector <T> pending; std::vector <Tt> pending;
tdb.allPendingT (pending); tdb.allPendingT (pending);
handleRecurrence (tdb, pending); handleRecurrence (tdb, pending);
filter (pending, task); filter (pending, task);
@@ -728,7 +728,7 @@ std::string handleReportNext (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get the pending tasks. // Get the pending tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.pendingT (tasks); tdb.pendingT (tasks);
filter (tasks, task); filter (tasks, task);
@@ -778,7 +778,7 @@ std::string handleReportNext (TDB& tdb, T& task, Config& conf)
// Iterate over each task, and apply selection criteria. // Iterate over each task, and apply selection criteria.
foreach (i, matching) foreach (i, matching)
{ {
T refTask (pending[*i]); Tt refTask (pending[*i]);
Date now; Date now;
// Now format the matching task. // Now format the matching task.
@@ -887,7 +887,7 @@ time_t monthlyEpoch (const std::string& date)
return 0; return 0;
} }
std::string handleReportHistory (TDB& tdb, T& task, Config& conf) std::string handleReportHistory (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -897,13 +897,13 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
std::map <time_t, int> deletedGroup; std::map <time_t, int> deletedGroup;
// Scan the pending tasks. // Scan the pending tasks.
std::vector <T> pending; std::vector <Tt> pending;
tdb.allPendingT (pending); tdb.allPendingT (pending);
handleRecurrence (tdb, pending); handleRecurrence (tdb, pending);
filter (pending, task); filter (pending, task);
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
T task (pending[i]); Tt task (pending[i]);
time_t epoch = monthlyEpoch (task.getAttribute ("entry")); time_t epoch = monthlyEpoch (task.getAttribute ("entry"));
if (epoch) if (epoch)
{ {
@@ -914,7 +914,7 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
else else
addedGroup[epoch] = 1; addedGroup[epoch] = 1;
if (task.getStatus () == T::deleted) if (task.getStatus () == Tt::deleted)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -924,7 +924,7 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
else else
deletedGroup[epoch] = 1; deletedGroup[epoch] = 1;
} }
else if (task.getStatus () == T::completed) else if (task.getStatus () == Tt::completed)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -938,12 +938,12 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
} }
// Scan the completed tasks. // Scan the completed tasks.
std::vector <T> completed; std::vector <Tt> completed;
tdb.allCompletedT (completed); tdb.allCompletedT (completed);
filter (completed, task); filter (completed, task);
for (unsigned int i = 0; i < completed.size (); ++i) for (unsigned int i = 0; i < completed.size (); ++i)
{ {
T task (completed[i]); Tt task (completed[i]);
time_t epoch = monthlyEpoch (task.getAttribute ("entry")); time_t epoch = monthlyEpoch (task.getAttribute ("entry"));
if (epoch) if (epoch)
{ {
@@ -955,7 +955,7 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
addedGroup[epoch] = 1; addedGroup[epoch] = 1;
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
if (task.getStatus () == T::deleted) if (task.getStatus () == Tt::deleted)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -965,7 +965,7 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
else else
deletedGroup[epoch] = 1; deletedGroup[epoch] = 1;
} }
else if (task.getStatus () == T::completed) else if (task.getStatus () == Tt::completed)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -1079,7 +1079,7 @@ std::string handleReportHistory (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleReportGHistory (TDB& tdb, T& task, Config& conf) std::string handleReportGHistory (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -1101,13 +1101,13 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
std::map <time_t, int> deletedGroup; std::map <time_t, int> deletedGroup;
// Scan the pending tasks. // Scan the pending tasks.
std::vector <T> pending; std::vector <Tt> pending;
tdb.allPendingT (pending); tdb.allPendingT (pending);
handleRecurrence (tdb, pending); handleRecurrence (tdb, pending);
filter (pending, task); filter (pending, task);
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
T task (pending[i]); Tt task (pending[i]);
time_t epoch = monthlyEpoch (task.getAttribute ("entry")); time_t epoch = monthlyEpoch (task.getAttribute ("entry"));
if (epoch) if (epoch)
{ {
@@ -1118,7 +1118,7 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
else else
addedGroup[epoch] = 1; addedGroup[epoch] = 1;
if (task.getStatus () == T::deleted) if (task.getStatus () == Tt::deleted)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -1128,7 +1128,7 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
else else
deletedGroup[epoch] = 1; deletedGroup[epoch] = 1;
} }
else if (task.getStatus () == T::completed) else if (task.getStatus () == Tt::completed)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -1142,12 +1142,12 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
} }
// Scan the completed tasks. // Scan the completed tasks.
std::vector <T> completed; std::vector <Tt> completed;
tdb.allCompletedT (completed); tdb.allCompletedT (completed);
filter (completed, task); filter (completed, task);
for (unsigned int i = 0; i < completed.size (); ++i) for (unsigned int i = 0; i < completed.size (); ++i)
{ {
T task (completed[i]); Tt task (completed[i]);
time_t epoch = monthlyEpoch (task.getAttribute ("entry")); time_t epoch = monthlyEpoch (task.getAttribute ("entry"));
if (epoch) if (epoch)
{ {
@@ -1159,7 +1159,7 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
addedGroup[epoch] = 1; addedGroup[epoch] = 1;
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
if (task.getStatus () == T::deleted) if (task.getStatus () == Tt::deleted)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -1169,7 +1169,7 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
else else
deletedGroup[epoch] = 1; deletedGroup[epoch] = 1;
} }
else if (task.getStatus () == T::completed) else if (task.getStatus () == Tt::completed)
{ {
epoch = monthlyEpoch (task.getAttribute ("end")); epoch = monthlyEpoch (task.getAttribute ("end"));
groups[epoch] = 0; groups[epoch] = 0;
@@ -1323,7 +1323,7 @@ std::string handleReportGHistory (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleReportTimesheet (TDB& tdb, T& task, Config& conf) std::string handleReportTimesheet (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -1339,7 +1339,7 @@ std::string handleReportTimesheet (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get all the tasks. // Get all the tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.allT (tasks); tdb.allT (tasks);
filter (tasks, task); filter (tasks, task);
@@ -1399,7 +1399,7 @@ std::string handleReportTimesheet (TDB& tdb, T& task, Config& conf)
foreach (t, tasks) foreach (t, tasks)
{ {
// If task completed within range. // If task completed within range.
if (t->getStatus () == T::completed) if (t->getStatus () == Tt::completed)
{ {
Date compDate (::atoi (t->getAttribute ("end").c_str ())); Date compDate (::atoi (t->getAttribute ("end").c_str ()));
if (compDate >= start && compDate < end) if (compDate >= start && compDate < end)
@@ -1469,7 +1469,7 @@ std::string handleReportTimesheet (TDB& tdb, T& task, Config& conf)
foreach (t, tasks) foreach (t, tasks)
{ {
// If task started within range, but not completed withing range. // If task started within range, but not completed withing range.
if (t->getStatus () == T::pending && if (t->getStatus () == Tt::pending &&
t->getAttribute ("start") != "") t->getAttribute ("start") != "")
{ {
Date startDate (::atoi (t->getAttribute ("start").c_str ())); Date startDate (::atoi (t->getAttribute ("start").c_str ()));
@@ -1530,7 +1530,7 @@ std::string renderMonths (
int firstMonth, int firstMonth,
int firstYear, int firstYear,
const Date& today, const Date& today,
std::vector <T>& all, std::vector <Tt>& all,
Config& conf, Config& conf,
int monthsPerLine) int monthsPerLine)
{ {
@@ -1625,7 +1625,7 @@ std::string renderMonths (
today.year () == years.at (c)) today.year () == years.at (c))
table.setCellFg (row, thisCol, Text::cyan); table.setCellFg (row, thisCol, Text::cyan);
std::vector <T>::iterator it; std::vector <Tt>::iterator it;
for (it = all.begin (); it != all.end (); ++it) for (it = all.begin (); it != all.end (); ++it)
{ {
Date due (::atoi (it->getAttribute ("due").c_str ())); Date due (::atoi (it->getAttribute ("due").c_str ()));
@@ -1650,7 +1650,7 @@ std::string renderMonths (
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleReportCalendar (TDB& tdb, T& task, Config& conf) std::string handleReportCalendar (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -1675,7 +1675,7 @@ std::string handleReportCalendar (TDB& tdb, T& task, Config& conf)
monthsPerLine = preferredMonthsPerLine; monthsPerLine = preferredMonthsPerLine;
// Load all the pending tasks. // Load all the pending tasks.
std::vector <T> pending; std::vector <Tt> pending;
tdb.allPendingT (pending); tdb.allPendingT (pending);
handleRecurrence (tdb, pending); handleRecurrence (tdb, pending);
filter (pending, task); filter (pending, task);
@@ -1683,7 +1683,7 @@ std::string handleReportCalendar (TDB& tdb, T& task, Config& conf)
// Find the oldest pending due date. // Find the oldest pending due date.
Date oldest; Date oldest;
Date newest; Date newest;
std::vector <T>::iterator it; std::vector <Tt>::iterator it;
for (it = pending.begin (); it != pending.end (); ++it) for (it = pending.begin (); it != pending.end (); ++it)
{ {
if (it->getAttribute ("due") != "") if (it->getAttribute ("due") != "")
@@ -1759,7 +1759,7 @@ std::string handleReportCalendar (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleReportActive (TDB& tdb, T& task, Config& conf) std::string handleReportActive (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -1775,7 +1775,7 @@ std::string handleReportActive (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get all the tasks. // Get all the tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.pendingT (tasks); tdb.pendingT (tasks);
filter (tasks, task); filter (tasks, task);
@@ -1818,7 +1818,7 @@ std::string handleReportActive (TDB& tdb, T& task, Config& conf)
// Iterate over each task, and apply selection criteria. // Iterate over each task, and apply selection criteria.
for (unsigned int i = 0; i < tasks.size (); ++i) for (unsigned int i = 0; i < tasks.size (); ++i)
{ {
T refTask (tasks[i]); Tt refTask (tasks[i]);
if (refTask.getAttribute ("start") != "") if (refTask.getAttribute ("start") != "")
{ {
Date now; Date now;
@@ -1892,7 +1892,7 @@ std::string handleReportActive (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleReportOverdue (TDB& tdb, T& task, Config& conf) std::string handleReportOverdue (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -1908,7 +1908,7 @@ std::string handleReportOverdue (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get all the tasks. // Get all the tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.pendingT (tasks); tdb.pendingT (tasks);
filter (tasks, task); filter (tasks, task);
@@ -1953,7 +1953,7 @@ std::string handleReportOverdue (TDB& tdb, T& task, Config& conf)
// Iterate over each task, and apply selection criteria. // Iterate over each task, and apply selection criteria.
for (unsigned int i = 0; i < tasks.size (); ++i) for (unsigned int i = 0; i < tasks.size (); ++i)
{ {
T refTask (tasks[i]); Tt refTask (tasks[i]);
std::string due; std::string due;
if ((due = refTask.getAttribute ("due")) != "") if ((due = refTask.getAttribute ("due")) != "")
{ {
@@ -2015,7 +2015,7 @@ std::string handleReportOverdue (TDB& tdb, T& task, Config& conf)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
std::string handleReportStats (TDB& tdb, T& task, Config& conf) std::string handleReportStats (TDB& tdb, Tt& task, Config& conf)
{ {
std::stringstream out; std::stringstream out;
@@ -2031,7 +2031,7 @@ std::string handleReportStats (TDB& tdb, T& task, Config& conf)
#endif #endif
// Get all the tasks. // Get all the tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.allT (tasks); tdb.allT (tasks);
filter (tasks, task); filter (tasks, task);
@@ -2050,26 +2050,26 @@ std::string handleReportStats (TDB& tdb, T& task, Config& conf)
std::map <std::string, int> allTags; std::map <std::string, int> allTags;
std::map <std::string, int> allProjects; std::map <std::string, int> allProjects;
std::vector <T>::iterator it; std::vector <Tt>::iterator it;
for (it = tasks.begin (); it != tasks.end (); ++it) for (it = tasks.begin (); it != tasks.end (); ++it)
{ {
++totalT; ++totalT;
if (it->getStatus () == T::deleted) ++deletedT; if (it->getStatus () == Tt::deleted) ++deletedT;
if (it->getStatus () == T::pending) ++pendingT; if (it->getStatus () == Tt::pending) ++pendingT;
if (it->getStatus () == T::completed) ++completedT; if (it->getStatus () == Tt::completed) ++completedT;
if (it->getStatus () == T::recurring) ++recurringT; if (it->getStatus () == Tt::recurring) ++recurringT;
time_t entry = ::atoi (it->getAttribute ("entry").c_str ()); time_t entry = ::atoi (it->getAttribute ("entry").c_str ());
if (entry < earliest) earliest = entry; if (entry < earliest) earliest = entry;
if (entry > latest) latest = entry; if (entry > latest) latest = entry;
if (it->getStatus () == T::completed) if (it->getStatus () == Tt::completed)
{ {
time_t end = ::atoi (it->getAttribute ("end").c_str ()); time_t end = ::atoi (it->getAttribute ("end").c_str ());
daysPending += (end - entry) / 86400.0; daysPending += (end - entry) / 86400.0;
} }
if (it->getStatus () == T::pending) if (it->getStatus () == Tt::pending)
daysPending += (now - entry) / 86400.0; daysPending += (now - entry) / 86400.0;
descLength += it->getDescription ().length (); descLength += it->getDescription ().length ();
@@ -2215,9 +2215,9 @@ std::string handleReportStats (TDB& tdb, T& task, Config& conf)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void gatherNextTasks ( void gatherNextTasks (
const TDB& tdb, const TDB& tdb,
T& task, Tt& task,
Config& conf, Config& conf,
std::vector <T>& pending, std::vector <Tt>& pending,
std::vector <int>& all) std::vector <int>& all)
{ {
// For counting tasks by project. // For counting tasks by project.
@@ -2232,7 +2232,7 @@ void gatherNextTasks (
// due:< 1wk, pri:* // due:< 1wk, pri:*
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string due = pending[i].getAttribute ("due"); std::string due = pending[i].getAttribute ("due");
if (due != "") if (due != "")
@@ -2254,7 +2254,7 @@ void gatherNextTasks (
// due:*, pri:H // due:*, pri:H
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string due = pending[i].getAttribute ("due"); std::string due = pending[i].getAttribute ("due");
if (due != "") if (due != "")
@@ -2276,7 +2276,7 @@ void gatherNextTasks (
// pri:H // pri:H
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string priority = pending[i].getAttribute ("priority"); std::string priority = pending[i].getAttribute ("priority");
if (priority == "H") if (priority == "H")
@@ -2294,7 +2294,7 @@ void gatherNextTasks (
// due:*, pri:M // due:*, pri:M
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string due = pending[i].getAttribute ("due"); std::string due = pending[i].getAttribute ("due");
if (due != "") if (due != "")
@@ -2316,7 +2316,7 @@ void gatherNextTasks (
// pri:M // pri:M
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string priority = pending[i].getAttribute ("priority"); std::string priority = pending[i].getAttribute ("priority");
if (priority == "M") if (priority == "M")
@@ -2334,7 +2334,7 @@ void gatherNextTasks (
// due:*, pri:L // due:*, pri:L
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string due = pending[i].getAttribute ("due"); std::string due = pending[i].getAttribute ("due");
if (due != "") if (due != "")
@@ -2356,7 +2356,7 @@ void gatherNextTasks (
// pri:L // pri:L
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string priority = pending[i].getAttribute ("priority"); std::string priority = pending[i].getAttribute ("priority");
if (priority == "L") if (priority == "L")
@@ -2374,7 +2374,7 @@ void gatherNextTasks (
// due:, pri: // due:, pri:
for (unsigned int i = 0; i < pending.size (); ++i) for (unsigned int i = 0; i < pending.size (); ++i)
{ {
if (pending[i].getStatus () == T::pending) if (pending[i].getStatus () == Tt::pending)
{ {
std::string due = pending[i].getAttribute ("due"); std::string due = pending[i].getAttribute ("due");
if (due == "") if (due == "")
@@ -2403,7 +2403,7 @@ void gatherNextTasks (
// via the .taskrc file. // via the .taskrc file.
std::string handleCustomReport ( std::string handleCustomReport (
TDB& tdb, TDB& tdb,
T& task, Tt& task,
Config& conf, Config& conf,
const std::string& report) const std::string& report)
{ {
@@ -2447,14 +2447,14 @@ std::string handleCustomReport (
split (filterArgs, filterList, ' '); split (filterArgs, filterList, ' ');
// Load all pending tasks. // Load all pending tasks.
std::vector <T> tasks; std::vector <Tt> tasks;
tdb.allPendingT (tasks); tdb.allPendingT (tasks);
handleRecurrence (tdb, tasks); handleRecurrence (tdb, tasks);
// Apply filters. // Apply filters.
{ {
std::string ignore; std::string ignore;
T filterTask; Tt filterTask;
parse (filterArgs, ignore, filterTask, conf); parse (filterArgs, ignore, filterTask, conf);
filter (tasks, filterTask); // Filter from custom report filter (tasks, filterTask); // Filter from custom report

View File

@@ -81,7 +81,7 @@ void initializeColorRules (Config& conf)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void autoColorize ( void autoColorize (
T& task, Tt& task,
Text::color& fg, Text::color& fg,
Text::color& bg, Text::color& bg,
Config& conf) Config& conf)

View File

@@ -224,10 +224,9 @@ static std::string shortUsage (Config& conf)
out << table.render () out << table.render ()
<< std::endl << std::endl
<< "See http://www.beckingham.net/task.html for the latest releases and a " << "See http://taskwarrior.org for the latest releases and a "
<< "full tutorial. New releases containing fixes and enhancements are " << "full tutorial. New releases containing fixes and enhancements are "
<< "made frequently. Join in the discussion of task, present and future, " << "made frequently. Join in the discussion of task, present and future."
<< "at http://groups.google.com/group/taskprogram"
<< std::endl << std::endl
<< std::endl; << std::endl;
@@ -368,13 +367,13 @@ int main (int argc, char** argv)
} }
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
void nag (TDB& tdb, T& task, Config& conf) void nag (TDB& tdb, Tt& task, Config& conf)
{ {
std::string nagMessage = conf.get ("nag", std::string ("")); std::string nagMessage = conf.get ("nag", std::string (""));
if (nagMessage != "") if (nagMessage != "")
{ {
// Load all pending tasks. // Load all pending tasks.
std::vector <T> pending; std::vector <Tt> pending;
tdb.allPendingT (pending); tdb.allPendingT (pending);
// Counters. // Counters.
@@ -397,7 +396,7 @@ void nag (TDB& tdb, T& task, Config& conf)
if (priority.length ()) if (priority.length ())
pri = priority[0]; pri = priority[0];
} }
else if (t->getStatus () == T::pending) else if (t->getStatus () == Tt::pending)
{ {
if (getDueState (t->getAttribute ("due")) == 2) if (getDueState (t->getAttribute ("due")) == 2)
overdue++; overdue++;
@@ -456,14 +455,14 @@ int getDueState (const std::string& due)
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Scans all tasks, and for any recurring tasks, determines whether any new // Scans all tasks, and for any recurring tasks, determines whether any new
// child tasks need to be generated to fill gaps. // child tasks need to be generated to fill gaps.
void handleRecurrence (TDB& tdb, std::vector <T>& tasks) void handleRecurrence (TDB& tdb, std::vector <Tt>& tasks)
{ {
std::vector <T> modified; std::vector <Tt> modified;
// Look at all tasks and find any recurring ones. // Look at all tasks and find any recurring ones.
foreach (t, tasks) foreach (t, tasks)
{ {
if (t->getStatus () == T::recurring) if (t->getStatus () == Tt::recurring)
{ {
// Generate a list of due dates for this recurring task, regardless of // Generate a list of due dates for this recurring task, regardless of
// the mask. // the mask.
@@ -480,7 +479,7 @@ void handleRecurrence (TDB& tdb, std::vector <T>& tasks)
char endTime[16]; char endTime[16];
sprintf (endTime, "%u", (unsigned int) time (NULL)); sprintf (endTime, "%u", (unsigned int) time (NULL));
t->setAttribute ("end", endTime); t->setAttribute ("end", endTime);
t->setStatus (T::deleted); t->setStatus (Tt::deleted);
tdb.modifyT (*t); tdb.modifyT (*t);
continue; continue;
} }
@@ -498,10 +497,10 @@ void handleRecurrence (TDB& tdb, std::vector <T>& tasks)
mask += '-'; mask += '-';
changed = true; changed = true;
T rec (*t); // Clone the parent. Tt rec (*t); // Clone the parent.
rec.setId (tdb.nextId ()); // Assign a unique id. rec.setId (tdb.nextId ()); // Assign a unique id.
rec.setUUID (uuid ()); // New UUID. rec.setUUID (uuid ()); // New UUID.
rec.setStatus (T::pending); // Shiny. rec.setStatus (Tt::pending); // Shiny.
rec.setAttribute ("parent", t->getUUID ()); // Remember mom. rec.setAttribute ("parent", t->getUUID ()); // Remember mom.
char dueDate[16]; char dueDate[16];
@@ -541,7 +540,7 @@ void handleRecurrence (TDB& tdb, std::vector <T>& tasks)
// period (recur). Then generate a set of corresponding dates. // period (recur). Then generate a set of corresponding dates.
// //
// Returns false if the parent recurring task is depleted. // Returns false if the parent recurring task is depleted.
bool generateDueDates (T& parent, std::vector <Date>& allDue) bool generateDueDates (Tt& parent, std::vector <Date>& allDue)
{ {
// Determine due date, recur period and until date. // Determine due date, recur period and until date.
Date due (atoi (parent.getAttribute ("due").c_str ())); Date due (atoi (parent.getAttribute ("due").c_str ()));
@@ -726,13 +725,13 @@ Date getNextRecurrence (Date& current, std::string& period)
// update it's mask. // update it's mask.
void updateRecurrenceMask ( void updateRecurrenceMask (
TDB& tdb, TDB& tdb,
std::vector <T>& all, std::vector <Tt>& all,
T& task) Tt& task)
{ {
std::string parent = task.getAttribute ("parent"); std::string parent = task.getAttribute ("parent");
if (parent != "") if (parent != "")
{ {
std::vector <T>::iterator it; std::vector <Tt>::iterator it;
for (it = all.begin (); it != all.end (); ++it) for (it = all.begin (); it != all.end (); ++it)
{ {
if (it->getUUID () == parent) if (it->getUUID () == parent)
@@ -741,9 +740,9 @@ void updateRecurrenceMask (
std::string mask = it->getAttribute ("mask"); std::string mask = it->getAttribute ("mask");
if (mask.length () > index) if (mask.length () > index)
{ {
mask[index] = (task.getStatus () == T::pending) ? '-' mask[index] = (task.getStatus () == Tt::pending) ? '-'
: (task.getStatus () == T::completed) ? '+' : (task.getStatus () == Tt::completed) ? '+'
: (task.getStatus () == T::deleted) ? 'X' : (task.getStatus () == Tt::deleted) ? 'X'
: '?'; : '?';
it->setAttribute ("mask", mask); it->setAttribute ("mask", mask);
@@ -755,9 +754,9 @@ void updateRecurrenceMask (
for (unsigned int i = 0; i < index; ++i) for (unsigned int i = 0; i < index; ++i)
mask += "?"; mask += "?";
mask += (task.getStatus () == T::pending) ? '-' mask += (task.getStatus () == Tt::pending) ? '-'
: (task.getStatus () == T::completed) ? '+' : (task.getStatus () == Tt::completed) ? '+'
: (task.getStatus () == T::deleted) ? 'X' : (task.getStatus () == Tt::deleted) ? 'X'
: '?'; : '?';
} }
@@ -858,7 +857,7 @@ std::string runTaskCommand (
loadCustomReports (conf); loadCustomReports (conf);
std::string command; std::string command;
T task; Tt task;
parse (args, command, task, conf); parse (args, command, task, conf);
bool gcMod = false; // Change occurred by way of gc. bool gcMod = false; // Change occurred by way of gc.

View File

@@ -54,7 +54,7 @@ for (typeof (c) *foreach_p = & (c); \
++i) ++i)
// parse.cpp // parse.cpp
void parse (std::vector <std::string>&, std::string&, T&, Config&); void parse (std::vector <std::string>&, std::string&, Tt&, Config&);
bool validPriority (const std::string&); bool validPriority (const std::string&);
bool validDate (std::string&, Config&); bool validDate (std::string&, Config&);
bool validDuration (std::string&); bool validDuration (std::string&);
@@ -63,60 +63,60 @@ bool isCustomReport (const std::string&);
void allCustomReports (std::vector <std::string>&); void allCustomReports (std::vector <std::string>&);
// task.cpp // task.cpp
void gatherNextTasks (const TDB&, T&, Config&, std::vector <T>&, std::vector <int>&); void gatherNextTasks (const TDB&, Tt&, Config&, std::vector <Tt>&, std::vector <int>&);
void nag (TDB&, T&, Config&); void nag (TDB&, Tt&, Config&);
int getDueState (const std::string&); int getDueState (const std::string&);
void handleRecurrence (TDB&, std::vector <T>&); void handleRecurrence (TDB&, std::vector <Tt>&);
bool generateDueDates (T&, std::vector <Date>&); bool generateDueDates (Tt&, std::vector <Date>&);
Date getNextRecurrence (Date&, std::string&); Date getNextRecurrence (Date&, std::string&);
void updateRecurrenceMask (TDB&, std::vector <T>&, T&); void updateRecurrenceMask (TDB&, std::vector <Tt>&, Tt&);
void onChangeCallback (); void onChangeCallback ();
std::string runTaskCommand (int, char**, TDB&, Config&, bool gc = true, bool shadow = true); std::string runTaskCommand (int, char**, TDB&, Config&, bool gc = true, bool shadow = true);
std::string runTaskCommand (std::vector <std::string>&, TDB&, Config&, bool gc = false, bool shadow = false); std::string runTaskCommand (std::vector <std::string>&, TDB&, Config&, bool gc = false, bool shadow = false);
// command.cpp // command.cpp
std::string handleAdd (TDB&, T&, Config&); std::string handleAdd (TDB&, Tt&, Config&);
std::string handleAppend (TDB&, T&, Config&); std::string handleAppend (TDB&, Tt&, Config&);
std::string handleExport (TDB&, T&, Config&); std::string handleExport (TDB&, Tt&, Config&);
std::string handleDone (TDB&, T&, Config&); std::string handleDone (TDB&, Tt&, Config&);
std::string handleModify (TDB&, T&, Config&); std::string handleModify (TDB&, Tt&, Config&);
std::string handleProjects (TDB&, T&, Config&); std::string handleProjects (TDB&, Tt&, Config&);
std::string handleTags (TDB&, T&, Config&); std::string handleTags (TDB&, Tt&, Config&);
std::string handleUndelete (TDB&, T&, Config&); std::string handleUndelete (TDB&, Tt&, Config&);
std::string handleVersion (Config&); std::string handleVersion (Config&);
std::string handleDelete (TDB&, T&, Config&); std::string handleDelete (TDB&, Tt&, Config&);
std::string handleStart (TDB&, T&, Config&); std::string handleStart (TDB&, Tt&, Config&);
std::string handleStop (TDB&, T&, Config&); std::string handleStop (TDB&, Tt&, Config&);
std::string handleUndo (TDB&, T&, Config&); std::string handleUndo (TDB&, Tt&, Config&);
std::string handleColor (Config&); std::string handleColor (Config&);
std::string handleAnnotate (TDB&, T&, Config&); std::string handleAnnotate (TDB&, Tt&, Config&);
std::string handleDuplicate (TDB&, T&, Config&); std::string handleDuplicate (TDB&, Tt&, Config&);
T findT (int, const std::vector <T>&); Tt findT (int, const std::vector <Tt>&);
int deltaAppend (T&, T&); int deltaAppend (Tt&, Tt&);
int deltaDescription (T&, T&); int deltaDescription (Tt&, Tt&);
int deltaTags (T&, T&); int deltaTags (Tt&, Tt&);
int deltaAttributes (T&, T&); int deltaAttributes (Tt&, Tt&);
int deltaSubstitutions (T&, T&); int deltaSubstitutions (Tt&, Tt&);
// edit.cpp // edit.cpp
std::string handleEdit (TDB&, T&, Config&); std::string handleEdit (TDB&, Tt&, Config&);
// report.cpp // report.cpp
void filterSequence (std::vector<T>&, T&); void filterSequence (std::vector<Tt>&, Tt&);
void filter (std::vector<T>&, T&); void filter (std::vector<Tt>&, Tt&);
std::string handleInfo (TDB&, T&, Config&); std::string handleInfo (TDB&, Tt&, Config&);
std::string handleCompleted (TDB&, T&, Config&); std::string handleCompleted (TDB&, Tt&, Config&);
std::string handleReportSummary (TDB&, T&, Config&); std::string handleReportSummary (TDB&, Tt&, Config&);
std::string handleReportNext (TDB&, T&, Config&); std::string handleReportNext (TDB&, Tt&, Config&);
std::string handleReportHistory (TDB&, T&, Config&); std::string handleReportHistory (TDB&, Tt&, Config&);
std::string handleReportGHistory (TDB&, T&, Config&); std::string handleReportGHistory (TDB&, Tt&, Config&);
std::string handleReportCalendar (TDB&, T&, Config&); std::string handleReportCalendar (TDB&, Tt&, Config&);
std::string handleReportActive (TDB&, T&, Config&); std::string handleReportActive (TDB&, Tt&, Config&);
std::string handleReportOverdue (TDB&, T&, Config&); std::string handleReportOverdue (TDB&, Tt&, Config&);
std::string handleReportStats (TDB&, T&, Config&); std::string handleReportStats (TDB&, Tt&, Config&);
std::string handleReportTimesheet (TDB&, T&, Config&); std::string handleReportTimesheet (TDB&, Tt&, Config&);
std::string handleCustomReport (TDB&, T&, Config&, const std::string&); std::string handleCustomReport (TDB&, Tt&, Config&, const std::string&);
void validReportColumns (const std::vector <std::string>&); void validReportColumns (const std::vector <std::string>&);
void validSortColumns (const std::vector <std::string>&, const std::vector <std::string>&); void validSortColumns (const std::vector <std::string>&, const std::vector <std::string>&);
@@ -160,10 +160,10 @@ void spit (const std::string&, const std::string&);
// rules.cpp // rules.cpp
void initializeColorRules (Config&); void initializeColorRules (Config&);
void autoColorize (T&, Text::color&, Text::color&, Config&); void autoColorize (Tt&, Text::color&, Text::color&, Config&);
// import.cpp // import.cpp
std::string handleImport (TDB&, T&, Config&); std::string handleImport (TDB&, Tt&, Config&);
// list template // list template
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@@ -1,18 +1,39 @@
# bash completion support for task
# #
# bash completion support for task 1.7.0-2 # Copyright 2009 Federico Hernandez
# Copyright (C) 2009 Federico Hernandez <ultrafredde@gmail.com> # All rights reserved.
# Distributed under the GNU General Public License, version 2.0 #
# This script is part of the task project.
#
# 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 2 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, write to the
#
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor,
# Boston, MA
# 02110-1301
# USA
# #
# The routines will do completion of: # The routines will do completion of:
# #
# *) task subcommands # *) task subcommands
# *) local and remote tag names # *) tag names
# #
# To use these routines: # To use these routines:
# #
# 1) Copy this file to somewhere (e.g. ~/.task-completion.sh). # 1) Copy this file to somewhere (e.g. ~/.bash_completion.d/.task_completion.sh).
# 2) Added the following line to your .bashrc: # 2) Added the following line to your .bashrc:
# source ~/.task-completion.sh # source ~/.bash_completion.d/task_completion.sh
# #
# OR # OR
# #
@@ -21,13 +42,9 @@
# #
# To submit patches/bug reports: # To submit patches/bug reports:
# #
# *) Send them to the mailing list: # *) Go to the projects website at
# #
# taskprogram@googlegroups.com # http://taskwarrior.org
#
# *) CC the all patchesi/bug reports to:
#
# Federico Hernandez <ultrafredde@gmail.com>
# #
_task() _task()