annotate TODO.txt @ 96:cc17537254d2

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