comparison TODO.txt @ 8:157df8d1c3ed

add a TODO
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 11 Nov 2010 16:33:27 -0800
parents
children 6e08cca7d656
comparison
equal deleted inserted replaced
7:324a70edb73c 8:157df8d1c3ed
1 Planned features:
2
3 - Have a filepath or URL as the basic thing that gets "filled". (These
4 should be files, directories, entry_points, or URLs)
5
6 - There'd be hooks, so you could define a Python file in the control
7 config, and have stuff like:
8
9 def wrap(filename, rendered_content, vars)
10 def conflict(filename, prev_content, new_content, vars) # Could do prepend here, for instance
11 def some_helper_func()
12
13 - An option to display this at the end of the run:
14
15 makeitso -t my/template/ var1=value var2=value
16
17 Then you can easily rerun the command
18
19 - ability to specify delimeters (both for file interpolation and
20 filename interpolation); normally, i'd want '${' + '}', but this
21 works poor with, say, bash scripts, and not having this makes it
22 difficult to write templates that make other templates
23
24 - should be able to contain as much information as possible in a
25 single file. Since most often I want to give someone (possibly
26 myself) a single file to run, it would be nice to have some local
27 maximum of the product of flexibility and legibility
28
29 - the ability to create a self-executing script from a file for easy
30 portability
31
32 - ability to find the variables used in templates; I find this
33 absolutely critical. In PasteScript, this isn't there (unless you
34 use cheetah) and it is problematic if you want to deal with
35 templates programmatically. If you do allow things, like
36 single-file templates, then this becomes mandatory. This is to say,
37 amongst other things, there should be a command-line option that
38 will list the template variables.
39
40 - ability to make existing directory structures or files into
41 templates
42
43 - ability to use defaults (--use-defaults) when they are specified
44
45 - ability to save variables used in a run into a file:
46
47 makeitso --save-variables=myvars.txt mytemplate
48
49 - ability to have executing script files (for packaged tests or via a shebang)
50
51 - a dotfile for metadata (e.g. ~/.makeitso)
52
53 - hooks for things to do after creation (licensing, uploading
54 somewhere, creating a repository, etc)
55
56 - not having to name template files 'foo_tmpl'; it is better not to
57 munge the file extension at all and have other mechanisms for
58 denoting files to be interpolated
59
60 - ability to use python in interpolation
61
62 - backwards compatability with pastescript templates
63
64 - a web interface (or a few)
65
66 - Like pastescript currently does, the ability to apply templates
67 sequentially.
68
69 Files:
70
71 - ability to interpolate single files (or strings)
72
73 Directories:
74
75 - a file like makeitso.ini (in that directory) can control stuff
76
77 Nice-to-haves:
78
79 - ability to munge files (e.g. combining setup.py from several
80 packages) [HARD]
81
82 - ability to push changes from a downstream instance to a template [HARD]
83
84 - It would also be nice (but not required) to be able to control how
85 things get put together. That is, for a setup.py or a README, what
86 do you do? For the latter, you probably mostly want append. For
87 the former you want to do various things : e.g. add dependencies,
88 add entry points, etc. So we should figure out a way to write a
89 template like that and have each template applied e.g. increment
90 dependencies. So the latter are like variables.
91
92 Tempita:
93
94 - Parsing variables out of tempita should be workable. Even if a
95 couple are missed, you could possibly put some in config.ini and
96 have the rest detected (so you don't worry about forgetting new variables)