summaryrefslogtreecommitdiffstats
path: root/nikola/plugins/command_init.py
diff options
context:
space:
mode:
Diffstat (limited to 'nikola/plugins/command_init.py')
-rw-r--r--nikola/plugins/command_init.py64
1 files changed, 48 insertions, 16 deletions
diff --git a/nikola/plugins/command_init.py b/nikola/plugins/command_init.py
index 0b56482..e9bd001 100644
--- a/nikola/plugins/command_init.py
+++ b/nikola/plugins/command_init.py
@@ -23,7 +23,7 @@
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import print_function
-from optparse import OptionParser
+from optparse import OptionParser, OptionGroup
import os
import shutil
import codecs
@@ -61,14 +61,50 @@ The destination folder must not exist.
'POST_COMPILERS': """{
"rest": ('.txt', '.rst'),
"markdown": ('.md', '.mdown', '.markdown'),
+ "textile": ('.textile',),
+ "txt2tags": ('.t2t',),
+ "bbcode": ('.bb',),
+ "wiki": ('.wiki',),
+ "ipynb": ('.ipynb',),
"html": ('.html', '.htm')
}""",
'REDIRECTIONS': '[]',
- }
+ }
+
+ @classmethod
+ def copy_sample_site(cls, target):
+ lib_path = cls.get_path_to_nikola_modules()
+ src = os.path.join(lib_path, 'data', 'samplesite')
+ shutil.copytree(src, target)
+
+ @classmethod
+ def create_configuration(cls, target):
+ lib_path = cls.get_path_to_nikola_modules()
+ template_path = os.path.join(lib_path, 'conf.py.in')
+ conf_template = Template(filename=template_path)
+ conf_path = os.path.join(target, 'conf.py')
+ with codecs.open(conf_path, 'w+', 'utf8') as fd:
+ fd.write(conf_template.render(**cls.SAMPLE_CONF))
+
+ @classmethod
+ def create_empty_site(cls, target):
+ for folder in ('files', 'galleries', 'listings', 'posts', 'stories'):
+ os.makedirs(os.path.join(target, folder))
+
+ @staticmethod
+ def get_path_to_nikola_modules():
+ return os.path.dirname(nikola.__file__)
def run(self, *args):
"""Create a new site."""
parser = OptionParser(usage=self.usage)
+ group = OptionGroup(parser, "Site Options")
+ group.add_option(
+ "--empty", action="store_true", dest='empty', default=True,
+ help="Create an empty site with only a config.")
+ group.add_option("--demo", action="store_false", dest='empty',
+ help="Create a site filled with example data.")
+ parser.add_option_group(group)
(options, args) = parser.parse_args(list(args))
if not args:
@@ -78,17 +114,13 @@ The destination folder must not exist.
if target is None:
print(self.usage)
else:
- # copy sample data
- lib_path = os.path.dirname(nikola.__file__)
- src = os.path.join(lib_path, 'data', 'samplesite')
- shutil.copytree(src, target)
- # create conf.py
- template_path = os.path.join(lib_path, 'conf.py.in')
- conf_template = Template(filename=template_path)
- conf_path = os.path.join(target, 'conf.py')
- with codecs.open(conf_path, 'w+', 'utf8') as fd:
- fd.write(conf_template.render(**self.SAMPLE_CONF))
-
- print("A new site with some sample data has been created at %s."
- % target)
- print("See README.txt in that folder for more information.")
+ if options.empty:
+ self.create_empty_site(target)
+ print('Created empty site at %s.' % target)
+ else:
+ self.copy_sample_site(target)
+ print("A new site with example data has been created at %s."
+ % target)
+ print("See README.txt in that folder for more information.")
+
+ self.create_configuration(target)