mas-cli / mas-cli/mas

Add commands to interact with the Apple Account of the current macOS user

Open
#609 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

backlog feature
Dominant language
Swift
Stars
12.4k
Forks
299
Avg merge
1d 2h
Merged PRs (30d)
1

Description

Possibly add new commands / modify existing commands to better interact with the Apple Account of the current macOS user (e.g., add --macos & --app-store options or add new commands).

account, signin, signout & some other commands work with the Apple Account in the Mac App Store, which is a separate setting from the Apple Account of the current macOS user.

Normally, the two are set to the same account, but they could be set to different accounts.

Disambiguate what accounts each command works with.

macOS user Apple Account

The macOS user Apple Account is associated with the current macOS user in System Settings/System Preferences. It can be observed:

  • In Swift:
(UserDefaults.standard.persistentDomain(forName: "MobileMeAccounts")?["Accounts"] as? [[String: Any]])?.first?["AccountID"]
  • From command line:
defaults read MobileMeAccounts | plutil -extract "Accounts".0."AccountID" raw -o - -

Mac App Store Apple Account

The Mac App Store Apple Account, which is when you login in the App Store app. It can be observed:

  • In Swift (in macOs <= 10.12.x):
ISStoreAccount.primaryAccount.identifier
  • From command line: not sure

Commands

Currently, I think that the commands, when working, have the following interactions with the macOS & MAS Apple Accounts:

  • MAS
    • account
    • signin
    • signout
  • MAS (requires app in installed app list)
    • update
  • MAS (requires app not in installed app list)
    • get
    • install
    • lucky
  • Neither
    • help
    • home
    • list
    • lookup
    • open
    • outdated
    • reset
    • search
    • seller
    • uninstall
    • version

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the existing implementations of account, signin, signout, update, get, install, and lucky, then compare them with the MobileMeAccounts and Mac App Store account APIs described in the issue. The work is done when the commands clearly distinguish which Apple Account they use and the chosen command or options consistently interact with the intended account.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, shell, swift
Domain
cli, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.