Source code for nefelibata.console

# -*- coding: utf-8 -*-
"""
Nefelibata weblog engine.

Usage:
  nb init [ROOT_DIR] [--loglevel=INFO]
  nb new POST [ROOT_DIR] [--loglevel=INFO]
  nb build [ROOT_DIR] [-f] [-s POST_DIR] [--no-collect] [--loglevel=INFO]
  nb preview [-p PORT] [ROOT_DIR] [--loglevel=INFO]
  nb publish [ROOT_DIR] [-f] [-s POST_DIR] [--loglevel=INFO]

Actions:
  init              Create a new weblog skeleton.
  new               Create a new post.
  build             Build weblog from Markdown and social media interactions.
  preview           Run SimpleHTTPServer.
  publish           Publish weblog to configured locations and announce new posts.

Options:
  -h --help         Show this screen.
  --version         Show version.
  -p PORT           Port to run the web server for preview. [default: 8000]
  -f --force        Force build/publishing of up-to-date resources.
  -s POST_DIR       Build/publish a single post by specifying its directory
  --no-collect      Do not collect replies when building.
  --loglevel=LEVEL  Level for logging. [default: INFO]

Released under the MIT license.
(c) 2013-2020 Beto Dealmeida <roberto@dealmeida.net>

"""
import os
from pathlib import Path
from typing import Optional

from docopt import docopt
from nefelibata import __version__
from nefelibata.cli import build
from nefelibata.cli import init
from nefelibata.cli import new
from nefelibata.cli import preview
from nefelibata.cli import publish
from nefelibata.post import Post
from nefelibata.utils import find_directory
from nefelibata.utils import setup_logging

__author__ = "Beto Dealmeida"
__copyright__ = "Beto Dealmeida"
__license__ = "mit"


[docs]def main() -> None: """Main entry point allowing external calls """ arguments = docopt(__doc__, version=__version__) setup_logging(arguments["--loglevel"]) if arguments["ROOT_DIR"] is None: if arguments["init"]: root = Path(".") else: root = find_directory(Path(os.getcwd())) else: root = Path(arguments["ROOT_DIR"]) post: Optional[Post] if arguments["-s"] is None: post = None elif arguments["-s"].endswith("index.mkd"): post = Post(Path(arguments["-s"]).resolve()) else: post = Post(Path(arguments["-s"]).resolve() / "index.mkd") if arguments["init"]: init.run(root) elif arguments["new"]: new.run(root, arguments["POST"]) elif arguments["build"]: build.run(root, post, arguments["--force"], not arguments["--no-collect"]) elif arguments["preview"]: preview.run(root, int(arguments["-p"])) elif arguments["publish"]: publish.run(root, post, arguments["--force"])
if __name__ == "__main__": main()