예제 #1
0
def load_posts(path):
    g.source_directory = path
    readers = []
    for name in settings.reader.get('active'):
        try:
            readers.append(import_object(name))
        except ImportError:
            logging.error("Can't enable %s" % name)

    def detect_reader(filepath):
        for Reader in readers:
            reader = Reader(filepath)
            if reader.support():
                return reader.run()
        return None

    for filepath in walk_dir(path):
        if os.path.abspath(g.output_directory) in \
           os.path.abspath(filepath):
            continue
        post = detect_reader(filepath)
        if not post:
            g.pure_files.append(filepath)
        elif not post.date:
            g.pure_pages.append(post)
        elif post.public:
            g.public_posts.append(post)
        else:
            g.secure_posts.append(post)

    g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True)
    g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True)

    logging.info('Load Posts Finished')
예제 #2
0
 def run(self):
     for source in walk_dir(self.staticdir):
         path = source.replace(ns.storage.projectdir, '').lstrip('/')
         if sys.platform.startswith('win'):
             path = path.lstrip('\\')
         dest = os.path.join(self.deploydir, path)
         copy_to(source, dest)
예제 #3
0
파일: core.py 프로젝트: msabramo/liquidluck
 def start(self):
     static_path = os.path.join(g.theme_directory, 'static')
     l = len(static_path) + 1
     for f in walk_dir(static_path):
         path = f[l:]
         dest = os.path.join(g.static_directory, path)
         copy_to(f, dest)
예제 #4
0
def load_posts(path):
    g.source_directory = path
    readers = []
    for name in settings.readers:
        reader = settings.readers[name]
        if reader:
            readers.append(import_object(reader))

    def detect_reader(filepath):
        for Reader in readers:
            reader = Reader(filepath)
            if reader.support():
                return reader.run()
        return None

    for filepath in walk_dir(path):
        post = detect_reader(filepath)
        if not post:
            g.pure_files.append(filepath)
        elif not post.date:
            g.pure_pages.append(post)
        elif post.public:
            g.public_posts.append(post)
        else:
            g.secure_posts.append(post)

    g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True)
    g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True)

    logging.info('Load Posts Finished')
예제 #5
0
def load_posts(path):
    g.source_directory = path
    readers = []
    for name in settings.reader.get('active'):
        readers.append(import_object(name))

    def detect_reader(filepath):
        for Reader in readers:
            reader = Reader(filepath)
            if reader.support():
                return reader.run()
        return None

    for filepath in walk_dir(path):
        post = detect_reader(filepath)
        if not post:
            g.pure_files.append(filepath)
        elif not post.date:
            g.pure_pages.append(post)
        elif post.public:
            g.public_posts.append(post)
        else:
            g.secure_posts.append(post)

    g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True)
    g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True)

    logging.info('Load Posts Finished')
예제 #6
0
 def start(self):
     static_path = os.path.join(g.theme_directory, 'static')
     l = len(static_path) + 1
     for f in walk_dir(static_path):
         path = f[l:]
         logging.debug('copy %s' % path)
         dest = os.path.join(g.static_directory, path)
         copy_to(f, dest)
예제 #7
0
파일: cli.py 프로젝트: ibigbug/liquidluck
def init_post():
    ns.storage.projectdir = os.getcwd()
    postdir = os.path.join(ns.storage.projectdir, ns.site.postdir)
    for f in walk_dir(postdir):
        reader = detect_reader(f)
        if reader:
            post = reader.render()
            if post:
                # ignore invalid post
                ns.storage.posts.append(post)
        else:
            ns.storage.files.append(f)

    return ns
예제 #8
0
파일: cli.py 프로젝트: ibigbug/liquidluck
def init_post():
    ns.storage.projectdir = os.getcwd()
    postdir = os.path.join(ns.storage.projectdir,
                           ns.site.postdir)
    for f in walk_dir(postdir):
        reader = detect_reader(f)
        if reader:
            post = reader.render()
            if post:
                # ignore invalid post
                ns.storage.posts.append(post)
        else:
            ns.storage.files.append(f)

    return ns
