adds channel parameter

pull/9236/head
Stanislav Shamilov 2024-12-07 16:24:58 +02:00
parent 97b07eebba
commit b41eb5744e
4 changed files with 43 additions and 6 deletions

View File

@ -1,3 +1,7 @@
from __future__ import absolute_import, division, print_function
__metaclass__ = type
import re
from ansible_collections.community.general.plugins.module_utils import cmd_runner_fmt
@ -8,6 +12,20 @@ _state_map = {
"absent": "--uninstall"
}
# sdkmanager --help 2>&1 | grep -A 2 -- --channel
_channel_map = {
"stable": 0,
"beta": 1,
"dev": 2,
"canary": 3
}
def map_channel(channel_name):
if channel_name not in _channel_map:
raise ValueError("Unknown channel name '%s'" % channel_name)
return _channel_map[channel_name]
def sdkmanager_runner(module, **kwargs):
return CmdRunner(
@ -20,7 +38,8 @@ def sdkmanager_runner(module, **kwargs):
installed=cmd_runner_fmt.as_fixed("--list_installed"),
list=cmd_runner_fmt.as_fixed('--list'),
newer=cmd_runner_fmt.as_fixed("--newer"),
sdk_root=cmd_runner_fmt.as_opt_eq_val("--sdk_root", ignore_none=True)
sdk_root=cmd_runner_fmt.as_opt_eq_val("--sdk_root", ignore_none=True),
channel=cmd_runner_fmt.as_func(lambda x: ["{0}={1}".format("--channel", map_channel(x))])
),
force_lang="C.UTF-8",
**kwargs
@ -62,7 +81,7 @@ class AndroidSdkManager(object):
self.runner = runner
def get_installed_packages(self):
with self.runner('installed sdk_root') as ctx:
with self.runner('installed sdk_root channel') as ctx:
rc, stdout, stderr = ctx.run()
data = stdout.split('\n')
@ -90,7 +109,7 @@ class AndroidSdkManager(object):
return packages
def get_updatable_packages(self):
with self.runner('list newer sdk_root') as ctx:
with self.runner('list newer sdk_root channel') as ctx:
rc, stdout, stderr = ctx.run()
data = stdout.split('\n')
@ -130,5 +149,5 @@ class AndroidSdkManager(object):
if len(packages) == 0:
return 0, '', ''
command_arg = [x.name for x in packages]
with self.runner('state name sdk_root') as ctx:
with self.runner('state name sdk_root channel') as ctx:
return ctx.run(name=command_arg, state=state)

View File

@ -1,3 +1,7 @@
from __future__ import absolute_import, division, print_function
__metaclass__ = type
from ansible_collections.community.general.plugins.module_utils.mh.module_helper import StateModuleHelper
from ansible_collections.community.general.plugins.module_utils.sdkmanager import sdkmanager_runner, Package, \
AndroidSdkManager
@ -9,7 +13,8 @@ class AndroidSdk(StateModuleHelper):
state=dict(type='str', default='present', choices=['present', 'absent', 'latest']),
package=dict(type='list', elements='str', aliases=['pkg', 'name']),
update=dict(type='bool', default=False),
sdk_root=dict(type='path')
sdk_root=dict(type='path'),
channel=dict(type='str', default='stable', choices=['stable', 'beta', 'dev', 'canary'])
),
supports_check_mode=True
)

View File

@ -0,0 +1,4 @@
- name: delete_newroot
file:
path: "{{ newroot.path }}"
state: absent

View File

@ -62,6 +62,7 @@
path: "{{ ansible_env.HOME }}/newroot"
state: directory
register: newroot
notify: delete_newroot
- name: Accept licenses in the new root
shell: "yes | sdkmanager --sdk_root={{ newroot.path }} --licenses"
@ -78,6 +79,13 @@
path: "{{ newroot.path }}/build-tools/34.0.0"
register: new_root_package_stat
- name: Install a package from canary channel
android_sdk:
name: build-tools;33.0.0
state: present
channel: canary
register: package_canary
- name: Run tests
assert:
that:
@ -89,4 +97,5 @@
- not platform_tools_present.changed
- platform_tools_updated.changed
- new_root_package.changed
- new_root_package_stat.stat.exists
- new_root_package_stat.stat.exists
- package_canary.changed