#!/usr/bin/python3
"""
In Pelican, compile a single source file (given as the command line
argument).

Distributed under CC-0.
"""
import functools
import sys

import pelican
from pelican import contents, generators, readers, writers

try:
	from pelican.plugins._util import load_plugins
except ImportError:
	def load_plugins(settings):
		_sys_path = sys.path[:]
		for pluginpath in settings['PLUGIN_PATHS']:
			sys.path.insert(0, pluginpath)
			for plugin in settings['PLUGINS']:
				yield __import__(plugin, globals(), locals(), 'module')
		sys.path = _sys_path


def register_plugins(settings):
	for plugin in load_plugins(settings):
		plugin.register()


def main(source_path):
	settings = pelican.read_settings("pelicanconf.py")
	register_plugins(settings)
	writer = writers.Writer(settings["OUTPUT_PATH"], settings)
	reader = readers.RstReader(settings)

	artgen = generators.ArticlesGenerator(
		settings.copy(), settings,
		settings["PATH"], settings["THEME"], settings["OUTPUT_PATH"])
	artgen.translations = []

	content, metadata = reader.read(source_path)
	art = contents.Article(content, metadata, 
		source_path=source_path, settings=settings)
	artgen.articles = [art]

	artgen.generate_articles(
		functools.partial(writer.write_file, relative_urls=True))


if __name__=="__main__":
	main(sys.argv[1])
