#!/usr/bin/python
import re

class Package:
    def __init__(self, line):
        self.type = line[0]
        self.name = line[1]
        self.script = line[2] if len(line) == 3 else None
    @staticmethod
    def is_package_line(line):
        return re.match(r"^[^*]+", line[0])

class Category:
    def __init__(self, line):
        self.name = ' '.join(line[1:])
        self.packages = []
    @staticmethod
    def is_category_line(line):
        return re.match(r"^\*+", line[0])

def split(lines):
    return list(map(lambda line: line.rstrip().split(' '), lines))

def parse_package_listing(file):
    f = open(file, 'r')
    categories = []
    category = None
    for line in split(f.readlines()):
        if Category.is_category_line(line):
            category = Category(line)
            categories.append(category)
        elif Package.is_package_line(line):
            category.packages.append(Package(line))
    return categories