mirror of
https://github.com/venthur/blag.git
synced 2025-11-25 20:52:43 +00:00
102 lines
2.3 KiB
Python
102 lines
2.3 KiB
Python
"""Helper methods for blag's quickstart command.
|
|
|
|
"""
|
|
|
|
# remove when we don't support py38 anymore
|
|
from __future__ import annotations
|
|
import configparser
|
|
import argparse
|
|
import shutil
|
|
import os
|
|
|
|
import blag
|
|
|
|
|
|
def get_input(question: str, default: str) -> str:
|
|
"""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
|
|
the question the user is presented
|
|
default
|
|
the default value that will be used if no answer was given
|
|
|
|
Returns
|
|
-------
|
|
str
|
|
the answer
|
|
|
|
"""
|
|
reply = input(f"{question} [{default}]: ")
|
|
if not reply:
|
|
reply = default
|
|
return reply
|
|
|
|
|
|
def copy_default_theme() -> None:
|
|
"""Copy default theme into current directory.
|
|
|
|
The default theme contains the 'templates', 'content' and 'static'
|
|
directories shipped with blag.
|
|
|
|
It will not overwrite existing files.
|
|
|
|
"""
|
|
print("Copying default theme...")
|
|
for dir_ in 'templates', 'content', 'static':
|
|
print(f" Copying {dir_}...")
|
|
try:
|
|
shutil.copytree(
|
|
os.path.join(blag.__path__[0], dir_),
|
|
dir_,
|
|
)
|
|
except FileExistsError:
|
|
print(f" {dir_} already exist. Skipping.")
|
|
|
|
|
|
def quickstart(args: argparse.Namespace | None) -> None:
|
|
"""Quickstart.
|
|
|
|
This method asks the user some questions and generates a configuration file
|
|
that is needed in order to run blag. Additionally, it creates the content
|
|
and static directories with some initial content, to get the user started.
|
|
|
|
Parameters
|
|
----------
|
|
args
|
|
not used
|
|
|
|
"""
|
|
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)
|
|
|
|
copy_default_theme()
|