[TextMate] Current date in file templates

Allan Odgaard allan at macromates.com
Sun Oct 10 05:29:21 UTC 2004

On 9. Oct 2004, at 22:34, Isaac Rivera wrote:

> I came up with a pretty decent syntax file mysefl.

Okay, Rob also did some ActionScript support:

> Trying to do a class template and have gotten most of it.
> Can you tell me how to have the perl script input the date in the 
> template file?
> Its not one of the shell variables, I know, but maybe its accessible 
> to the script.

These questions really belong on the ML, so I'm cc'ing the list :)

You can add your own variables to the environment by changing the 
command in the Info.plist, for example here I setup TM_DATE to be 

    name = "Date Test";
    extension = "txt";
    command = "[ -f $TM_NEW_FILE ] || TM_DATE=`date +%Y-%m-%d` perl -pe 
's/\\$\\{([^}]*)\\}/$ENV{$1}/g' <index.html >\"$TM_NEW_FILE\"";

So it's basically just 'var=value' before the perl command (you can set 
multiple variables). And the back-ticks (`) means that it's a command 
to execute, so TM_DATE is set to the result of running date +%Y-%m-%d.  
All this is of course related to bash and not really TextMate.

Another neat one is the full user name which we can get with niutil, 
here's an example:

    command = "[ -f $TM_NEW_FILE ] || TM_DATE=`date +%Y-%m-%d` 
TM_USERNAME=`niutil -readprop / /users/\\$USER realname` perl -pe 
's/\\$\\{([^}]*)\\}/$ENV{$1}/g' <index.html >\"$TM_NEW_FILE\"";

One important note: the commands above are prefixed with '[ -f 
$TM_NEW_FILE ] || '. This is to check if the file already exists, and 
if so, it won't do the "or" branch (i.e. overwrite it).

I really should have added this to the default templates! I'll be 
adding it to all templates shipping with 1.0.1 -- if you create your 
own templates, please add it to avoid templates from overwriting files!

The reason TextMate doesn't perform this check is, that the template 
could generate multiple files, or not generate TM_NEW_FILE at al.

Also, remember that you're not limited to using perl as command. You 
can write your templates in e.g. PHP and use php as the command to 
generate them.

Kind regards Allan

More information about the textmate mailing list