# Copyright 2016 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import os import icklib class LoadProjectInfo(icklib.BuildStep): def build(self): self.run_state.progress['step'] = 'Loading project state' self.run_state.logger.important('Loading project state') self.run_state.project_info = icklib.ProjectInformation() filename = self.statedir.get_project_state_path(self.project.name) self.run_state.project_info.set_filename(filename) dirname = os.path.dirname(filename) if not os.path.exists(dirname): os.makedirs(dirname) if os.path.exists(filename): self.run_state.project_info.load() if self.run_state.project_info.built_commits is None: self.run_state.project_info.built_commits = {} class SaveProjectInfo(icklib.BuildStep): def build(self): self.run_state.progress['step'] = 'Saving project state' self.run_state.logger.important('Saving project state') if hasattr(self.run_state, 'commits'): value = self.run_state.commits if value is not None: key = self.run_state.pipeline.name self.run_state.project_info.built_commits[key] = value self.run_state.project_info.save()