| #!/usr/bin/env python3 |
| # |
| # Copyright 2018 - The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """An enum class to provide the running platform OS info. |
| |
| AndroidDevOS provides 2 functions to get info from current platform type, it |
| maps strings got from python standard library method 'platform.system()' to 3 |
| types of OS platform, i.e., Linux, Mac, and Windows. |
| |
| Class functions: |
| get_os_type, which returns a relevant enum object for current platform. |
| get_os_name, which returns the platform OS name in upper case. |
| """ |
| |
| from enum import Enum, unique |
| |
| import platform |
| |
| |
| @unique |
| class AndroidDevOS(str, Enum): |
| """The string enum class identifies the OS for Android development. |
| |
| Currently, it can identify 3 types of OS, e.g., Mac, Linux, and Windows. |
| And transform the os name into a meaningful platform name. |
| """ |
| |
| MAC = 'Darwin' |
| LINUX = 'Linux' |
| WINDOWS = 'Windows' |
| |
| @classmethod |
| def get_os_name(cls): |
| """Get the actual OS name. |
| |
| Return: |
| AndroidDevOS enum, the os type name for current environment. |
| """ |
| return cls.get_os_type().name |
| |
| @classmethod |
| def get_os_type(cls): |
| """get current OS type. |
| |
| Return: |
| AndroidDevOS enum object, mapped to relevant platform. |
| """ |
| return { |
| 'Darwin': cls.MAC, |
| 'Linux': cls.LINUX, |
| 'Windows': cls.WINDOWS |
| }.get(platform.system(), cls.LINUX) |