Skip to content

Commit 6c113e5

Browse files
committed
feat(deploy): added a --set-default flag to set the deployed version the new default
1 parent 9f56762 commit 6c113e5

File tree

5 files changed

+38
-3
lines changed

5 files changed

+38
-3
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ the setting of `alias_type`/`--alias-type`.)
225225
Like `deploy` and `delete` above, you can specify `--branch`, `--push`,
226226
etc to control how the commit is handled.
227227

228+
As with `deploy`, you can pass `-d`/`--set-default` to set the published version
229+
as the new default.
230+
228231
### Changing a Version's Title
229232

230233
As you update your docs, you may want to change the title of a particular

mike/commands.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ def make_nojekyll():
6262
@contextmanager
6363
def deploy(cfg, version, title=None, aliases=[], update_aliases=False,
6464
alias_type=AliasType.symlink, template=None, *, branch='gh-pages',
65-
message=None, allow_empty=False, deploy_prefix='', set_props=[]):
65+
message=None, allow_empty=False, deploy_prefix='', set_props=[],
66+
set_default=False):
6667
if message is None:
6768
message = (
6869
'Deployed {rev} to {doc_version}{deploy_prefix} with MkDocs ' +
@@ -118,6 +119,13 @@ def deploy(cfg, version, title=None, aliases=[], update_aliases=False,
118119
commit.add_file(versions_to_file_info(all_versions, deploy_prefix))
119120
commit.add_file(make_nojekyll())
120121

122+
if set_default:
123+
t = _redirect_template(template)
124+
commit.add_file(git_utils.FileInfo(
125+
os.path.join(deploy_prefix, 'index.html'),
126+
t.render(href=version_str + '/')
127+
))
128+
121129

122130
def delete(identifiers=None, all=False, *, branch='gh-pages', message=None,
123131
allow_empty=False, deploy_prefix=''):

mike/driver.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,8 @@ def deploy(parser, args):
196196
branch=args.branch, message=args.message,
197197
allow_empty=args.allow_empty,
198198
deploy_prefix=args.deploy_prefix,
199-
set_props=args.set_props or []), \
199+
set_props=args.set_props or [],
200+
set_default=args.set_default), \
200201
mkdocs_utils.inject_plugin(args.config_file) as config_file:
201202
mkdocs_utils.build(config_file, args.version)
202203
if args.push:
@@ -350,6 +351,8 @@ def main():
350351
'%(choices)s; default: symlink)'))
351352
deploy_p.add_argument('-T', '--template', complete='file',
352353
help='template file to use for redirects')
354+
deploy_p.add_argument('-d', '--set-default', action='store_true',
355+
help='set the deployed version as the new default')
353356
add_git_arguments(deploy_p)
354357
add_set_prop_arguments(deploy_p, prefix='prop-')
355358
deploy_p.add_argument('version', metavar='VERSION',

test/integration/test_deploy.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,15 @@ def test_update_aliases_with_version(self):
141141
versions.VersionInfo('1.0b1'),
142142
])
143143

144+
def test_set_default(self):
145+
assertPopen(['mike', 'deploy', '1.0', '--set-default'])
146+
check_call_silent(['git', 'checkout', 'gh-pages'])
147+
self._test_deploy(expected_versions=[
148+
versions.VersionInfo('1.0'),
149+
])
150+
with open('index.html') as f:
151+
self.assertRegex(f.read(), match_redir('1.0/'))
152+
144153
def test_from_subdir(self):
145154
os.mkdir('sub')
146155
with pushd('sub'):

test/unit/test_commands.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,14 @@ def setUp(self):
4949
commit_files(['page.html', 'file.txt', 'dir/index.html'])
5050

5151
def _test_state(self, expected_message, expected_versions,
52-
alias_type=AliasType.symlink, directory='.'):
52+
alias_type=AliasType.symlink, directory='.',
53+
expected_files=None):
5354
message = check_output(['git', 'log', '-1', '--pretty=%B']).rstrip()
5455
self.assertRegex(message, expected_message)
5556

5657
files = {'versions.json'}
58+
if expected_files:
59+
files.update(expected_files)
5760
for v in expected_versions:
5861
vstr = str(v.version)
5962
files |= {vstr, vstr + '/page.html', vstr + '/file.txt',
@@ -281,6 +284,15 @@ def test_update_aliases(self):
281284
versions.VersionInfo('1.0', '1.0', []),
282285
])
283286

287+
def test_set_default(self):
288+
with commands.deploy(self.cfg, '1.0', set_default=True):
289+
self._mock_build()
290+
check_call_silent(['git', 'checkout', 'gh-pages'])
291+
self._test_deploy(expected_files=["index.html"])
292+
293+
with open('index.html') as f:
294+
self.assertRegex(f.read(), match_redir("1.0/"))
295+
284296

285297
class TestDelete(TestBase):
286298
stage_dir = 'delete'

0 commit comments

Comments
 (0)