changeset 8:157df8d1c3ed

add a TODO
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 11 Nov 2010 16:33:27 -0800
parents 324a70edb73c
children a77630b2b491
files TODO.txt
diffstat 1 files changed, 96 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TODO.txt	Thu Nov 11 16:33:27 2010 -0800
@@ -0,0 +1,96 @@
+Planned features:
+
+ - Have a filepath or URL as the basic thing that gets "filled". (These
+   should be files, directories, entry_points, or URLs)
+
+ - There'd be hooks, so you could define a Python file in the control
+   config, and have stuff like:
+
+   def wrap(filename, rendered_content, vars)
+   def conflict(filename, prev_content, new_content, vars) # Could do prepend here, for instance
+   def some_helper_func()
+
+ - An option to display this at the end of the run:
+   
+        makeitso -t my/template/ var1=value var2=value
+
+   Then you can easily rerun the command
+
+ - ability to specify delimeters (both for file interpolation and
+   filename interpolation);  normally, i'd want '${' + '}', but this
+   works poor with, say, bash scripts, and not having this makes it
+   difficult to write templates that make other templates
+
+ - should be able to contain as much information as possible in a
+   single file.  Since most often I want to give someone (possibly
+   myself) a single file to run, it would be nice to have some local
+   maximum of the product of flexibility and legibility
+
+ - the ability to create a self-executing script from a file for easy
+   portability
+
+ - ability to find the variables used in templates;  I find this
+   absolutely critical.  In PasteScript, this isn't there (unless you
+   use cheetah) and it is problematic if you want to deal with
+   templates programmatically.  If you do allow things, like
+   single-file templates, then this becomes mandatory. This is to say,
+   amongst other things, there should be a command-line option that
+   will list the template variables.
+
+ - ability to make existing directory structures or files into
+   templates
+
+ - ability to use defaults (--use-defaults) when they are specified
+
+ - ability to save variables used in a run into a file: 
+
+           makeitso --save-variables=myvars.txt mytemplate
+
+ - ability to have executing script files (for packaged tests or via a shebang)
+
+ - a dotfile for metadata (e.g. ~/.makeitso)
+
+ - hooks for things to do after creation (licensing, uploading
+   somewhere, creating a repository, etc)
+
+ - not having to name template files 'foo_tmpl';  it is better not to
+   munge the file extension at all and have other mechanisms for
+   denoting files to be interpolated
+
+ - ability to use python in interpolation 
+
+ - backwards compatability with pastescript templates
+
+ - a web interface (or a few)
+
+ - Like pastescript currently does, the ability to apply templates
+   sequentially.
+
+Files:
+
+ - ability to interpolate single files (or strings)
+
+Directories:
+
+ - a file like makeitso.ini (in that directory) can control stuff
+
+Nice-to-haves:
+
+ - ability to munge files (e.g. combining setup.py from several
+  packages) [HARD]
+
+ - ability to push changes from a downstream instance to a template [HARD]
+
+ - It would also be nice (but not required) to be able to control how
+   things get put together.  That is, for a setup.py or a README, what
+   do you do?  For the latter, you probably mostly want append.  For
+   the former you want to do various things : e.g. add dependencies,
+   add entry points, etc.  So we should figure out a way to write a
+   template like that and have each template applied e.g. increment
+   dependencies.  So the latter are like variables.
+
+Tempita:
+
+ - Parsing variables out of tempita should be workable.  Even if a
+   couple are missed, you could possibly put some in config.ini and
+   have the rest detected (so you don't worry about forgetting new variables)