# $Id: TODO,v 1.17 2006/11/06 06:38:15 alan Exp $

reorganize TODO file :)

#################
in rolediff, feed the files to slack-diff via stdin or something to speed
things up.

Slack.pm: in find_files_to_install(), probably better to hand the callback a
relative path (sub out ^$source/).

make run_backend() do the printing to stderr and dereferencing backend flags

write unit tests for slack-stage changes (--subdir support)
more unit tests for slack-diff
    we can use fakeroot if avail and skip some tests if non-root

manpage update:
    describe order of operations

add functionality to check manually-supplied role list against list in
    slack-getroles, with option to override
clean up debian/rules (wow is it a mess; use some dh_*, man!)
add --version option
logging!
don't test for -x on scripts, just -e (making non-executable scripts
    a fatal error)
just skip syncing if source equals cache.
use an "install" script, if present, instead of built-in
    file install routines
export dry-run, backup, backup-dir if they exist
support preview
    add a flag to run script in preview with a dry-run flag or env
function library for shell scripts
in RPM, deb, create subdirs of CACHE

replace --cvs-exclude in slack-sync with a better exclude list
    [so people can, against my advice :), install .so files and such]

a push script to read roles.conf and push a role to all servers running it

#################

PRE-1.0:
* Figure out some better way to handle backup options:
    - by default, we want admins to just specify the base backup dir in config,
      and we can add the time-based subdir to it
    - we generally want only installfiles to do backups (given the existence
        of fixfiles, it's pretty useless for slack-sync)
    - if we're doing backups in slack-sync, we need to append
        files(.subrole)?|scripts
    - rsync really hates whatever fixfiles does with symlinks in the
        accounts role.  it's probably a bug.  track it down.
    - before running scripts, install them in some other directory, so we
        can keep track of the last script we ran for backup and warning
        purposes.  (just doing it in slack-sync wouldn't work for nagging
        or warning purposes).  Probably we'll have to install them all
        at once, since we don't know what other files in the scripts/
        directory they may use.

* bundle compatibility scheme
    
* Nagging
    - we want to be able to nag admins about files they have not yet installed
        or scripts they have not yet run

* separate slack-runscript, slack-runfixfiles
* allow ./configure to set paths
* manpages for slack, slack-backends
* record what roles have been installed
--------
LATER:

* build in support for heterogenous underlying distros, like subsets have
  (maybe just assing subroles)

* Allow easy review of changes before install
* Nagging email about pending changes
* Use backup functionality to store original versions of files,
  so we can uninstall
* Use backups to store intermediate versions of files for rollbacks
* Make a helper that uses tripwire or AIDE to find files that
  have been modified and upload them to repository, so people
  can be *really* lazy.
* Locking to prevent concurrent writes

* something like rpm -ql, -qf to show/query files in a role (just from files
    dir)
* use a tarball as a source (possibly fetched with wget)
