#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # AWL simulator - Project file upgrade utility # # Copyright 2017 Michael Buesch # # 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 2 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, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # from __future__ import division, absolute_import, print_function, unicode_literals import sys import getopt from awlsim_loader.common import * from awlsim.gui.util import * from awlsim.gui.fup.fupwidget import FupFactory, FupWidget def usage(): print("awlsim-proupgrade version %s" % VERSION_STRING) print("") print("This utility re-writes a project file using the latest file format version.") print("") print("Usage: awlsim-proupgrade [OPTIONS] PROJECTFILE.awlpro") print("") print("Options:") print(" -L|--loglevel LVL Set the client log level:") print(" 0: Log nothing") print(" 1: Log errors") print(" 2: Log errors and warnings (default)") print(" 3: Log errors, warnings and info messages") print(" 4: Verbose logging") print(" 5: Extremely verbose logging") def main(): opt_loglevel = Logging.LOG_WARNING Logging.setPrefix("awlsim-proupgrade: ") try: (opts, args) = getopt.getopt(sys.argv[1:], "hL:", [ "help", "loglevel=", ]) except getopt.GetoptError as e: printError(str(e)) usage() return ExitCodes.EXIT_ERR_CMDLINE for (o, v) in opts: if o in ("-h", "--help"): usage() return ExitCodes.EXIT_OK if o in ("-L", "--loglevel"): try: opt_loglevel = int(v) except ValueError: printError("-L|--loglevel: Invalid log level") sys.exit(1) if len(args) != 1: usage() return ExitCodes.EXIT_ERR_CMDLINE projectFile = args[0] try: Logging.setLoglevel(opt_loglevel) # Parse the project file and write it back immediately. # The read will parse old formats, too. # The write will write using the latest format. printInfo("Upgrading file format of: %s" % projectFile) project = Project.fromFile(projectFile) for fupSource in project.getFupSources(): factory = FupFactory(fupWidget=FupWidget(None, None)) factory.parse(fupSource.sourceBytes) fupSource.sourceBytes = factory.compose() for kopSource in project.getKopSources(): pass#TODO project.toFile() except AwlSimError as e: printError(e.getReport()) return ExitCodes.EXIT_ERR_SIM return ExitCodes.EXIT_OK if __name__ == "__main__": qapp = QApplication(sys.argv) sys.exit(main())