This is a neat approach but I see some limitations in it if I were to try to use it in the way I envision working. That is, I have a wish list! :)
As near as I can understand this code, it starts in the current TextMate project directory, creating a new directory there named "html." It then goes through the project directory looking for files that end in ".php," hands those files to the php command line interpreter and puts the output into the previously created "html" directory, changing the file extension from ".php" to ".html."
I assume it does this recursively both when searching for php files and when outputting the files as html. I think the -p switch will cause that to happen on the output side, but I'm not clear where it happens in the for...do part.
I don't see that this will create a complete site, though. That is, there are many other kinds of files (css files, image, movie and sound files, etc.) in my working site (my TM project). Naturally, those would need to get moved into their correct locations in the new (static) "html" folder also.
Next challenge: this process (ejecting a static version of my dynamic working site) is not something that I would do once, at the "end" of a project, but quite often... whenever I wanted to publish the site to a test or staging server. In that situation, I certainly don't want to have to process every file for the entire site each time I want to update my test server. I only want to process the files that have *changed* since the last time I ran the process. Conceptually, I sorta would like to work rsync into the process here, but I don't quite see how to do it (as none of the html files in the static site are going to match with their "source" php files).
Thanks for any ideas!
eo
On Mar 3, 2006, at 8:29 AM, Allan Odgaard wrote:
On 2/3/2006, at 15:30, csilver_junk@mac.com wrote:
[...] If nothing resembling Persistent Includes is available in TextMate, another viable option would be to auto-generate the output of an entire project but save it to a new directory on my system using the same hierarchy of the original project [...]
I have no real idea about what the Persistent Includes can do, but it would be easy to create a TM command which e.g. pipes each *.php file in your project through PHP and wrote the result to an “html” sub-directory (as an HTML file):
cd "${TM_PROJECT_DIRECTORY:-$TM_DIRECTORY}" mkdir -p html for f in *.php; do php <"$f" >"html/${f%.*}.html" done
This would allow you to use all the power of PHP and create static files from that. You could add a master.inc which got sourced when generating each of the files, e.g. like this:
cd "${TM_PROJECT_DIRECTORY:-$TM_DIRECTORY}" mkdir -p html for f in *.php; do cat master.inc "$f"|php >"html/${f%.*}.html" done
That way you could place shared variables and such in your master.inc.
FYI the TextMate manual is generated in a slightly similar fashion, see http://lists.macromates.com/pipermail/textmate/2006-February/ 008160.html for more.