## Great solution for IdP Password Syncing by TwoCanoes!
XCreds works by keeping your local Mac password in sync with your Identity Provider password. If you use Azure or Google or another identity provider, XCreds will make sure the password is the same. XCreds runs in the background and checks if the cloud password has been changed. If it detects the password has changed, it prompts to log in to the cloud provider and updates the local password and the keychain password automatically.
```
% GitHub/Installomator/utils/assemble.sh xcreds DEBUG=0
2022-08-12 09:25:38 : WARN : xcreds : setting variable from argument DEBUG=0
2022-08-12 09:25:38 : REQ : xcreds : ################## Start Installomator v. 10.0beta, date 2022-08-12
2022-08-12 09:25:38 : INFO : xcreds : ################## Version: 10.0beta
2022-08-12 09:25:38 : INFO : xcreds : ################## Date: 2022-08-12
2022-08-12 09:25:38 : INFO : xcreds : ################## xcreds
2022-08-12 09:25:38 : INFO : xcreds : BLOCKING_PROCESS_ACTION=tell_user
2022-08-12 09:25:38 : INFO : xcreds : NOTIFY=success
2022-08-12 09:25:38 : INFO : xcreds : LOGGING=INFO
2022-08-12 09:25:38 : INFO : xcreds : LOGO=/System/Applications/App Store.app/Contents/Resources/AppIcon.icns
2022-08-12 09:25:38 : INFO : xcreds : Label type: pkg
2022-08-12 09:25:38 : INFO : xcreds : archiveName: XCreds.pkg
2022-08-12 09:25:38 : INFO : xcreds : no blocking processes defined, using XCreds as default
2022-08-12 09:25:38 : INFO : xcreds : No version found using packageID com.twocanoes.pkg.secureremoteaccess
2022-08-12 09:25:38 : INFO : xcreds : name: XCreds, appName: XCreds.app
2022-08-12 09:25:38 : WARN : xcreds : No previous app found
2022-08-12 09:25:38 : WARN : xcreds : could not find XCreds.app
2022-08-12 09:25:38 : INFO : xcreds : appversion:
2022-08-12 09:25:38 : INFO : xcreds : Latest version of XCreds is 1.0.0
2022-08-12 09:25:38 : REQ : xcreds : Downloading https://github.com/twocanoes/xcreds/releases/download/v1.0.0/XCreds_1_0_0_Build-1272_Version.pkg to XCreds.pkg
2022-08-12 09:25:39 : REQ : xcreds : no more blocking processes, continue with update
2022-08-12 09:25:39 : REQ : xcreds : Installing XCreds
2022-08-12 09:25:39 : INFO : xcreds : Verifying: XCreds.pkg
2022-08-12 09:25:39 : INFO : xcreds : Team ID: UXP6YEHSPW (expected: UXP6YEHSPW )
2022-08-12 09:25:39 : INFO : xcreds : Installing XCreds.pkg to /
2022-08-12 09:25:42 : INFO : xcreds : Finishing...
2022-08-12 09:25:52 : INFO : xcreds : found packageID com.twocanoes.pkg.secureremoteaccess installed, version 1.2
2022-08-12 09:25:52 : REQ : xcreds : Installed XCreds, version 1.2
2022-08-12 09:25:52 : INFO : xcreds : notifying
2022-08-12 09:25:52 : INFO : xcreds : App not closed, so no reopen.
2022-08-12 09:25:52 : REQ : xcreds : All done!
2022-08-12 09:25:52 : REQ : xcreds : ################## End Installomator, exit code 0
```
downloadURL=$(curl -sfL "https://www.blender.org/download/"| xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*arm64.*.dmg"| sed '2p;d'| sed 's/www.blender.org\/download/download.blender.org/g')
elif[[$(arch)=="i386"]];then
downloadURL=$(curl -sfL "https://www.blender.org/download/"| xmllint --html --format - 2>/dev/null | grep -o "https://.*blender.*x64.*.dmg"| sed '2p;d'| sed 's/www.blender.org\/download/download.blender.org/g')
fi
downloadURL=$(redirect=$(curl -sfL https://www.blender.org/download/ | sed 's/.*href="//'| sed 's/".*//'| grep .dmg)&& curl -sfL "$redirect"| sed 's/.*href="//'| sed 's/".*//'| grep -m1 .dmg)
appNewVersion=$(echo"${downloadURL}"| sed -E 's/.*\/[a-zA-Z]*-([0-9.]*)-.*/\1/g')
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
printlog "WARNING for ERROR: Label firefox, firefox_da and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
printlog "WARNING for ERROR: Label firefox and firefox_intl should not be used. Instead use firefoxpkg and firefoxpkg_intl as per recommendations from Firefox. It's not fully certain that the app actually gets updated here. firefoxpkg and firefoxpkg_intl will have built in updates and make sure the client is updated in the future." REQ
curlOptions=( -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15")
appNewVersion=$(curl -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15" -fs "https://help.mmhmm.app/hc/en-us/articles/4420969712151-mmhmm-for-Mac"| grep 'The latest version of mmhmm for Mac is <strong>*'| sed -e 's/.*\<strong\>\(.*\)\.\<\/strong\>.*/\1/')
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.