예제 #9
0
파일: cli.py 프로젝트: kebot/liquidluck
def init_post():
    ns.storage.projectdir = os.getcwd()
    postdir = os.path.join(ns.storage.projectdir,
                           ns.site.postdir)
    for f in walk_dir(postdir):
        reader = detect_reader(f)
        if reader:
            post = reader.render()
            if post:
                # ignore invalid post
                ns.storage.posts.append(post)
        else:
            ns.storage.files.append(f)

    ns.storage.posts = sorted(
        ns.storage.posts, key=lambda o: o.date, reverse=True)
    ns.storage.public_posts = filter(
        lambda post: post.public, ns.storage.posts)
    return ns
예제 #10
0
def init_post():
    ns.storage.projectdir = os.getcwd()
    postdir = os.path.join(ns.storage.projectdir, ns.site.postdir)
    for f in walk_dir(postdir):
        reader = detect_reader(f)
        if reader:
            post = reader.render()
            if post:
                # ignore invalid post
                ns.storage.posts.append(post)
        else:
            ns.storage.files.append(f)

    ns.storage.posts = sorted(ns.storage.posts,
                              key=lambda o: o.date,
                              reverse=True)
    ns.storage.public_posts = filter(lambda post: post.public,
                                     ns.storage.posts)
    return ns
예제 #11
0
def load_posts(path):
    g.source_directory = path
    readers = []
    for name in settings.reader.get('active'):
        try:
            readers.append(import_object(name))
        except ImportError as e:
            logging.error("Can't enable %s" % name)
            if g.interrupt:
                raise e

    def detect_reader(filepath):
        for Reader in readers:
            reader = Reader(filepath)
            if reader.support():
                return reader.run()
        return None

    output = os.path.abspath(g.output_directory)
    source = os.path.abspath(g.source_directory)
    if output == source:
        logging.warn('Output and source are the same directory')

    for filepath in walk_dir(path):
        if source in output and source != output and \
           output in os.path.abspath(filepath):
            continue
        post = detect_reader(filepath)
        if not post:
            g.pure_files.append(filepath)
        elif not post.date:
            g.pure_pages.append(post)
        elif post.public:
            g.public_posts.append(post)
        else:
            g.secure_posts.append(post)

    g.public_posts = sorted(g.public_posts, key=lambda o: o.date, reverse=True)
    g.secure_posts = sorted(g.secure_posts, key=lambda o: o.date, reverse=True)

    logging.info('Load Posts Finished')
예제 #12
0
    def _is_changed(self, path):
        def is_file_changed(path):
            if not os.path.isfile(path):
                return False

            _, ext = os.path.splitext(path)
            theme = settings.theme.get('vars') or {}

            if g.output_directory == g.source_directory:
                matches = theme.get('reload_match') or []
                matches.extend(['.md', '.mkd', '.markdown', '.rst'])
                if ext not in matches:
                    return False
            elif os.path.abspath(g.output_directory) in \
                    os.path.abspath(path):
                return False

            modified = int(os.stat(path).st_mtime)

            if path not in self._modified_times:
                self._modified_times[path] = modified
                return False

            if path in self._modified_times and \
               self._modified_times[path] == modified:
                return False

            self._modified_times[path] = modified
            logging.info('file changed: %s' % path)
            return True

        for f in walk_dir(path):
            if is_file_changed(f):
                return True

        return False
예제 #13
0
 def run(self):
     for source in walk_dir(self.staticdir):
         path = source.replace(ns.storage.projectdir, '').lstrip('/')
         dest = os.path.join(self.deploydir, path)
         copy_to(source, dest)
예제 #14
0
 def run(self):
     for source in walk_dir(self.staticdir):
         path = source.replace(ns.storage.projectdir, '').lstrip('/')
         dest = os.path.join(self.deploydir, path)
         copy_to(source, dest)