Skip to content

Commit

Permalink
[PR #6520/4373f2f3 backport][stable-7] mas: disable sign-in check for…
Browse files Browse the repository at this point in the history
… macOS 12+ (#6592)

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

* disable sign-in check for macOS 12+

* move is_version_greater func outside class Mas

* fix formatting

* remove trailing whitespace

* make use of LooseVersion to compare versions

* update requirement description

Co-authored-by: Felix Fontein <felix@fontein.de>

* update requirement description link

Co-authored-by: Felix Fontein <felix@fontein.de>

* update constant of macOS version

Co-authored-by: Felix Fontein <felix@fontein.de>

* use updated constant

Co-authored-by: Felix Fontein <felix@fontein.de>

* update getting macOS version

Co-authored-by: Felix Fontein <felix@fontein.de>

* add changelog fragment

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 4373f2f)

Co-authored-by: Justine Jose <59870720+justinpjose@users.noreply.github.com>
  • Loading branch information
patchback[bot] and justinpjose committed May 29, 2023
1 parent b49aeab commit 131bf72
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
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

0 comments on commit 131bf72

Please sign in to comment.