Skip to content

Commit 09d6e39

Browse files
committed
Add -t/--interval CLI argument
The -t/--interval argument specifies the number of seconds to wait between two requests when displaying job console output in interactive mode.
1 parent 68b3d51 commit 09d6e39

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

jenkins_cli/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import argparse
44
from jenkins import JenkinsException
55

6-
from jenkins_cli.cli import JenkinsCli, CliException, get_jobs_legend
6+
from jenkins_cli.cli import JenkinsCli, CliException, get_jobs_legend, check_nonnegative
77
from jenkins_cli.version import version
88

99

@@ -53,6 +53,7 @@ def main():
5353
console_parser.add_argument('-b', '--build', help='job build number to show console for (if omitted, last build number is used)', default='')
5454
console_parser.add_argument('-n', help='show first n lines only(if n is negative, show last n lines)', type=int)
5555
console_parser.add_argument('-i', help='interactive console', default=False, action='store_true')
56+
console_parser.add_argument('-t', '--interval', help='refresh interval in seconds (in case of interactive console -i)', default=3, type=check_nonnegative)
5657

5758
console_parser = subparsers.add_parser('changes', help="Show build's changes")
5859
console_parser.add_argument('job_name', help='Job to show changes for')

jenkins_cli/cli.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import sys
44
import datetime
55
from time import time, sleep
6+
import argparse
67
import jenkins
78
import socket
89
from xml.etree import ElementTree
@@ -71,6 +72,22 @@ def xml_to_string(root):
7172
return ElementTree.tostring(root, encoding=('unicode' if sys.version_info[0] == 3 else None))
7273

7374

75+
def check_nonnegative(value):
76+
"""
77+
Checks if (possibly string) value is non-negative integer and returns it.
78+
79+
Raise:
80+
ArgumentTypeError: if value is not a non-negative integer
81+
"""
82+
try:
83+
ivalue = int(value)
84+
if ivalue < 0:
85+
raise ValueError()
86+
except:
87+
raise argparse.ArgumentTypeError("Value must be a non-negative integer: %s" % value)
88+
return ivalue
89+
90+
7491
class CliException(Exception):
7592
pass
7693

@@ -308,7 +325,7 @@ def console(self, args):
308325
if new_line_num > last_line_num:
309326
print("\n".join(console_out[last_line_num:]))
310327
last_line_num = new_line_num
311-
sleep(3)
328+
sleep(args.interval)
312329
build_info = self.jenkins.get_build_info(job_name, build_number)
313330

314331
def building(self, args):

0 commit comments

Comments
 (0)