Skip to content

Commit 2e4ce17

Browse files
committed
Command line support read from multi files by using -i/-p param.
1 parent a0bec7c commit 2e4ce17

3 files changed

Lines changed: 29 additions & 28 deletions

File tree

README.rst

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -195,19 +195,18 @@ Command line
195195
.. code:: console
196196
197197
$ pattern-make -h
198-
usage: pattern-make [-h] [-v] [-i INPUT [INPUT ...]]
199-
[-l {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}]
200-
[-c CONFIG [CONFIG ...]]
198+
usage: pattern-make [-h] [-v] [-i INPUTS [INPUTS ...]]
199+
[-l {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}] [-c CONFIG]
201200
[-f {PATTERN,CLUSTER,JSON,ETE,INLINE,NULL}]
202201
203202
optional arguments:
204203
-h, --help show this help message and exit
205204
-v, --version show program's version number and exit
206-
-i INPUT [INPUT ...], --input INPUT [INPUT ...]
207-
input file to be processed (default: stdin)
205+
-i INPUTS [INPUTS ...], --inputs INPUTS [INPUTS ...]
206+
input files to be processed (default: stdin)
208207
-l {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}, --loglevel {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}
209208
log level (default: NOTSET)
210-
-c CONFIG [CONFIG ...], --config CONFIG [CONFIG ...]
209+
-c CONFIG, --config CONFIG
211210
config file
212211
-f {PATTERN,CLUSTER,JSON,ETE,INLINE,NULL}, --formatter {PATTERN,CLUSTER,JSON,ETE,INLINE,NULL}
213212
output formatter (default: CLUSTER)
@@ -237,19 +236,19 @@ Command line
237236
.. code:: console
238237
239238
$ pattern-match -h
240-
usage: pattern-match [-h] [-v] [-i INPUT [INPUT ...]]
241-
[-l {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}] -p PATTERN_FILE
242-
[PATTERN_FILE ...] [-a]
239+
usage: pattern-match [-h] [-v] [-i INPUTS [INPUTS ...]]
240+
[-l {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}] -p
241+
PATTERN_FILES [PATTERN_FILES ...] [-a]
243242
244243
optional arguments:
245244
-h, --help show this help message and exit
246245
-v, --version show program's version number and exit
247-
-i INPUT [INPUT ...], --input INPUT [INPUT ...]
248-
input file to be processed (default: stdin)
246+
-i INPUTS [INPUTS ...], --inputs INPUTS [INPUTS ...]
247+
input files to be processed (default: stdin)
249248
-l {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}, --loglevel {NOTSET,DEBUG,INFO,WARN,ERROR,FATAL}
250249
log level (default: NOTSET)
251-
-p PATTERN_FILE [PATTERN_FILE ...], --pattern-file PATTERN_FILE [PATTERN_FILE ...]
252-
pattern file to be loaded
250+
-p PATTERN_FILES [PATTERN_FILES ...], --pattern-files PATTERN_FILES [PATTERN_FILES ...]
251+
pattern files to be loaded
253252
-a, --all_matched all matched patterns
254253
255254

src/os_urlpattern/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.1.10
1+
0.1.10.1

src/os_urlpattern/cmdline.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import sys
1515
import time
1616
from collections import Counter
17+
from itertools import chain
1718

1819
from . import __version__
1920
from .compat import binary_stdin, binary_stdout
@@ -62,12 +63,12 @@ def add_argument(self, parser):
6263
version=__version__)
6364
)
6465

65-
parser.add_argument('-i', '--input',
66-
help='input file to be processed (default: stdin)',
66+
parser.add_argument('-i', '--inputs',
67+
help='input files to be processed (default: stdin)',
6768
nargs='+',
6869
type=argparse.FileType('rb'),
6970
default=[binary_stdin],
70-
dest='input')
71+
dest='inputs')
7172

7273
parser.add_argument('-l', '--loglevel',
7374
help='log level (default: NOTSET)',
@@ -96,9 +97,8 @@ def add_argument(self, parser):
9697
super(MakePatternCommand, self).add_argument(parser)
9798
parser.add_argument('-c', '--config',
9899
help='config file',
99-
nargs='+',
100+
nargs=1,
100101
type=argparse.FileType('r'),
101-
action='store',
102102
dest='config')
103103

104104
parser.add_argument('-f', '--formatter',
@@ -114,7 +114,7 @@ def _load(self, pattern_maker, args):
114114
stats = Counter()
115115
with LogSpeedAdapter(self._logger, 5000) as speed_logger:
116116
load = pattern_maker.load
117-
for line in args.input[0]:
117+
for line in chain.from_iterable(args.inputs):
118118
speed_logger.debug('[LOADING]')
119119
stats['ALL'] += 1
120120
line = line.strip()
@@ -164,13 +164,12 @@ def __init__(self):
164164

165165
def add_argument(self, parser):
166166
super(MatchPatternCommand, self).add_argument(parser)
167-
parser.add_argument('-p', '--pattern-file',
168-
help='pattern file to be loaded',
167+
parser.add_argument('-p', '--pattern-files',
168+
help='pattern files to be loaded',
169169
nargs='+',
170170
type=argparse.FileType('rb'),
171171
required=True,
172-
action='store',
173-
dest='pattern_file')
172+
dest='pattern_files')
174173

175174
parser.add_argument('-a', '--all_matched',
176175
help='all matched patterns',
@@ -180,11 +179,14 @@ def add_argument(self, parser):
180179

181180
def _load(self, pattern_matcher, args):
182181
stats = Counter()
183-
io_input = args.pattern_file[0]
184-
self._logger.debug('[LOAD] Pattrn file: %s', io_input.name)
182+
p_inputs = args.pattern_files
183+
self._logger.debug('[LOAD] %d pattern file%s: %s',
184+
len(p_inputs),
185+
's' if len(p_inputs) > 1 else '',
186+
', '.join([p.name for p in p_inputs]))
185187
with LogSpeedAdapter(self._logger, 1000) as speed_logger:
186188
load = pattern_matcher.load
187-
for line in io_input:
189+
for line in chain.from_iterable(p_inputs):
188190
speed_logger.debug('[LOADING]')
189191
stats['ALL'] += 1
190192
line = line.rstrip()
@@ -225,7 +227,7 @@ def _match_result(self, pattern_matcher, raw_url, args):
225227
def _match(self, pattern_matcher, args):
226228
speed_logger = LogSpeedAdapter(self._logger, 5000)
227229
write = binary_stdout.write
228-
for line in args.input[0]:
230+
for line in chain.from_iterable(args.inputs):
229231
speed_logger.debug('[MATCHING]')
230232
line = line.strip()
231233
result = self._match_result(pattern_matcher, line, args)

0 commit comments

Comments
 (0)