code: public TemplateEntry compileTemplate( final File templateFile ) {
  
  		TemplateEntry templateEntry = null;
  		try {
  			// Parse the template's content and find the (optional) output
  			String templateFileContent = Utils.readFileContent( templateFile );
  			Matcher m = Pattern.compile( "\\{\\{!\\s*roboconf-output:(.*)\\}\\}" ).matcher( templateFileContent.trim());
  
  			String targetFilePath = null;
  			if( m.find())
  				targetFilePath = m.group( 1 ).trim();
  
  			// Compile the template file
  			final Template template = this.handlebars.compile(
  					new StringTemplateSource(
  							templateFile.toString(),
  							templateFileContent ));
  
  			// Create the entry
  			templateEntry = new TemplateEntry(
  					templateFile, targetFilePath, template,
  					TemplateUtils.findApplicationName( this.templateDir, templateFile ));
  
  		} catch( IOException | IllegalArgumentException | HandlebarsException e ) {
  			this.logger.warning("Cannot compile template " + templateFile);
  			Utils.logException(this.logger, e);
  		}
  
  		return templateEntry;
  	}
docs: Compiles the given template file and create the associated template entry.
  <p>IO and compile errors are logged but not rethrown.</p>
  
  @param templateFile the template file to compile
  @return the created template entry, or {@code null} if any problem occurred