~zyga/snapcraft/plainbox-provider

« back to all changes in this revision

Viewing changes to snapcraft/plugin.py

  • Committer: Michael Terry
  • Date: 2015-07-02 14:16:40 UTC
  • Revision ID: michael.terry@canonical.com-20150702141640-xxo72xuabc31d5jp
Add basic formatting tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
import sys
23
23
import yaml
24
24
 
 
25
 
25
26
class Plugin:
26
27
 
27
28
    def __init__(self, name, partName, properties, optionsOverride=None, loadCode=True, loadConfig=True):
47
48
            self.config = yaml.load(open(configPath, 'r')) or {}
48
49
 
49
50
        if loadCode:
50
 
            class Options(): pass
 
51
            class Options():
 
52
                pass
51
53
            options = Options()
52
54
 
53
55
            if self.config:
72
74
        self.valid = True
73
75
 
74
76
    def makedirs(self):
75
 
        try: os.makedirs(self.sourcedir)
76
 
        except: pass
77
 
        try: os.makedirs(self.builddir)
78
 
        except: pass
79
 
        try: os.makedirs(self.stagedir)
80
 
        except: pass
81
 
        try: os.makedirs(self.snapdir)
82
 
        except: pass
 
77
        try:
 
78
            os.makedirs(self.sourcedir)
 
79
        except FileExistsError:
 
80
            pass
 
81
        try:
 
82
            os.makedirs(self.builddir)
 
83
        except FileExistsError:
 
84
            pass
 
85
        try:
 
86
            os.makedirs(self.stagedir)
 
87
        except FileExistsError:
 
88
            pass
 
89
        try:
 
90
            os.makedirs(self.snapdir)
 
91
        except FileExistsError:
 
92
            pass
83
93
 
84
94
    def isValid(self):
85
95
        return self.valid
109
119
            f.write(stage)
110
120
 
111
121
    def pull(self, force=False):
112
 
        if not self.shouldStageRun('pull', force): return True
 
122
        if not self.shouldStageRun('pull', force):
 
123
            return True
113
124
        self.makedirs()
114
125
        if self.code and hasattr(self.code, 'pull'):
115
126
            self.notifyStage("Pulling")
119
130
        return True
120
131
 
121
132
    def build(self, force=False):
122
 
        if not self.shouldStageRun('build', force): return True
 
133
        if not self.shouldStageRun('build', force):
 
134
            return True
123
135
        self.makedirs()
124
136
        subprocess.call(['cp', '-Trf', self.sourcedir, self.builddir])
125
137
        if self.code and hasattr(self.code, 'build'):
130
142
        return True
131
143
 
132
144
    def test(self, force=False):
133
 
        if not self.shouldStageRun('test', force): return True
 
145
        if not self.shouldStageRun('test', force):
 
146
            return True
134
147
        self.makedirs()
135
148
        if self.code and hasattr(self.code, 'test'):
136
149
            self.notifyStage("Testing")
140
153
        return True
141
154
 
142
155
    def stage(self, force=False):
143
 
        if not self.shouldStageRun('stage', force): return True
 
156
        if not self.shouldStageRun('stage', force):
 
157
            return True
144
158
        self.makedirs()
145
159
        if self.code and hasattr(self.code, 'stage'):
146
160
            self.notifyStage("Staging")
150
164
        return True
151
165
 
152
166
    def snap(self, force=False):
153
 
        if not self.shouldStageRun('snap', force): return True
 
167
        if not self.shouldStageRun('snap', force):
 
168
            return True
154
169
        self.makedirs()
155
170
        if self.code and hasattr(self.code, 'snap'):
156
171
            self.notifyStage("Snapping")
164
179
            return getattr(self.code, 'env')()
165
180
        return []
166
181
 
 
182
 
167
183
def loadPlugin(partName, pluginName, properties={}, loadCode=True):
168
184
    part = Plugin(pluginName, partName, properties, loadCode=loadCode)
169
185
    if not part.isValid():