diff options
author | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2013-08-15 16:51:54 +0000 |
---|---|---|
committer | Lars Wirzenius <lars.wirzenius@codethink.co.uk> | 2013-08-15 17:04:02 +0000 |
commit | 583a840ff77a327089c45c45a9eb912df3165100 (patch) | |
tree | 1f8539c73056fe381d7feb3278589e06619094e0 /morphlib | |
parent | d976da7db86519a4c926e89a61bf129777751861 (diff) | |
download | morph-583a840ff77a327089c45c45a9eb912df3165100.tar.gz |
Add "morph print-architecture" subcommand
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/plugins/print_architecture_plugin.py | 35 | ||||
-rw-r--r-- | morphlib/util.py | 22 |
2 files changed, 57 insertions, 0 deletions
diff --git a/morphlib/plugins/print_architecture_plugin.py b/morphlib/plugins/print_architecture_plugin.py new file mode 100644 index 00000000..08f500d0 --- /dev/null +++ b/morphlib/plugins/print_architecture_plugin.py @@ -0,0 +1,35 @@ +# Copyright (C) 2013 Codethink Limited +# +# 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; version 2 of the License. +# +# 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. + + +import cliapp +import os + +import morphlib + + +class PrintArchitecturePlugin(cliapp.Plugin): + + def enable(self): + self.app.add_subcommand( + 'print-architecture', self.print_architecture, arg_synopsis='') + + def disable(self): + pass + + def print_architecture(self, args): + '''Print the name of the architecture of the host.''' + + self.app.output.write('%s\n' % morphlib.util.get_host_architecture()) diff --git a/morphlib/util.py b/morphlib/util.py index b83211e3..7526c93c 100644 --- a/morphlib/util.py +++ b/morphlib/util.py @@ -359,3 +359,25 @@ def parse_environment_pairs(env, pairs): # 3 unnecessary lists, but I felt this was the most # easy to read. Using itertools.chain may be more efficicent return dict(env.items() + extra_env.items()) + + + +def get_host_architecture(): # pragma: no cover + '''Get the canonical Morph name for the host's architecture.''' + + machine = os.uname()[-1] + + table = { + 'x86_64': 'x86_64', + 'i386': 'x86_32', + 'i486': 'x86_32', + 'i586': 'x86_32', + 'i686': 'x86_32', + 'armv7l': 'armv7l', + 'armv7b': 'armv7b', + } + + if machine not in table: + raise morphlib.Error('Unknown host architecture %s' % machine) + + return table[machine] |