Skip to content

Commit fdcc912

Browse files
committed
Add --quiet option; resolves #210
1 parent a39ea73 commit fdcc912

File tree

6 files changed

+31
-10
lines changed

6 files changed

+31
-10
lines changed

CHANGES.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
### New features
66
- When calling `set-default`, you can now pass `--allow-undefined` to set the
77
default to a version that doesn't exist yet
8+
- Add global-level `-q` / `--quiet` option to suppress warning messages
89

910
### Bug fixes
1011
- When loading an MkDocs config, mike now runs the `startup` and `shutdown`

mike/driver.py

+16-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import json
22
import os
33
import sys
4+
import warnings
45
from contextlib import contextmanager
56

67
from . import arguments
@@ -77,6 +78,10 @@
7778
"""
7879

7980

81+
def showwarning(message, category, filename, lineno, file=None, line=None):
82+
sys.stderr.write('warning: {}\n'.format(message))
83+
84+
8085
def add_git_arguments(parser, *, commit=True, deploy_prefix=True):
8186
# Add this whenever we add git arguments since we pull the remote and
8287
# branch from mkdocs.yml.
@@ -174,16 +179,16 @@ def check_remote_status(args, strict=False):
174179
raise ValueError(str(e) + "\n If you're sure this is intended, " +
175180
'retry with --ignore-remote-status')
176181
else:
177-
sys.stderr.write('warning: {}\n'.format(e))
182+
warnings.warn(str(e))
178183

179184

180185
@contextmanager
181186
def handle_empty_commit():
182187
try:
183188
yield
184189
except git_utils.GitEmptyCommit as e:
185-
sys.stderr.write(('warning: {}\n To create a commit anyway, retry ' +
186-
'with --allow-empty\n').format(e))
190+
warnings.warn(str(e) + '\n To create a commit anyway, retry with ' +
191+
'--allow-empty')
187192

188193

189194
def deploy(parser, args):
@@ -198,7 +203,7 @@ def deploy(parser, args):
198203
deploy_prefix=args.deploy_prefix,
199204
set_props=args.set_props or []), \
200205
mkdocs_utils.inject_plugin(args.config_file) as config_file:
201-
mkdocs_utils.build(config_file, args.version)
206+
mkdocs_utils.build(config_file, args.version, quiet=args.quiet)
202207
if args.push:
203208
git_utils.push_branch(args.remote, args.branch)
204209

@@ -327,12 +332,16 @@ def generate_completion(parser, args):
327332

328333

329334
def main():
335+
warnings.showwarning = showwarning
336+
330337
parser = arguments.ArgumentParser(prog='mike', description=description)
331338
subparsers = parser.add_subparsers(metavar='COMMAND')
332339
subparsers.required = True
333340

334341
parser.add_argument('--version', action='version',
335342
version='%(prog)s ' + app_version)
343+
parser.add_argument('-q', '--quiet', action='store_true',
344+
help='silence warnings')
336345
parser.add_argument('--debug', action='store_true',
337346
help='report extra information for debugging mike')
338347

@@ -460,6 +469,9 @@ def main():
460469
help='shell type (default: %(default)s)')
461470

462471
args = parser.parse_args()
472+
if args.quiet:
473+
warnings.filterwarnings('ignore')
474+
463475
try:
464476
return args.func(parser, args)
465477
except Exception as e:

mike/mkdocs_utils.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,15 @@ def inject_plugin(config_file):
7171
os.remove(f.name)
7272

7373

74-
def build(config_file, version, verbose=True):
74+
def build(config_file, version, *, quiet=False, output=None):
7575
command = (
76-
['mkdocs', 'build', '--clean'] +
76+
['mkdocs'] + (['--quiet'] if quiet else []) + ['build', '--clean'] +
7777
(['--config-file', config_file] if config_file else [])
7878
)
7979

8080
env = os.environ.copy()
8181
env[docs_version_var] = version
8282

83-
output = None if verbose else subprocess.DEVNULL
8483
subprocess.run(command, check=True, env=env, stdout=output, stderr=output)
8584

8685

test/integration/test_command_line.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class HelpTest(unittest.TestCase):
77
def test_help(self):
88
output = assertPopen(['mike', 'help'])
99
self.assertRegex(
10-
output, (r'^usage: mike \[-h\] \[--version\] \[--debug\] '
10+
output, (r'^usage: mike \[-h\] \[--version\] \[-q\] \[--debug\] '
1111
r'COMMAND \.\.\.')
1212
)
1313

test/integration/test_set_default.py

+8
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@ def test_no_changes(self):
118118
))
119119
self.assertEqual(git_utils.get_latest_commit('gh-pages'), rev)
120120

121+
def test_no_changes_quiet(self):
122+
self._deploy()
123+
assertPopen(['mike', 'set-default', '1.0'])
124+
rev = git_utils.get_latest_commit('gh-pages')
125+
assertOutput(self, ['mike', '--quiet', 'set-default', '1.0'],
126+
stdout='', stderr='')
127+
self.assertEqual(git_utils.get_latest_commit('gh-pages'), rev)
128+
121129
def test_remote_empty(self):
122130
stage_dir('set_default_clone')
123131
check_call_silent(['git', 'clone', self.stage, '.'])

test/unit/test_mkdocs_utils.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import subprocess
23
import unittest
34
import yaml
45
from io import StringIO
@@ -192,7 +193,7 @@ class TestBuild(unittest.TestCase):
192193
def test_build(self):
193194
self.stage = stage_dir('build')
194195
copytree(os.path.join(test_data_dir, 'basic_theme'), self.stage)
195-
mkdocs_utils.build('mkdocs.yml', '1.0', verbose=False)
196+
mkdocs_utils.build('mkdocs.yml', '1.0', output=subprocess.DEVNULL)
196197

197198
self.assertTrue(os.path.exists('site/index.html'))
198199

@@ -205,7 +206,7 @@ def test_build_directory(self):
205206
# responsible for).
206207
with pushd(this_dir):
207208
mkdocs_utils.build(os.path.join(self.stage, 'mkdocs.yml'),
208-
'1.0', verbose=False)
209+
'1.0', output=subprocess.DEVNULL)
209210

210211
self.assertTrue(os.path.exists('site/index.html'))
211212

0 commit comments

Comments
 (0)