You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.0 KiB

import os
import sys
from os.path import dirname, abspath, basename, splitext, join as pathjoin
import pygit2
from bottle import route, run, static_file, redirect
HERE = dirname(abspath(__file__))
ROOT = dirname(HERE)
STATIC = pathjoin(HERE, 'static')
REPOS = {}
def populate_repos(repos_root):
for dirpath, dirnames, filenames in os.walk(repos_root):
def add_entry():
REPOS[splitext(basename(dirpath))[0]] = \
pygit2.Repository(pathjoin(dirpath, dirname))
if dirpath == '.git':
add_entry()
dirnames[:] = []
for dirname in dirnames[:]:
if dirname == '.git':
add_entry()
populate_repos(sys.argv[1] if sys.argv[1:] else ROOT)
@route('/')
def root_index():
return {}
@route('/repos')
def repos():
return dict((
(key, value.workdir) for key, value in REPOS.copy().items()
))
@route('/repos/<name>')
def repo(name):
return {'path': REPOS.get(name, '???').workdir}
if __name__ == '__main__':
run(host='0.0.0.0', port=5757)