Added -R option for PIT CLI.

This commit is contained in:
Jonathan Bernard 2011-12-19 16:08:09 -06:00
parent c01eaa0255
commit 0441f3c510
6 changed files with 38 additions and 17 deletions

View File

@ -4,8 +4,10 @@ FileIssue is not formatting output in the same way it parses input.
`FileIssue.formatIssue(Issue)` introduces at least one extra line to the end `FileIssue.formatIssue(Issue)` introduces at least one extra line to the end
of the issue body compared to what is parsed in using the PegParser. of the issue body compared to what is parsed in using the PegParser.
---- ----
======== =================== ========= ===================
Created: 2011-12-18T22:53:45 Created : 2011-12-18T22:53:45
======== =================== Resolved: 2011-12-19T16:09:50
========= ===================

View File

@ -11,6 +11,10 @@
<echo message="GROOVY_HOME: ${env.GROOVY_HOME}"/> <echo message="GROOVY_HOME: ${env.GROOVY_HOME}"/>
</target> </target>
<target name="clean-all" depends="clean">
<delete dir="${release.dir}"/>
</target>
<target name="release" depends="build"> <target name="release" depends="build">
<mkdir dir="${release.dir}/lib"/> <mkdir dir="${release.dir}/lib"/>
<copy file="${build.dir}/${name}-${version}.${build.number}.jar" <copy file="${build.dir}/${name}-${version}.${build.number}.jar"

View File

@ -1,11 +1,11 @@
#Sun, 11 Dec 2011 21:03:38 -0600 #Mon, 19 Dec 2011 16:07:10 -0600
#Sat Apr 24 17:08:00 CDT 2010 #Sat Apr 24 17:08:00 CDT 2010
build.dir=build build.dir=build
src.dir=src src.dir=src
lib.shared.dir=../shared-libs lib.shared.dir=../shared-libs
test.dir=test test.dir=test
build.number=3 build.number=3
version=3.2.3 version=3.3.0
name=libpit name=libpit
lib.dir=lib lib.dir=lib
lib.local=true lib.local=true

View File

@ -20,6 +20,10 @@
</fail> </fail>
</target> </target>
<target name="clean-all">
<delete dir="${release.dir}"/>
</target>
<target name="lib"> <target name="lib">
<copy todir="${build.dir}/lib/compile/jar" <copy todir="${build.dir}/lib/compile/jar"
file="${basedir}/../libpit/release/libpit-${version}.jar"/> file="${basedir}/../libpit/release/libpit-${version}.jar"/>

View File

@ -1,9 +1,9 @@
#Sun, 11 Dec 2011 21:04:03 -0600 #Mon, 19 Dec 2011 16:07:16 -0600
build.dir=build build.dir=build
src.dir=src src.dir=src
build.jar=pit-cli-${application.version}.${build.number}.jar build.jar=pit-cli-${application.version}.${build.number}.jar
build.number=2 build.number=3
version=3.2.3 version=3.3.0
name=pit-cli name=pit-cli
lib.dir=lib lib.dir=lib
lib.local=true lib.local=true

View File

@ -13,8 +13,7 @@ import static java.lang.Math.min
def cli = new CliBuilder(usage: 'pit-cli [options]') def cli = new CliBuilder(usage: 'pit-cli [options]')
cli.h(longOpt: 'help', 'Show help information.') cli.h(longOpt: 'help', 'Show help information.')
cli.v(longOpt: 'verbose', 'Show verbose task information') cli.v(longOpt: 'verbose', 'Show verbose task information')
cli.l(longOpt: 'list', 'List issues. Unless otherwise specified it lists all ' cli.l(longOpt: 'list', 'List issues in the current project.')
+ 'sub projects and all unclosed issue categories.')
cli.i(argName: 'id', longOpt: 'id', args: 1, cli.i(argName: 'id', longOpt: 'id', args: 1,
'Filter issues by id. Accepts a comma-delimited list.') 'Filter issues by id. Accepts a comma-delimited list.')
cli.c(argName: 'category', longOpt: 'category', args: 1, cli.c(argName: 'category', longOpt: 'category', args: 1,
@ -29,6 +28,7 @@ cli.p(argName: 'priority', longOpt: 'priority', args: 1,
cli.r(argName: 'project', longOpt: 'project', args: 1, cli.r(argName: 'project', longOpt: 'project', args: 1,
'Filter issues by project (relative to the current directory). Accepts a ' 'Filter issues by project (relative to the current directory). Accepts a '
+ 'comma-delimited list.') + 'comma-delimited list.')
cli.R(longOpt: 'recursive', 'Include subprojects.')
cli.e(argName: 'extended-property', args: 1, 'Filter for issues by extended ' + cli.e(argName: 'extended-property', args: 1, 'Filter for issues by extended ' +
'property. Format is "-e <propname>=<propvalue>".') 'property. Format is "-e <propname>=<propvalue>".')
/*cli.s(longOpt: 'show-subprojects', /*cli.s(longOpt: 'show-subprojects',
@ -83,7 +83,7 @@ cli._(longOpt: 'version', 'Display PIT version information.')
// ======== Parse CLI Options ======== // // ======== Parse CLI Options ======== //
// =================================== // // =================================== //
def VERSION = "3.2.3" def VERSION = "3.3.0"
def opts = cli.parse(args) def opts = cli.parse(args)
def issuedb = [:] def issuedb = [:]
def workingDir = new File('.') def workingDir = new File('.')
@ -260,8 +260,10 @@ if (opts.l) {
// print all the issues in the root of this db // print all the issues in the root of this db
issuedb.eachIssue(filter) { printIssue(it, "") } issuedb.eachIssue(filter) { printIssue(it, "") }
// print all projects
issuedb.eachProject(filter) { printProject(it, "") } } if (opts.R) {
// print all projects
issuedb.eachProject(filter) { printProject(it, "") }} }
// daily list second // daily list second
else if (opts.D) { else if (opts.D) {
@ -294,7 +296,11 @@ else if (opts.D) {
if (!opts.o) { filter.issueSorter = [ {it.due}, {it.priority}, {it.id} ] } if (!opts.o) { filter.issueSorter = [ {it.due}, {it.priority}, {it.id} ] }
// Get our issues // Get our issues
def allIssues = issuedb.getAllIssues(filter) def allIssues = opts.R ?
// If -R passed, get all issues, including subprojects.
issuedb.getAllIssues(filter) :
// Otherwise, just use the issues for this project.
issuedb.issues.values().findAll { filter ? filter.accept(it) : true }
// Set up our time interval. // Set up our time interval.
def today = new DateMidnight() def today = new DateMidnight()
@ -430,11 +436,16 @@ else if (assignOpts.size() > 0) {
case Status.REJECTED: assignOpts.rejected = new DateTime(); break case Status.REJECTED: assignOpts.rejected = new DateTime(); break
default: break }} default: break }}
issuedb.walkProject(filter) { issue -> def processIssue = { issue ->
println issue println issue
assignOpts.each { propName, value -> assignOpts.each { propName, value ->
issue[propName] = value issue[propName] = value
def formattedValue = ExtendedPropertyHelp.format(value) def formattedValue = ExtendedPropertyHelp.format(value)
println " set ${propName} to ${formattedValue}" } }} println " set ${propName} to ${formattedValue}" } }
if (opts.R) { issuedb.walkProject(filter, processIssue) }
else {
issuedb.issues.values()
.findAll { filter ? filter.accept(it) : true }
.each(processIssue) }}
else { cli.usage(); return -1 }} else { cli.usage(); return -1 }}