#! /usr/bin/env perl #-*- mode: Perl -*- use lib 'lib'; use strict; use warnings; use Log::Any qw/$log/; use Log::Any::Adapter; Log::Any::Adapter->set('Stderr', log_level => 'info' ); use App::JIRAPrint; use Getopt::Long; use Pod::Usage; my ($sprint, $project, $url, $username); my $verbose; my $help; my $output; GetOptions( "sprint=s" => \$sprint, "project=s" => \$project, "url=s" => \$url, "username=s" => \$username, "verbose" => \$verbose, "help" => \$help, "output=s" => \$output, ); if( $verbose ){ Log::Any::Adapter->set('Stderr' , log_level => 'trace' ); } if( $help ){ Pod::Usage::pod2usage( -input => __FILE__ , -verbose => 2, -message => 'Generating help' ); } unless( $sprint ){ $log->error("Missing --sprint options. Run jiraprint --help for more details"); exit(1); } my $j = App::JIRAPrint->new({ sprint => $sprint, ( $project ? ( project => $project ) : () ), ( $username ? ( username => $username ) : () ), ( $url ? ( url => $url ) : () ) }); # Force config loading eval{ $j->config(); }; if( my $err = $@ ){ $log->error("Error in arguments or configuration: ".$err); $log->error("Please run jiraprint --help"); exit(1); } unless( $output ){ binmode STDOUT, ':utf8'; print $j->process_template(); }else{ open OUTPUT , '>' , $output; binmode OUTPUT , ':utf8'; print OUTPUT $j->process_template(); close OUTPUT; $log->info("XeTeX file written to $output. Now run xelatex $output to generate your PDF."); } __END__ =head1 NAME jiraprint - Generate printable XeTeX code to print JIRA tickets on Postits =head1 INSTALLATION This is a standard Perl package. Install on system perl: sudo cpan -i App::JIRAPrint Or in your cpanminus favorite destination: cpanm App::JIRAPrint =head1 DEPENDENCY To process the generated LaTeX code into a usable PDF, you'll have to have a full TeXLive (or MacTeX) distribution on your machine. See L Or L =head1 SYNOPSIS jiraprint --project PROJ --sprint 52 --output proj-52.tex Then: xelatex proj-52.tex You can also pipe directly from this to xelatex if you're lazy: jiraprint --project PROJ --sprint 52 | xelatex This will create a pdf named 'texput.pdf' Note that the 'project' option is optional and can live in the configuration file. =head1 CONFIGURATION This script relies on configuration files and on command line options for its configuration. This will attempt to load three configuration files: C<$PWD/.jiraprint.conf> , C<$HOME/.jiraprint.conf> and C. Each configuration files in in Perl format and can contain the following keys: { url => 'https://yourjira.domain.net/', username => 'jirausername', password => 'jirapassword', project => 'PROJ', } url, username and password have to be defined in config files. project can be specified in a config file, but overriden by the command line switch C<--project> Note that each level (going from /etc/, to $HOME, to $PWD) will override the precedent level. This allows you to define properties (like project) at project, user or global level. A typical setup is to define your project specific stuff in your project directory, your personnal login details in your C<$HOME/.jiraprint.conf> and the organisation wide URL at machine level (in /etc/jiraprint.conf). =head1 OPTIONS =over =item --project (-p) PROJ The name of the jira project. Typically a 4 letter uppercase identifier. Like C for instance. Mandatory in the config file(s) or in the command line. =item --sprint (-s) 52 The number of the sprint to print tickets from. Mandatory in the command line. =item --url The root URL of your jira project. For instance: C. Mandatory in the config file(s) or on the command line. =item --username The username to connect as to pull the tickets. Mandatory in the config file(s) or on the command line. =back =head1 ABOUT Copyright Jerome Eteve 2015- jerome dot eteve at a well known email provider with a name that starts with 'g'. =for HTML =cut