Added -R option for PIT CLI.
This commit is contained in:
		@@ -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
 | 
				
			||||||
 | 
					========= ===================
 | 
				
			||||||
@@ -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"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 }}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user