forked from github.com/blag
improved quickstart:
* respective default answers will be written to config if user provided no answer * added tests for quickstart
This commit is contained in:
@@ -3,6 +3,10 @@
|
|||||||
## [unreleased] - XXXX-XX-XX
|
## [unreleased] - XXXX-XX-XX
|
||||||
|
|
||||||
* Added --version option
|
* Added --version option
|
||||||
|
* Improved quickstart:
|
||||||
|
* respective default answers will be written to config if user provided no
|
||||||
|
answer
|
||||||
|
* added tests for quickstart
|
||||||
|
|
||||||
## [1.3.1] - 2022-06-10
|
## [1.3.1] - 2022-06-10
|
||||||
|
|
||||||
|
|||||||
29
blag/blag.py
29
blag/blag.py
@@ -17,6 +17,7 @@ import feedgenerator
|
|||||||
from blag.markdown import markdown_factory, convert_markdown
|
from blag.markdown import markdown_factory, convert_markdown
|
||||||
from blag.devserver import serve
|
from blag.devserver import serve
|
||||||
from blag.version import __VERSION__
|
from blag.version import __VERSION__
|
||||||
|
from blag.quickstart import quickstart
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(
|
logging.basicConfig(
|
||||||
@@ -425,33 +426,5 @@ def generate_tags(articles, tags_template, tag_template, output_dir):
|
|||||||
fh.write(result)
|
fh.write(result)
|
||||||
|
|
||||||
|
|
||||||
def quickstart(args):
|
|
||||||
"""Quickstart.
|
|
||||||
|
|
||||||
This method asks the user some questions and generates a
|
|
||||||
configuration file that is needed in order to run blag.
|
|
||||||
|
|
||||||
Parameters
|
|
||||||
----------
|
|
||||||
args : argparse.Namespace
|
|
||||||
|
|
||||||
"""
|
|
||||||
base_url = input("Hostname (and path) to the root? "
|
|
||||||
"[https://example.com/]: ")
|
|
||||||
title = input("Title of your website? ")
|
|
||||||
description = input("Description of your website [John Doe's Blog]? ")
|
|
||||||
author = input("Author of your website [John Doe]? ")
|
|
||||||
|
|
||||||
config = configparser.ConfigParser()
|
|
||||||
config['main'] = {
|
|
||||||
'base_url': base_url,
|
|
||||||
'title': title,
|
|
||||||
'description': description,
|
|
||||||
'author': author,
|
|
||||||
}
|
|
||||||
with open('config.ini', 'w') as fh:
|
|
||||||
config.write(fh)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
|||||||
68
blag/quickstart.py
Normal file
68
blag/quickstart.py
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
"""Helper methods for blag's quickstart command.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
import configparser
|
||||||
|
|
||||||
|
|
||||||
|
def get_input(question, default):
|
||||||
|
"""Prompt for user input.
|
||||||
|
|
||||||
|
This is a wrapper around the input-builtin. It will show the default answer
|
||||||
|
in the prompt and -- if no answer was given -- use the default.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
question : str
|
||||||
|
the question the user is presented
|
||||||
|
default : str
|
||||||
|
the default value that will be used if no answer was given
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
str
|
||||||
|
|
||||||
|
"""
|
||||||
|
reply = input(f"{question} [{default}]: ")
|
||||||
|
if not reply:
|
||||||
|
reply = default
|
||||||
|
return reply
|
||||||
|
|
||||||
|
|
||||||
|
def quickstart(args):
|
||||||
|
"""Quickstart.
|
||||||
|
|
||||||
|
This method asks the user some questions and generates a
|
||||||
|
configuration file that is needed in order to run blag.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
args : argparse.Namespace
|
||||||
|
|
||||||
|
"""
|
||||||
|
base_url = get_input(
|
||||||
|
"Hostname (and path) to the root?",
|
||||||
|
"https://example.com/",
|
||||||
|
)
|
||||||
|
title = get_input(
|
||||||
|
"Title of your website?",
|
||||||
|
"My little blog",
|
||||||
|
)
|
||||||
|
description = get_input(
|
||||||
|
"Description of your website?",
|
||||||
|
"John Doe's Blog",
|
||||||
|
)
|
||||||
|
author = get_input(
|
||||||
|
"Author of your website",
|
||||||
|
"John Doe",
|
||||||
|
)
|
||||||
|
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config['main'] = {
|
||||||
|
'base_url': base_url,
|
||||||
|
'title': title,
|
||||||
|
'description': description,
|
||||||
|
'author': author,
|
||||||
|
}
|
||||||
|
with open('config.ini', 'w') as fh:
|
||||||
|
config.write(fh)
|
||||||
@@ -9,3 +9,4 @@ API
|
|||||||
blag.blag
|
blag.blag
|
||||||
blag.markdown
|
blag.markdown
|
||||||
blag.devserver
|
blag.devserver
|
||||||
|
blag.quickstart
|
||||||
|
|||||||
24
tests/test_quickstart.py
Normal file
24
tests/test_quickstart.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
from blag.quickstart import get_input, quickstart
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_input_default_answer(monkeypatch):
|
||||||
|
monkeypatch.setattr('builtins.input', lambda x: '')
|
||||||
|
answer = get_input("foo", "bar")
|
||||||
|
assert answer == 'bar'
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_input(monkeypatch):
|
||||||
|
monkeypatch.setattr('builtins.input', lambda x: 'baz')
|
||||||
|
answer = get_input("foo", "bar")
|
||||||
|
assert answer == 'baz'
|
||||||
|
|
||||||
|
|
||||||
|
def test_quickstart(cleandir, monkeypatch):
|
||||||
|
monkeypatch.setattr('builtins.input', lambda x: 'foo')
|
||||||
|
quickstart(None)
|
||||||
|
with open('config.ini', 'r') as fh:
|
||||||
|
data = fh.read()
|
||||||
|
assert 'base_url = foo' in data
|
||||||
|
assert 'title = foo' in data
|
||||||
|
assert 'description = foo' in data
|
||||||
|
assert 'author = foo' in data
|
||||||
Reference in New Issue
Block a user