aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/plugins/command_bootswatch_theme.py
blob: f077eb124e35815e046f7b1dff7cf9495e2f8724 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from optparse import OptionParser
import os
import urllib2

from nikola.plugin_categories import Command


class CommandBootswatchTheme(Command):
    """Given a swatch name and a parent theme, creates a custom theme."""

    name = "bootswatch_theme"

    def run(self, *args):
        """Given a swatch name and a parent theme, creates a custom theme."""

        parser = OptionParser(usage="nikola %s [options]" % self.name)
        parser.add_option("-n", "--name", dest="name",
            help="New theme name (default: custom)", default='custom')
        parser.add_option("-s", "--swatch", dest="swatch",
            help="Name of the swatch from bootswatch.com (default: slate)",
            default='slate')
        parser.add_option("-p", "--parent", dest="parent",
            help="Parent theme name (default: site)", default='site')
        (options, args) = parser.parse_args(list(args))

        name = options.name
        swatch = options.swatch
        parent = options.parent

        print "Creating '%s' theme from '%s' and '%s'" % (
            name, swatch, parent)
        try:
            os.makedirs(os.path.join('themes', name, 'assets', 'css'))
        except:
            pass
        for fname in ('bootstrap.min.css', 'bootstrap.css'):
            url = 'http://bootswatch.com/%s/%s' % (swatch, fname)
            print "Downloading: ", url
            data = urllib2.urlopen(url).read()
            with open(os.path.join(
                'themes', name, 'assets', 'css', fname), 'wb+') as output:
                output.write(data)

        with open(os.path.join('themes', name, 'parent'), 'wb+') as output:
            output.write(parent)
        print 'Theme created. Change the THEME setting to "%s" to use it.'\
            % name