Add templates command as warmup for other commands

* Add descriptions to the templates
* Update twig formatters and fix some output bugs
This commit is contained in:
Craig Davis 2014-01-12 08:57:39 -07:00
parent b403d712a1
commit 8f43dc5c29
11 changed files with 116 additions and 8 deletions

View File

@ -21,9 +21,10 @@ if (!defined("IN_PHAR")) {
}
$templatePath = __DIR__ . '/templates';
$consoleTemplatePath = __DIR__ . '/src/Resume/Templates';
// Init the app with these params
$console->initialize($templatePath, $project);
$console->initialize($templatePath, $consoleTemplatePath, $project);
// Execute the console app.
$console->run();

View File

@ -0,0 +1,10 @@
<?php
namespace Resume\Cli;
class Converter
{
}
/* End of file Converter.php */

View File

@ -16,13 +16,16 @@ class Resume extends Application
public $recentCaseLimit = 10;
public function initialize($templatePath, $project)
public function initialize($templatePath, $consoleTemplatePath, $project)
{
$runSetup = false;
// Add the composer information for use in version info and such.
$this->project = $project;
// The absolute path to the html output templates
$this->templatePath = $templatePath;
// https://github.com/symfony/Console/blob/master/Output/Output.php
// the alternative is OutputInterface::OUTPUT_PLAIN;
$this->outputFormat = OutputInterface::OUTPUT_NORMAL;
@ -32,11 +35,14 @@ class Resume extends Application
$this->setVersion($this->project->version);
// Load our commands into the application
$this->add(new Command\HtmlCommand());
$this->add(new Command\PdfCommand());
$this->add(new Command\SelfUpdateCommand());
$this->add(new Command\TemplatesCommand());
$this->add(new Command\VersionCommand());
// We'll use [Twig](http://twig.sensiolabs.org/) for template output
$loader = new \Twig_Loader_Filesystem($templatePath);
$loader = new \Twig_Loader_Filesystem($consoleTemplatePath);
$this->twig = new \Twig_Environment(
$loader,
array(
@ -47,8 +53,8 @@ class Resume extends Application
);
// These are helpers that we use to format output on the cli: styling and padding and such
$this->twig->addFilter('pad', new \Twig_Filter_Function("FogBugz\Cli\TwigFormatters::strpad"));
$this->twig->addFilter('style', new \Twig_Filter_Function("FogBugz\Cli\TwigFormatters::style"));
$this->twig->addFilter('pad', new \Twig_Filter_Function("Resume\Cli\TwigFormatters::strpad"));
$this->twig->addFilter('style', new \Twig_Filter_Function("Resume\Cli\TwigFormatters::style"));
$this->twig->addFilter('repeat', new \Twig_Filter_Function("str_repeat"));
$this->twig->addFilter('wrap', new \Twig_Filter_Function("wordwrap"));
}

View File

@ -1,5 +1,5 @@
<?php
namespace FogBugz\Cli;
namespace Resume\Cli;
class TwigFormatters
{

View File

@ -2,6 +2,8 @@
namespace Resume\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
@ -9,9 +11,33 @@ class HtmlCommand extends Command
{
protected function configure()
{
// resume html source.md resume.html -template blockish -refresh
$this
->setName('html')
->setDescription('Generate an HTML resume from a markdown file');
->setDescription('Generate an HTML resume from a markdown file')
->addArgument(
'source',
InputArgument::REQUIRED,
'Source markdown document'
)
->addArgument(
'output',
InputArgument::REQUIRED,
'Output html document'
)
->addOption(
'template',
't',
InputOption::VALUE_NONE,
'Which of the templates to use'
)
->addOption(
'refresh',
'r',
InputOption::VALUE_NONE,
'If set, the html will include a meta command to refresh the ' .
'document every 5 seconds.'
);
}
protected function execute(InputInterface $input, OutputInterface $output)

View File

@ -2,6 +2,8 @@
namespace Resume\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
@ -11,7 +13,23 @@ class PdfCommand extends Command
{
$this
->setName('pdf')
->setDescription('Generate a PDF from a markdown file');
->setDescription('Generate a PDF from a markdown file')
->addArgument(
'source',
InputArgument::REQUIRED,
'Source markdown document'
)
->addArgument(
'output',
InputArgument::REQUIRED,
'Output html document'
)
->addOption(
'template',
't',
InputOption::VALUE_NONE,
'Which of the templates to use'
);
}
protected function execute(InputInterface $input, OutputInterface $output)

View File

@ -0,0 +1,35 @@
<?php
namespace Resume\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class TemplatesCommand extends Command
{
protected function configure()
{
$this
->setName('templates')
->setDescription('List available templates');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$this->app = $this->getApplication();
$tplData = array('templates' => array());
foreach(glob($this->app->templatePath . '/*', GLOB_ONLYDIR) as $dir) {
$tplData['templates'][] = (object) array(
'name' => basename($dir),
'description' => file_exists($dir . '/description.txt')
? trim(file_get_contents($dir . '/description.txt'))
: 'No description available'
);
}
$template = $this->app->twig->loadTemplate('templates.twig');
$view = $template->render($tplData);
$output->write($view, true, $this->app->outputFormat);
}
}
/* End of file TemplatesCommand.php */

View File

@ -0,0 +1,9 @@
————————————————————————————————————————————————————————————————————————————————
<heading> Available Templates </heading>
————————————————————————————————————————————————————————————————————————————————
{% for template in templates %}
{{template.name|style("info")|pad(15, "left")}}{{template.description}}
{% endfor %}
{% if templates|length == 0%}
<notice>There are no templates available</notice>
{% endif %}

View File

@ -0,0 +1 @@
Default template, serif fonts and pale grey

View File

@ -0,0 +1 @@
Modern and clean

View File

@ -0,0 +1 @@
Unstyled, useful as a base for your own templates