# This Python file uses the following encoding: utf-8
from BuildBotLib.basemodule import BaseModule
from buildbot.plugins import util, steps
from BuildBotLib.make import Make


class Releaser(Make):
    def __init__(self):
        Make.__init__(self, BaseModule.P_Linux)


    def getFactory(self):
        factory = BaseModule.getFactory(self)

        @util.renderer
        def getProdName(props):
            return str(props.getProperty('prodName'))

        @util.renderer
        def getUrl(props):
            baseUrl = self.destDirUrl(props)
            prodName = str(props.getProperty('prodName'))
            return baseUrl + '/' + prodName

        factory.addStep(
            steps.Git(
                repourl=util.Interpolate('%(prop:repository)s'),
                branch=util.Interpolate('%(prop:branch)s'),
                mode='full',
                method='fresh',
                clobberOnFailure=True,
                submodules=False,
                retryFetch=True,
                name='git operations',
                description='operations of git like pull clone fetch',
            )
        )

        factory.addStep(
            self.generateStep(["wget", getUrl],
                              self.platform,
                              'get last build ',
                              lambda step: True)
        )

        factory.addStep(
            self.generateStep(['dpkg', '-i', getProdName],
                              self.platform,
                              'Install new version of server',
                              lambda step: True)
        )

        factory.addStep(
            self.generateStep("rm * -rdf",
                              self.platform,
                              'Clean ',
                              lambda step: True)
        )


        return factory


    def getPropertyes(self):

        base = BaseModule.getPropertyes(self)

        return base + [
            util.StringParameter(
                name='prodName',
                label='Name of the production server file. (by default prod.deb)',
                default='prod.deb'
            ),
        ]