blob: f6b4c2e792e74b1b42a9fe98e36ef38be714bdf4 [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright 2020 - 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.
"""Asuite plugin deployment."""
import os
import subprocess
from aidegen.lib import common_util
_ASK_INSTALL_PLUGIN = """\nAsuite plugin is a new tool with following features:
-Atest UI widget. For more information: go/atest_plugin
-Code search integration. For more information and locate build module: go/android-platform-plugin
Would you like to install the Asuite plugin? (Yes/No/Auto)"""
_ASK_UPGRADE_PLUGIN = ('\nAsuite plugin has a new version. Would you like to '
'upgrade Asuite plugin? (Yes/No/Auto)')
_YES_RESPONSE = 'Thank you, Asuit plugin will be installed in IntelliJ.'
_NO_RESPONSE = ('Thank you, if you want to install Asuite plugin, please use '
'aidegen --plugin.')
_AUTO_RESPONSE = ('Thank you, Asuit plugin will be installed in IntelliJ, and '
'automatically updated to the newest version.')
_THANKS_UPGRADE = 'Thank you for upgrading the Asuite plugin.'
_NO_NEED_UPGRADE = 'Awesome! You have the newest Asuite plugin.'
_SELECTION_ITEM = {'yes': 'yes', 'no': 'no', 'auto': 'auto', 'y': 'yes',
'n': 'no', 'a': 'auto'}
class PluginDeployment:
"""The util class of Asuite plugin deployment.
Usage:
PluginDeployment.install_asuite_plugin()
It will start installation process.
Attributes:
is_internal: True if the user is a internal user.
"""
def __init__(self):
"""PluginDeployment initialize."""
self.is_internal = self._is_internal_user()
def install_asuite_plugin(self):
"""It is the main entry function for installing Asuite plugin."""
def _ask_for_install(self):
"""Asks the user to install the Asuite plugin."""
input_data = input(_ASK_INSTALL_PLUGIN)
while input_data.lower() not in _SELECTION_ITEM.keys():
input_data = input(_ASK_INSTALL_PLUGIN)
choice = _SELECTION_ITEM.get(input_data)
self._write_selection(choice)
if choice == 'no':
print(_NO_RESPONSE)
else:
self._copy_jars()
if choice == 'yes':
print(_YES_RESPONSE)
else:
print(_AUTO_RESPONSE)
def _ask_for_upgrade(self):
"""Asks the user to upgrade the Asuite plugin."""
def _copy_jars(self):
"""Copies jars to IntelliJ plugin folders."""
def _build_jars(self):
"""builds jars to IntelliJ plugin folders."""
asuite_plugin_path = os.path.join(common_util.get_android_root_dir(),
'tools/asuite/asuite_plugin/')
asuite_plugin_gradle_path = os.path.join(asuite_plugin_path, 'gradlew')
cmd = [asuite_plugin_gradle_path, 'build']
subprocess.check_call(cmd, cwd=asuite_plugin_path)
def _is_plugin_installed(self):
"""Checks if the user has installed Asuite plugin before.
Return:
True if the user has installed Asuite plugin.
"""
def _is_version_up_to_date(self):
"""Checks if all plugins' versions are up to date or not.
Return:
True if all plugins' versions are up to date.
"""
def _write_selection(self, selection):
"""Writes the user's selection to config file.
Args:
selection: A string of the user's selection: yes/no/auto.
"""
def _read_selection(self):
"""Reads the user's selection from config file.
Return:
A string of the user's selection: yes/no/auto.
"""
@staticmethod
def _is_internal_user():
"""Checks if the user is internal user or external user.
Return:
True if the user is a internal user.
"""
return True