Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mas: disable sign-in check for macOS 12+ #6520

Merged
3 changes: 3 additions & 0 deletions changelogs/fragments/6520-mas-disable-signin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
minor_changes:
- "mas - disable sign-in check for macOS 12+ as ``mas account`` is non-functional (https://github.com/ansible-collections/community.general/pull/6520)."
18 changes: 13 additions & 5 deletions plugins/modules/mas.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
- macOS 10.11+
- "mas-cli (U(https://github.com/mas-cli/mas)) 1.5.0+ available as C(mas) in the bin path"
- The Apple ID to use already needs to be signed in to the Mac App Store (check with C(mas account)).
- The feature of "checking if user is signed in" is disabled for anyone using macOS 12.0+.
- Users need to sign in via the Mac App Store GUI beforehand for anyone using macOS 12.0+ due to U(https://github.com/mas-cli/mas/issues/417).
'''

EXAMPLES = '''
Expand Down Expand Up @@ -106,6 +108,9 @@

from ansible_collections.community.general.plugins.module_utils.version import LooseVersion

import platform
NOT_WORKING_MAC_VERSION_MAS_ACCOUNT = '12.0'


class Mas(object):

Expand All @@ -115,6 +120,7 @@ def __init__(self, module):
# Initialize data properties
self.mas_path = self.module.get_bin_path('mas')
self._checked_signin = False
self._mac_version = platform.mac_ver()[0] or '0.0'
self._installed = None # Populated only if needed
self._outdated = None # Populated only if needed
self.count_install = 0
Expand Down Expand Up @@ -156,14 +162,16 @@ def check_mas_tool(self):

def check_signin(self):
''' Verifies that the user is signed in to the Mac App Store '''

# Only check this once per execution
if self._checked_signin:
return

rc, out, err = self.run(['account'])
if out.split("\n", 1)[0].rstrip() == 'Not signed in':
self.module.fail_json(msg='You must be signed in to the Mac App Store')
if LooseVersion(self._mac_version) >= LooseVersion(NOT_WORKING_MAC_VERSION_MAS_ACCOUNT):
# Checking if user is signed-in is disabled due to https://github.com/mas-cli/mas/issues/417
self.module.log('WARNING: You must be signed in via the Mac App Store GUI beforehand else error will occur')
else:
rc, out, err = self.run(['account'])
if out.split("\n", 1)[0].rstrip() == 'Not signed in':
self.module.fail_json(msg='You must be signed in to the Mac App Store')

self._checked_signin = True

Expand Down