import platform

class rpmMacro(object):

    def __init__(self):
        self.macroName = ""
        self.macroFlag = ""
        self.content = ""
        self.position = -1
        self.endposition = -1

    def setName(self, name):
        self.macroName = name

    def displayMacro(self):
        print("Macro:")
        print(self.macroName + " {}".format(self.macroFlag)
              + " {}".format(self.position)
              + " {}".format(self.endposition))
        print(self.content)

class dependentPackageData(object):

    def __init__(self):
        self.package = ""
        self.version = ""
        self.compare = ""

class Package(object):
    def __init__(self, basePkg=None):
        self.summary = ""
        self.name = ""
        self.group = ""
        self.license = ""
        self.version = ""
        self.release = ""
        self.buildarch = platform.machine()
        self.distribution = "Photon"
        self.basePkgName = ""
        self.URL = ""

        self.sources = []
        self.checksums = {}
        self.patches = []
        self.buildrequires = []
        self.buildprovides = []
        self.checkbuildrequires = []
        self.extrabuildrequires = []

        self.requires = []
        self.provides = []
        self.obsoletes = []
        self.conflicts = []

        self.descriptionMacro = None
        self.postMacro = None
        self.postunMacro = None
        self.filesMacro = None
        self.packageMacro = None

        if basePkg is not None:
            self.basePkgName = basePkg.name
            self.group = basePkg.group
            self.license = basePkg.license
            self.version = basePkg.version
            self.buildarch = basePkg.buildarch
            self.release = basePkg.release
            self.distribution = basePkg.distribution

    def updatePackageMacro(self, macro):
        if macro.macroName == "%post":
            self.postMacro = macro
            return True
        if macro.macroName == "%postun":
            self.postunMacro = macro
            return True
        if macro.macroName == "%files":
            self.filesMacro = macro
            return True
        if macro.macroName == "%description":
            self.descriptionMacro = macro
            return True
        return False