From 1aae094b500515b1a296d9b1f493760dcd5d4e4c Mon Sep 17 00:00:00 2001 From: Oliver Smith Date: Tue, 18 Jul 2017 19:01:11 +0000 Subject: [PATCH] Close #174: Put frontend functions in extra file (#185) --- pmb/helpers/frontend.py | 113 ++++++++++++++++++++++++++++++++++++++++ pmbootstrap.py | 98 ++-------------------------------- 2 files changed, 118 insertions(+), 93 deletions(-) create mode 100644 pmb/helpers/frontend.py diff --git a/pmb/helpers/frontend.py b/pmb/helpers/frontend.py new file mode 100644 index 00000000..dbf9aff3 --- /dev/null +++ b/pmb/helpers/frontend.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python3 + +""" +Copyright 2017 Oliver Smith + +This file is part of pmbootstrap. + +pmbootstrap 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. + +pmbootstrap 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 pmbootstrap. If not, see . +""" + +import json +import pmb.aportgen +import pmb.build +import pmb.config +import pmb.challenge +import pmb.chroot +import pmb.chroot.initfs +import pmb.chroot.other +import pmb.flasher +import pmb.helpers.logging +import pmb.helpers.other +import pmb.helpers.run +import pmb.install +import pmb.parse + + +def aportgen(args): + pmb.aportgen.generate(args, args.package) + + +def build(args): + pmb.build.package(args, args.package, args.arch, args.force, + args.buildinfo) + + +def build_init(args): + pmb.build.init(args, args.suffix) + + +def challenge(args): + pmb.challenge.frontend(args) + + +def checksum(args): + pmb.build.checksum(args, args.package) + + +def chroot(args): + pmb.chroot.apk.check_min_version(args, args.suffix) + pmb.chroot.root(args, args.command, args.suffix, log=False) + + +def index(args): + pmb.build.index_repo(args) + + +def initfs(args): + pmb.chroot.initfs.frontend(args) + + +def install(args): + pmb.install.install(args) + + +def flasher(args): + pmb.flasher.frontend(args) + + +def menuconfig(args): + pmb.build.menuconfig(args, args.package, args.deviceinfo["arch"]) + + +def parse_apkbuild(args): + build_path = args.aports + "/" + args.package + "/APKBUILD" + print(json.dumps(pmb.parse.apkbuild(args, build_path), indent=4)) + + +def parse_apkindex(args): + result = pmb.parse.apkindex.parse(args, args.apkindex_path) + print(json.dumps(result, indent=4)) + + +def shutdown(args): + pmb.chroot.shutdown(args) + + +def stats(args): + pmb.build.ccache_stats(args, args.arch) + + +def log(args): + pmb.helpers.run.user(args, ["tail", "-f", args.log, "-n", args.lines], + log=False) + + +def log_distccd(args): + logpath = "/home/user/distccd.log" + pmb.chroot.user(args, ["tail", "-f", logpath, "-n", args.lines], log=False) + + +def zap(args): + pmb.chroot.zap(args) diff --git a/pmbootstrap.py b/pmbootstrap.py index e9e3d4ee..87e31431 100755 --- a/pmbootstrap.py +++ b/pmbootstrap.py @@ -22,100 +22,12 @@ along with pmbootstrap. If not, see . import sys import logging import os -import json import traceback - -import pmb.aportgen -import pmb.build import pmb.config -import pmb.challenge -import pmb.chroot -import pmb.chroot.initfs -import pmb.chroot.other -import pmb.flasher +import pmb.helpers.frontend import pmb.helpers.logging import pmb.helpers.other -import pmb.helpers.run import pmb.parse -import pmb.install - - -def action_aportgen(args): - pmb.aportgen.generate(args, args.package) - - -def action_build(args): - pmb.build.package(args, args.package, args.arch, args.force, - args.buildinfo) - - -def action_build_init(args): - pmb.build.init(args, args.suffix) - - -def action_challenge(args): - pmb.challenge.frontend(args) - - -def action_checksum(args): - pmb.build.checksum(args, args.package) - - -def action_chroot(args): - pmb.chroot.apk.check_min_version(args, args.suffix) - pmb.chroot.root(args, args.command, args.suffix, log=False) - - -def action_index(args): - pmb.build.index_repo(args) - - -def action_initfs(args): - pmb.chroot.initfs.frontend(args) - - -def action_install(args): - pmb.install.install(args) - - -def action_flasher(args): - pmb.flasher.frontend(args) - - -def action_menuconfig(args): - pmb.build.menuconfig(args, args.package, args.deviceinfo["arch"]) - - -def action_parse_apkbuild(args): - build_path = args.aports + "/" + args.package + "/APKBUILD" - print(json.dumps(pmb.parse.apkbuild(args, build_path), indent=4)) - - -def action_parse_apkindex(args): - result = pmb.parse.apkindex.parse(args, args.apkindex_path) - print(json.dumps(result, indent=4)) - - -def action_shutdown(args): - pmb.chroot.shutdown(args) - - -def action_stats(args): - pmb.build.ccache_stats(args, args.arch) - - -def action_log(args): - pmb.helpers.run.user(args, ["tail", "-f", args.log, "-n", args.lines], - log=False) - - -def action_log_distccd(args): - logpath = "/home/user/distccd.log" - pmb.chroot.user(args, ["tail", "-f", logpath, "-n", args.lines], log=False) - - -def action_zap(args): - pmb.chroot.zap(args) def main(): @@ -136,12 +48,12 @@ def main(): " 'pmbootstrap init' to generate one.") return 1 - # If an action_xxx function is defined in local scope, run it with args - func = globals().get('action_' + args.action) - if func: - func(args) + # Run the function with the action's name (in pmb/helpers/frontend.py) + if args.action: + getattr(pmb.helpers.frontend, args.action)(args) else: logging.info("Run pmbootstrap -h for usage information.") + # Print finish timestamp logging.info("Done")