Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c01bdeb393 | ||
|
|
f6610849eb | ||
|
|
d0c2335f35 | ||
|
|
cc9fc3a2f9 | ||
|
|
023c8bbae2 | ||
|
|
5c12a47f11 | ||
|
|
cc1b7527fe | ||
|
|
2f6b385f2f | ||
|
|
6c06f7107b | ||
|
|
da81619140 | ||
|
|
6c4fc52511 | ||
|
|
ccb9aa8c1d | ||
|
|
940ad7e622 | ||
|
|
f7fb380233 | ||
|
|
c0b9be502b | ||
|
|
66cd8d988e | ||
|
|
955af0fc9e | ||
|
|
9730e0ce45 | ||
|
|
94373dd5e8 | ||
|
|
87282969de | ||
|
|
6a6286755e |
@@ -1 +1 @@
|
|||||||
2.5.0
|
2.5.1
|
||||||
|
|||||||
47
CHANGES.md
47
CHANGES.md
@@ -1,11 +1,36 @@
|
|||||||
# v4.0.0 (2018-01-01)
|
# 5.0.0 (2018-08-01)
|
||||||
|
|
||||||
|
- Fixed Markdown ordered list numbering.
|
||||||
|
- Fixed verification of Homebrew formulas.
|
||||||
|
- Added App Store application verification.
|
||||||
|
- Added Homebrew cask application verifier.
|
||||||
|
- Updated Git checkout to silence detached head warnings.
|
||||||
|
- Updated README documentation.
|
||||||
|
- Updated Semantic Versioning links to be HTTPS.
|
||||||
|
- Updated boot disk format documentation.
|
||||||
|
- Updated project changes to use semantic versions.
|
||||||
|
- Removed Java install support.
|
||||||
|
- Removed restorer functions.
|
||||||
|
- Refactored function parameter documentation.
|
||||||
|
- Refactored library function order.
|
||||||
|
|
||||||
|
# 4.1.0 (2018-04-01)
|
||||||
|
|
||||||
|
- Updated README license information.
|
||||||
|
- Updated README screencast tutorial.
|
||||||
|
- Updated to Circle CI 2.0.0 configuration.
|
||||||
|
- Updated to Git Cop 2.2.0.
|
||||||
|
- Updated to Ruby 2.5.1.
|
||||||
|
- Removed Patreon badge from README.
|
||||||
|
|
||||||
|
# 4.0.0 (2018-01-01)
|
||||||
|
|
||||||
- Added Gemfile.lock to .gitignore.
|
- Added Gemfile.lock to .gitignore.
|
||||||
- Updated to Apache 2.0 license.
|
- Updated to Apache 2.0 license.
|
||||||
- Updated to Ruby 2.4.3.
|
- Updated to Ruby 2.4.3.
|
||||||
- Updated to Ruby 2.5.0.
|
- Updated to Ruby 2.5.0.
|
||||||
|
|
||||||
# v3.1.0 (2017-11-26)
|
# 3.1.0 (2017-11-26)
|
||||||
|
|
||||||
- Updated Gemfile.lock file.
|
- Updated Gemfile.lock file.
|
||||||
- Updated boot disk documenation to mention APFS.
|
- Updated boot disk documenation to mention APFS.
|
||||||
@@ -14,7 +39,7 @@
|
|||||||
- Updated to Rake 12.3.0.
|
- Updated to Rake 12.3.0.
|
||||||
- Updated to Rubocop 0.51.0.
|
- Updated to Rubocop 0.51.0.
|
||||||
|
|
||||||
# v3.0.0 (2017-10-01)
|
# 3.0.0 (2017-10-01)
|
||||||
|
|
||||||
- Fixed table of contents.
|
- Fixed table of contents.
|
||||||
- Updated boot disk creation to use macOS High Sierra.
|
- Updated boot disk creation to use macOS High Sierra.
|
||||||
@@ -22,7 +47,7 @@
|
|||||||
- Updated to Git Cop 1.6.0.
|
- Updated to Git Cop 1.6.0.
|
||||||
- Updated to Ruby 2.4.2.
|
- Updated to Ruby 2.4.2.
|
||||||
|
|
||||||
# v2.2.0 (2017-07-16)
|
# 2.2.0 (2017-07-16)
|
||||||
|
|
||||||
- Added Git Cop support.
|
- Added Git Cop support.
|
||||||
- Updated CONTRIBUTING documentation.
|
- Updated CONTRIBUTING documentation.
|
||||||
@@ -30,33 +55,33 @@
|
|||||||
- Updated README headers.
|
- Updated README headers.
|
||||||
- Updated gem dependencies.
|
- Updated gem dependencies.
|
||||||
|
|
||||||
# v2.1.0 (2017-04-29)
|
# 2.1.0 (2017-04-29)
|
||||||
|
|
||||||
- Fixed Java SE Development Kit install.
|
- Fixed Java SE Development Kit install.
|
||||||
- Fixed install-all command
|
- Fixed install-all command
|
||||||
|
|
||||||
# v2.0.0 (2017-04-09)
|
# 2.0.0 (2017-04-09)
|
||||||
|
|
||||||
- Added Homebrew Casks install script.
|
- Added Homebrew Casks install script.
|
||||||
- Updated README semantic versioning order.
|
- Updated README semantic versioning order.
|
||||||
- Updated contributing documentation.
|
- Updated contributing documentation.
|
||||||
- Refactored Homebrew software as Homebrew Formulas.
|
- Refactored Homebrew software as Homebrew Formulas.
|
||||||
|
|
||||||
# v1.3.1 (2017-01-08)
|
# 1.3.1 (2017-01-08)
|
||||||
|
|
||||||
- Fixed install of zip app downloads with sub-directories.
|
- Fixed install of zip app downloads with sub-directories.
|
||||||
|
|
||||||
# v1.3.0 (2017-01-01)
|
# 1.3.0 (2017-01-01)
|
||||||
|
|
||||||
- Updated README versioning documentation.
|
- Updated README versioning documentation.
|
||||||
- Removed CHANGELOG.md (use CHANGES.md instead).
|
- Removed CHANGELOG.md (use CHANGES.md instead).
|
||||||
|
|
||||||
# v1.2.0 (2016-10-12)
|
# 1.2.0 (2016-10-12)
|
||||||
|
|
||||||
- Fixed reinstaller path issues with application and extension scripts.
|
- Fixed reinstaller path issues with application and extension scripts.
|
||||||
- Added screencast to README.
|
- Added screencast to README.
|
||||||
|
|
||||||
# v1.1.0 (2016-10-11)
|
# 1.1.0 (2016-10-11)
|
||||||
|
|
||||||
- Fixed Bash script header to dynamically load correct environment.
|
- Fixed Bash script header to dynamically load correct environment.
|
||||||
- Fixed verification of Homebrew application installs.
|
- Fixed verification of Homebrew application installs.
|
||||||
@@ -64,6 +89,6 @@
|
|||||||
- Added script hooks for unfinished custom configurations.
|
- Added script hooks for unfinished custom configurations.
|
||||||
- Updated and clarified README documentation.
|
- Updated and clarified README documentation.
|
||||||
|
|
||||||
# v1.0.0 (2016-10-05)
|
# 1.0.0 (2016-10-05)
|
||||||
|
|
||||||
- Initial version.
|
- Initial version.
|
||||||
|
|||||||
@@ -5,16 +5,16 @@ appreciated. The following sections detail what you need to know in order to con
|
|||||||
|
|
||||||
## Code
|
## Code
|
||||||
|
|
||||||
0. Read the project README before starting.
|
1. Read the project README before starting.
|
||||||
0. Fork the `master` branch of this repository and clone the fork locally.
|
1. Fork the `master` branch of this repository and clone the fork locally.
|
||||||
0. Ensure there are no setup, usage, and/or test issues.
|
1. Ensure there are no setup, usage, and/or test issues.
|
||||||
0. Add tests for new functionality and ensure they pass.
|
1. Add tests for new functionality and ensure they pass.
|
||||||
0. Submit a pull request, follow the instructions it provides, and ensure the build passes.
|
1. Submit a pull request, follow the instructions it provides, and ensure the build passes.
|
||||||
|
|
||||||
## Issues
|
## Issues
|
||||||
|
|
||||||
0. Submit an issue via the GitHub Issues tab (assuming one does not
|
- Submit an issue via the GitHub Issues tab (assuming one does not
|
||||||
already exist) and follow the instructions it provides.
|
already exist) and follow the instructions it provides.
|
||||||
|
|
||||||
## Feedback
|
## Feedback
|
||||||
|
|
||||||
|
|||||||
2
Gemfile
2
Gemfile
@@ -3,4 +3,4 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "rake", "~> 12.0"
|
gem "rake", "~> 12.0"
|
||||||
gem "git-cop", "~> 2.0"
|
gem "git-cop", "~> 2.2"
|
||||||
|
|||||||
54
README.md
54
README.md
@@ -1,7 +1,6 @@
|
|||||||
# macOS
|
# macOS
|
||||||
|
|
||||||
[](https://circleci.com/gh/bkuhlmann/mac_os)
|
[](https://circleci.com/gh/bkuhlmann/mac_os)
|
||||||
[](https://www.patreon.com/bkuhlmann)
|
|
||||||
|
|
||||||
Shell scripts for automated macOS machine setup.
|
Shell scripts for automated macOS machine setup.
|
||||||
|
|
||||||
@@ -12,7 +11,7 @@ project is an opinionated configuration which meets the needs of my development
|
|||||||
also meant to serve as an example and guide for building your own personalized setup. Here is how
|
also meant to serve as an example and guide for building your own personalized setup. Here is how
|
||||||
the two projects are meant to be used:
|
the two projects are meant to be used:
|
||||||
|
|
||||||
- **macOS** (this project) - Foundation and framework for building customizated macOS machine
|
- **macOS** (this project) - The foundation framework for building customizated macOS machine
|
||||||
setups.
|
setups.
|
||||||
- **[macOS Configuration](https://github.com/bkuhlmann/mac_os-config)** - The layer on top of this
|
- **[macOS Configuration](https://github.com/bkuhlmann/mac_os-config)** - The layer on top of this
|
||||||
*macOS* project which defines a custom machine setup and base implementation. The project is meant
|
*macOS* project which defines a custom machine setup and base implementation. The project is meant
|
||||||
@@ -39,10 +38,9 @@ the two projects are meant to be used:
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Provides a command line interface, written in Bash with no additional dependencies, for
|
- Provides a command line interface, written in Bash, with no additional dependencies for
|
||||||
installation and management of a macOS machine.
|
installation and management of a macOS machine.
|
||||||
- Supports macOS boot disk creation for setting up a machine with a fresh install of the operation
|
- Supports macOS boot disk creation for fresh install of operating system.
|
||||||
system.
|
|
||||||
- Downloads and installs development tools (required by Homebrew):
|
- Downloads and installs development tools (required by Homebrew):
|
||||||
- [Xcode Command Line Tools](https://developer.apple.com/xcode)
|
- [Xcode Command Line Tools](https://developer.apple.com/xcode)
|
||||||
- [Java SE Development Kit](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
|
- [Java SE Development Kit](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
|
||||||
@@ -58,12 +56,12 @@ the two projects are meant to be used:
|
|||||||
|
|
||||||
## Screencast
|
## Screencast
|
||||||
|
|
||||||
[](https://asciinema.org/a/88971)
|
[](https://asciinema.org/a/155990)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
0. [macOS High Sierra](https://www.apple.com/macos) (with latest software updates applied)
|
1. [macOS High Sierra](https://www.apple.com/macos) (with latest software updates applied)
|
||||||
0. [Xcode](https://developer.apple.com/xcode) (with accepted license agreement)
|
1. [Xcode](https://developer.apple.com/xcode) (with accepted license agreement)
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|
||||||
@@ -74,7 +72,7 @@ Current Version (stable):
|
|||||||
|
|
||||||
git clone https://github.com/bkuhlmann/mac_os.git
|
git clone https://github.com/bkuhlmann/mac_os.git
|
||||||
cd mac_os
|
cd mac_os
|
||||||
git checkout v4.0.0
|
git checkout 5.0.0
|
||||||
|
|
||||||
Master Version (unstable):
|
Master Version (unstable):
|
||||||
|
|
||||||
@@ -83,11 +81,11 @@ Master Version (unstable):
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
Run the following script:
|
Run the following:
|
||||||
|
|
||||||
bin/run
|
bin/run
|
||||||
|
|
||||||
You will be presented with the following options:
|
You will be presented with the following options (listed in order of use):
|
||||||
|
|
||||||
Boot:
|
Boot:
|
||||||
B: Create boot disk.
|
B: Create boot disk.
|
||||||
@@ -114,12 +112,12 @@ You will be presented with the following options:
|
|||||||
w: Clean work (temp) directory.
|
w: Clean work (temp) directory.
|
||||||
q: Quit/Exit.
|
q: Quit/Exit.
|
||||||
|
|
||||||
Choose option `i` to run all install options or select a specific option to run a single option.
|
Choose option `i` to run a full install or select a specific option to run a single action. Each
|
||||||
Each option is designed to be re-run if necessary. This can also be handy for performing upgrades,
|
option is designed to be re-run if necessary. This can also be handy for performing upgrades,
|
||||||
re-running a missing/failed install, etc.
|
re-running a missing/failed install, etc.
|
||||||
|
|
||||||
The option prompt can be skipped by passing the desired option directly to the `bin/run` script. For
|
The option prompt can be skipped by passing the desired option directly to the `bin/run` script. For
|
||||||
example, executing `bin/run i` will execute the complete software install process.
|
example, executing `bin/run i` will execute the full install process.
|
||||||
|
|
||||||
The machine should be rebooted after all install tasks have completed to ensure all settings have
|
The machine should be rebooted after all install tasks have completed to ensure all settings have
|
||||||
been loaded.
|
been loaded.
|
||||||
@@ -131,25 +129,21 @@ in order to manage installed software and benefit from future upgrades.
|
|||||||
|
|
||||||
All executable scripts can be found in the `bin` folder:
|
All executable scripts can be found in the `bin` folder:
|
||||||
|
|
||||||
- `bin/apply_basic_settings`: Applies basic, initial, settings for setting up a machine. *This is
|
- `bin/apply_basic_settings`: Applies basic, initial, settings for setting up a machine. *Can be
|
||||||
meant to be customized.*
|
|
||||||
- `bin/apply_default_settings`: Applies useful system and application defaults. *This is meant to be
|
|
||||||
customized.*
|
customized.*
|
||||||
|
- `bin/apply_default_settings`: Applies useful system and application defaults. *Can be customized.*
|
||||||
- `bin/create_boot_disk`: Creates macOS boot disk.
|
- `bin/create_boot_disk`: Creates macOS boot disk.
|
||||||
- `bin/install_app_store`: Installs macOS, GUI-based, App Store applications. *This is meant to be
|
- `bin/install_app_store`: Installs macOS, GUI-based, App Store applications. *Can be customized.*
|
||||||
|
- `bin/install_applications`: Installs macOS, GUI-based, non-App Store applications. *Can be
|
||||||
customized.*
|
customized.*
|
||||||
- `bin/install_applications`: Installs macOS, GUI-based, non-App Store applications. *This is meant
|
|
||||||
to be customized.*
|
|
||||||
- `bin/install_dev_tools`: Installs macOS development tools required by Homebrew.
|
- `bin/install_dev_tools`: Installs macOS development tools required by Homebrew.
|
||||||
- `bin/install_extensions`: Installs macOS application extensions and add-ons. *This is meant to be
|
- `bin/install_extensions`: Installs macOS application extensions and add-ons. *Can be customized.*
|
||||||
customized.*
|
- `bin/install_homebrew_casks`: Installs Homebrew Formulas. *Can be customized.*
|
||||||
- `bin/install_homebrew_casks`: Installs Homebrew Formulas. *This is meant to be customized.*
|
- `bin/install_homebrew_formulas`: Installs Homebrew Casks. *Can be customized.*
|
||||||
- `bin/install_homebrew_formulas`: Installs Homebrew Casks. *This is meant to be customized.*
|
- `bin/restore_backup`: Restores system/application settings from backup image. *Can be customized.*
|
||||||
- `bin/restore_backup`: Restores system/application settings from backup image. *This is meant to be
|
|
||||||
customized.*
|
|
||||||
- `bin/run`: The main script and interface for macOS setup.
|
- `bin/run`: The main script and interface for macOS setup.
|
||||||
- `bin/setup_software`: Configures and launches (if necessary) installed software. *This is meant to
|
- `bin/setup_software`: Configures and launches (if necessary) installed software. *Can be
|
||||||
be customized.*
|
customized.*
|
||||||
|
|
||||||
The `lib` folder provides the base framework for installing, re-installing, and uninstalling
|
The `lib` folder provides the base framework for installing, re-installing, and uninstalling
|
||||||
software. Everything provided via the [macOS Config](https://github.com/bkuhlmann/mac_os-config)
|
software. Everything provided via the [macOS Config](https://github.com/bkuhlmann/mac_os-config)
|
||||||
@@ -160,7 +154,7 @@ project is built upon the functions found in the `lib` folder. See the
|
|||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
|
|
||||||
Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
|
Read [Semantic Versioning](https://semver.org) for details. Briefly, it means:
|
||||||
|
|
||||||
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
|
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
|
||||||
- Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
|
- Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
|
||||||
@@ -177,7 +171,7 @@ Read [CONTRIBUTING](CONTRIBUTING.md) for details.
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Copyright (c) 2016 [Alchemists](https://www.alchemists.io).
|
Copyright 2016 [Alchemists](https://www.alchemists.io).
|
||||||
Read [LICENSE](LICENSE.md) for details.
|
Read [LICENSE](LICENSE.md) for details.
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
|||||||
@@ -5,14 +5,15 @@
|
|||||||
|
|
||||||
# EXECUTION
|
# EXECUTION
|
||||||
printf "macOS Boot Disk Tips\n"
|
printf "macOS Boot Disk Tips\n"
|
||||||
printf " - Use a USB drive (8GB or higher is best).\n"
|
printf " - Use a USB drive (8GB or higher).\n"
|
||||||
printf " - Use Disk Utility to format the USB drive (Use \"Untitled\" for the label).\n"
|
printf " - Use Disk Utility to format the USB drive as \"Mac OS Extended (Journaled)\".\n"
|
||||||
|
printf " - Use Disk Utility to label the USB drive as \"Untitled\".\n"
|
||||||
printf "\nmacOS Boot Disk Usage:\n"
|
printf "\nmacOS Boot Disk Usage:\n"
|
||||||
printf " 1. Insert the USB boot disk into the machine to be upgraded.\n"
|
printf " 1. Insert the USB boot disk into the machine to be upgraded.\n"
|
||||||
printf " 2. Reboot the machine.\n"
|
printf " 2. Reboot the machine.\n"
|
||||||
printf " 3. Hold down the OPTION key before the Apple logo appears.\n"
|
printf " 3. Hold down the OPTION key before the Apple logo appears.\n"
|
||||||
printf " 4. Select the USB boot disk from the menu.\n"
|
printf " 4. Select the USB boot disk from the menu.\n"
|
||||||
printf " 5. Format the machine's internal drive using Disk Utility (choose APFS).\n"
|
printf " 5. Use Disk Utility to format the machine's drive as \"APFS (Encrypted)\".\n"
|
||||||
printf " 6. Install the new operating system.\n"
|
printf " 6. Install the new operating system.\n"
|
||||||
printf "\nmacOS Reinstall:\n"
|
printf "\nmacOS Reinstall:\n"
|
||||||
printf " 1. Click the Apple icon from the operating system main menu.\n"
|
printf " 1. Click the Apple icon from the operating system main menu.\n"
|
||||||
|
|||||||
1
bin/run
1
bin/run
@@ -10,7 +10,6 @@
|
|||||||
source lib/installers.sh
|
source lib/installers.sh
|
||||||
source lib/options.sh
|
source lib/options.sh
|
||||||
source lib/reinstallers.sh
|
source lib/reinstallers.sh
|
||||||
source lib/restorers.sh
|
|
||||||
source lib/settings.sh
|
source lib/settings.sh
|
||||||
source lib/uninstallers.sh
|
source lib/uninstallers.sh
|
||||||
source lib/utilities.sh
|
source lib/utilities.sh
|
||||||
|
|||||||
40
circle.yml
40
circle.yml
@@ -1,7 +1,33 @@
|
|||||||
dependencies:
|
version: 2
|
||||||
pre:
|
jobs:
|
||||||
- gem update --system
|
build:
|
||||||
- gem update bundler
|
working_directory: ~/project
|
||||||
test:
|
docker:
|
||||||
override:
|
- image: circleci/ruby:2.5
|
||||||
- bundle exec rake
|
environment:
|
||||||
|
BUNDLE_JOBS: 3
|
||||||
|
BUNDLE_RETRY: 3
|
||||||
|
BUNDLE_PATH: vendor/bundle
|
||||||
|
EDITOR: vim
|
||||||
|
steps:
|
||||||
|
- checkout
|
||||||
|
|
||||||
|
- type: cache-restore
|
||||||
|
name: Bundler Cache Restore
|
||||||
|
key: bundle-{{ checksum "Gemfile" }}
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Bundler Install
|
||||||
|
command: |
|
||||||
|
gem update --system
|
||||||
|
bundle check || bundle install
|
||||||
|
|
||||||
|
- type: cache-save
|
||||||
|
name: Bundler Cache Store
|
||||||
|
key: bundle-{{ checksum "Gemfile" }}
|
||||||
|
paths:
|
||||||
|
- vendor/bundle
|
||||||
|
|
||||||
|
- run:
|
||||||
|
name: Rake Run
|
||||||
|
command: bundle exec rake
|
||||||
|
|||||||
@@ -3,137 +3,8 @@
|
|||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
# Defines software installer functions.
|
# Defines software installer functions.
|
||||||
|
|
||||||
# Mounts a disk image.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The image path.
|
|
||||||
mount_image() {
|
|
||||||
printf "Mounting image...\n"
|
|
||||||
hdiutil attach -quiet -nobrowse -noautoopen "$1"
|
|
||||||
}
|
|
||||||
export -f mount_image
|
|
||||||
|
|
||||||
# Unmounts a disk image.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The mount path.
|
|
||||||
unmount_image() {
|
|
||||||
printf "Unmounting image...\n"
|
|
||||||
hdiutil detach -force "$1"
|
|
||||||
}
|
|
||||||
export -f unmount_image
|
|
||||||
|
|
||||||
# Downloads an installer to local disk.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The file name.
|
|
||||||
# $3 = The HTTP header.
|
|
||||||
download_installer() {
|
|
||||||
local url="$1"
|
|
||||||
local file_name="$2"
|
|
||||||
local http_header="$3"
|
|
||||||
|
|
||||||
printf "%s\n" "Downloading $1..."
|
|
||||||
clean_work_path
|
|
||||||
mkdir $MAC_OS_WORK_PATH
|
|
||||||
curl --header "$http_header" --location --retry 3 --retry-delay 5 --fail --silent --show-error "$url" >> "$MAC_OS_WORK_PATH/$file_name"
|
|
||||||
}
|
|
||||||
export -f download_installer
|
|
||||||
|
|
||||||
# Downloads an installer to the $HOME/Downloads folder for manual use.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The file name.
|
|
||||||
download_only() {
|
|
||||||
if [[ -e "$HOME/Downloads/$2" ]]; then
|
|
||||||
printf "Downloaded: $2.\n"
|
|
||||||
else
|
|
||||||
printf "Downloading $1...\n"
|
|
||||||
download_installer "$1" "$2"
|
|
||||||
mv "$MAC_OS_WORK_PATH/$2" "$HOME/Downloads"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
export -f download_only
|
|
||||||
|
|
||||||
# Installs a single file.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The install path.
|
|
||||||
install_file() {
|
|
||||||
local file_url="$1"
|
|
||||||
local file_name=$(get_file_name "$1")
|
|
||||||
local install_path="$2"
|
|
||||||
|
|
||||||
if [[ ! -e "$install_path" ]]; then
|
|
||||||
printf "Installing: $install_path...\n"
|
|
||||||
download_installer "$file_url" "$file_name"
|
|
||||||
mkdir -p $(dirname "$install_path")
|
|
||||||
mv "$MAC_OS_WORK_PATH/$file_name" "$install_path"
|
|
||||||
printf "Installed: $file_name.\n"
|
|
||||||
verify_path "$install_path"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
export -f install_file
|
|
||||||
|
|
||||||
# Installs an application.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The application source path.
|
|
||||||
# $2 = The application name.
|
|
||||||
install_app() {
|
|
||||||
local install_root=$(get_install_root "$2")
|
|
||||||
local file_extension=$(get_file_extension "$2")
|
|
||||||
|
|
||||||
printf "Installing: $install_root/$2...\n"
|
|
||||||
|
|
||||||
case $file_extension in
|
|
||||||
'app')
|
|
||||||
cp -a "$1/$2" "$install_root";;
|
|
||||||
'prefPane')
|
|
||||||
sudo cp -pR "$1/$2" "$install_root";;
|
|
||||||
'qlgenerator')
|
|
||||||
sudo cp -pR "$1/$2" "$install_root" && qlmanage -r;;
|
|
||||||
*)
|
|
||||||
printf "ERROR: Unknown file extension: $file_extension.\n"
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
export -f install_app
|
|
||||||
|
|
||||||
# Installs a package.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The package source path.
|
|
||||||
# $2 = The application name.
|
|
||||||
install_pkg() {
|
|
||||||
local install_root=$(get_install_root "$2")
|
|
||||||
|
|
||||||
printf "Installing: $install_root/$2...\n"
|
|
||||||
local package=$(sudo find "$1" -maxdepth 1 -type f -name "*.pkg" -o -name "*.mpkg")
|
|
||||||
sudo installer -pkg "$package" -target /
|
|
||||||
}
|
|
||||||
export -f install_pkg
|
|
||||||
|
|
||||||
# Installs Java.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The volume name.
|
|
||||||
install_java() {
|
|
||||||
local url="$1"
|
|
||||||
local volume_path="/Volumes/$2"
|
|
||||||
local app_name="java"
|
|
||||||
local install_path="/usr/bin/$app_name"
|
|
||||||
local download_file="download.dmg"
|
|
||||||
|
|
||||||
download_installer "$url" "$download_file" "Cookie: oraclelicense=accept-securebackup-cookie"
|
|
||||||
mount_image "$MAC_OS_WORK_PATH/$download_file"
|
|
||||||
local package=$(sudo find "$volume_path" -maxdepth 1 -type f -name "*.pkg")
|
|
||||||
sudo installer -pkg "$package" -target /
|
|
||||||
unmount_image "$volume_path"
|
|
||||||
printf "Installed: $app_name.\n"
|
|
||||||
}
|
|
||||||
export -f install_java
|
|
||||||
|
|
||||||
# Installs an application via a DMG file.
|
# Installs an application via a DMG file.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - URL, $2 (required) - Mount path, $3 (required) - Application name.
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The mount path.
|
|
||||||
# $3 = The application name.
|
|
||||||
install_dmg_app() {
|
install_dmg_app() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local mount_point="/Volumes/$2"
|
local mount_point="/Volumes/$2"
|
||||||
@@ -152,10 +23,7 @@ install_dmg_app() {
|
|||||||
export -f install_dmg_app
|
export -f install_dmg_app
|
||||||
|
|
||||||
# Installs a package via a DMG file.
|
# Installs a package via a DMG file.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - URL, $2 (required) - Mount path, $3 (required) - Application name.
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The mount path.
|
|
||||||
# $3 = The application name.
|
|
||||||
install_dmg_pkg() {
|
install_dmg_pkg() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local mount_point="/Volumes/$2"
|
local mount_point="/Volumes/$2"
|
||||||
@@ -175,9 +43,7 @@ install_dmg_pkg() {
|
|||||||
export -f install_dmg_pkg
|
export -f install_dmg_pkg
|
||||||
|
|
||||||
# Installs an application via a zip file.
|
# Installs an application via a zip file.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - URL, $2 (required) - Application name.
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The application name.
|
|
||||||
install_zip_app() {
|
install_zip_app() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local app_name="$2"
|
local app_name="$2"
|
||||||
@@ -202,10 +68,7 @@ install_zip_app() {
|
|||||||
export -f install_zip_app
|
export -f install_zip_app
|
||||||
|
|
||||||
# Installs an application via a tar file.
|
# Installs an application via a tar file.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - URL, $2 (required) - Application name, $3 (required) - Decompress options.
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The application name.
|
|
||||||
# $3 = The decompress options.
|
|
||||||
install_tar_app() {
|
install_tar_app() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local app_name="$2"
|
local app_name="$2"
|
||||||
@@ -230,9 +93,7 @@ install_tar_app() {
|
|||||||
export -f install_tar_app
|
export -f install_tar_app
|
||||||
|
|
||||||
# Installs a package via a zip file.
|
# Installs a package via a zip file.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - URL, $2 (required) - Application name.
|
||||||
# $1 = The URL.
|
|
||||||
# $2 = The application name.
|
|
||||||
install_zip_pkg() {
|
install_zip_pkg() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local app_name="$2"
|
local app_name="$2"
|
||||||
@@ -256,10 +117,7 @@ install_zip_pkg() {
|
|||||||
export -f install_zip_pkg
|
export -f install_zip_pkg
|
||||||
|
|
||||||
# Installs application code from a Git repository.
|
# Installs application code from a Git repository.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - Repository URL, $2 (required) - Install path, $3 (optional) - Git clone options.
|
||||||
# $1 = Repository URL.
|
|
||||||
# $2 = Install path.
|
|
||||||
# $3 = Git clone options (if any).
|
|
||||||
install_git_app() {
|
install_git_app() {
|
||||||
local repository_url="$1"
|
local repository_url="$1"
|
||||||
local app_name=$(get_file_name "$2")
|
local app_name=$(get_file_name "$2")
|
||||||
@@ -280,11 +138,7 @@ install_git_app() {
|
|||||||
export -f install_git_app
|
export -f install_git_app
|
||||||
|
|
||||||
# Installs settings from a Git repository.
|
# Installs settings from a Git repository.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - Repository URL, $2 (required) - Repository version, $3 (required) - Project directory, $4 (required) - Script to run (including any arguments).
|
||||||
# $1 = The repository URL.
|
|
||||||
# $2 = The repository version.
|
|
||||||
# $3 = The project directory.
|
|
||||||
# $4 = The script to run (including any arguments).
|
|
||||||
install_git_project() {
|
install_git_project() {
|
||||||
local repo_url="$1"
|
local repo_url="$1"
|
||||||
local repo_version="$2"
|
local repo_version="$2"
|
||||||
@@ -294,9 +148,102 @@ install_git_project() {
|
|||||||
git clone "$repo_url"
|
git clone "$repo_url"
|
||||||
(
|
(
|
||||||
cd "$project_dir"
|
cd "$project_dir"
|
||||||
git checkout "$repo_version"
|
git -c advice.detachedHead=false checkout "$repo_version"
|
||||||
eval "$script"
|
eval "$script"
|
||||||
)
|
)
|
||||||
rm -rf "$project_dir"
|
rm -rf "$project_dir"
|
||||||
}
|
}
|
||||||
export -f install_git_project
|
export -f install_git_project
|
||||||
|
|
||||||
|
# Downloads an installer to local disk.
|
||||||
|
# Parameters: $1 (required) - URL, $2 (required) - File name, $3 (required) - HTTP header.
|
||||||
|
download_installer() {
|
||||||
|
local url="$1"
|
||||||
|
local file_name="$2"
|
||||||
|
local http_header="$3"
|
||||||
|
|
||||||
|
printf "%s\n" "Downloading $1..."
|
||||||
|
clean_work_path
|
||||||
|
mkdir $MAC_OS_WORK_PATH
|
||||||
|
curl --header "$http_header" --location --retry 3 --retry-delay 5 --fail --silent --show-error "$url" >> "$MAC_OS_WORK_PATH/$file_name"
|
||||||
|
}
|
||||||
|
export -f download_installer
|
||||||
|
|
||||||
|
# Downloads an installer to the $HOME/Downloads folder for manual use.
|
||||||
|
# Parameters: $1 (required) - URL, $2 (required) - File name.
|
||||||
|
download_only() {
|
||||||
|
if [[ -e "$HOME/Downloads/$2" ]]; then
|
||||||
|
printf "Downloaded: $2.\n"
|
||||||
|
else
|
||||||
|
printf "Downloading $1...\n"
|
||||||
|
download_installer "$1" "$2"
|
||||||
|
mv "$MAC_OS_WORK_PATH/$2" "$HOME/Downloads"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f download_only
|
||||||
|
|
||||||
|
# Installs a single file.
|
||||||
|
# Parameters: $1 (required) - URL, $2 (required) - Install path.
|
||||||
|
install_file() {
|
||||||
|
local file_url="$1"
|
||||||
|
local file_name=$(get_file_name "$1")
|
||||||
|
local install_path="$2"
|
||||||
|
|
||||||
|
if [[ ! -e "$install_path" ]]; then
|
||||||
|
printf "Installing: $install_path...\n"
|
||||||
|
download_installer "$file_url" "$file_name"
|
||||||
|
mkdir -p $(dirname "$install_path")
|
||||||
|
mv "$MAC_OS_WORK_PATH/$file_name" "$install_path"
|
||||||
|
printf "Installed: $file_name.\n"
|
||||||
|
verify_path "$install_path"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f install_file
|
||||||
|
|
||||||
|
# Installs an application.
|
||||||
|
# Parameters: $1 (required) - Application source path, $2 (required) - Application name.
|
||||||
|
install_app() {
|
||||||
|
local install_root=$(get_install_root "$2")
|
||||||
|
local file_extension=$(get_file_extension "$2")
|
||||||
|
|
||||||
|
printf "Installing: $install_root/$2...\n"
|
||||||
|
|
||||||
|
case $file_extension in
|
||||||
|
'app')
|
||||||
|
cp -a "$1/$2" "$install_root";;
|
||||||
|
'prefPane')
|
||||||
|
sudo cp -pR "$1/$2" "$install_root";;
|
||||||
|
'qlgenerator')
|
||||||
|
sudo cp -pR "$1/$2" "$install_root" && qlmanage -r;;
|
||||||
|
*)
|
||||||
|
printf "ERROR: Unknown file extension: $file_extension.\n"
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
export -f install_app
|
||||||
|
|
||||||
|
# Installs a package.
|
||||||
|
# Parameters: $1 (required) - Package source path, $2 (required) - Application name.
|
||||||
|
install_pkg() {
|
||||||
|
local install_root=$(get_install_root "$2")
|
||||||
|
|
||||||
|
printf "Installing: $install_root/$2...\n"
|
||||||
|
local package=$(sudo find "$1" -maxdepth 1 -type f -name "*.pkg" -o -name "*.mpkg")
|
||||||
|
sudo installer -pkg "$package" -target /
|
||||||
|
}
|
||||||
|
export -f install_pkg
|
||||||
|
|
||||||
|
# Mounts a disk image.
|
||||||
|
# Parameters: $1 (required) - Image path.
|
||||||
|
mount_image() {
|
||||||
|
printf "Mounting image...\n"
|
||||||
|
hdiutil attach -quiet -nobrowse -noautoopen "$1"
|
||||||
|
}
|
||||||
|
export -f mount_image
|
||||||
|
|
||||||
|
# Unmounts a disk image.
|
||||||
|
# Parameters: $1 (required) - Mount path.
|
||||||
|
unmount_image() {
|
||||||
|
printf "Unmounting image...\n"
|
||||||
|
hdiutil detach -force "$1"
|
||||||
|
}
|
||||||
|
export -f unmount_image
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
# Defines command line prompt options.
|
# Defines command line prompt options.
|
||||||
|
|
||||||
# Process option selection.
|
# Process option selection.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - The option to process.
|
||||||
# $1 = The option to process.
|
|
||||||
process_option() {
|
process_option() {
|
||||||
case $1 in
|
case $1 in
|
||||||
'B')
|
'B')
|
||||||
@@ -43,7 +42,9 @@ process_option() {
|
|||||||
'R')
|
'R')
|
||||||
bin/restore_backup;;
|
bin/restore_backup;;
|
||||||
'c')
|
'c')
|
||||||
verify_homebrews
|
verify_homebrew_formulas
|
||||||
|
verify_homebrew_casks
|
||||||
|
verify_app_store_applications
|
||||||
verify_applications
|
verify_applications
|
||||||
verify_extensions;;
|
verify_extensions;;
|
||||||
'C')
|
'C')
|
||||||
|
|||||||
@@ -1,31 +0,0 @@
|
|||||||
#! /usr/bin/env bash
|
|
||||||
|
|
||||||
# DESCRIPTION
|
|
||||||
# Defines software restore functions.
|
|
||||||
|
|
||||||
# Label: Restore Preference
|
|
||||||
# Description: Restores an application preference.
|
|
||||||
# Parameters: $1 (required) - The backup volume root path, $2 (required) - The preference file.
|
|
||||||
restore_preference() {
|
|
||||||
local backup_root="$1"
|
|
||||||
local preference_file="$2"
|
|
||||||
local backup_path="$backup_root/Users/$USER/Library/Preferences/$preference_file"
|
|
||||||
local restore_root="$HOME/Library/Preferences"
|
|
||||||
|
|
||||||
cp -p "$backup_path" "$restore_root"
|
|
||||||
}
|
|
||||||
export -f restore_preference
|
|
||||||
|
|
||||||
# Label: Restore Application Support
|
|
||||||
# Description: Restores application support files.
|
|
||||||
# Parameters: $1 (required) - The backup volume root path, $2 required - The application name.
|
|
||||||
restore_app_support() {
|
|
||||||
local backup_root="$1"
|
|
||||||
local app_name="$2"
|
|
||||||
local backup_path="$backup_root/Users/$USER/Library/Application Support/$app_name"
|
|
||||||
local restore_path="$HOME/Library/Application Support"
|
|
||||||
|
|
||||||
mkdir -p "$restore_path"
|
|
||||||
cp -pR "$backup_path" "$restore_path"
|
|
||||||
}
|
|
||||||
export -f restore_app_support
|
|
||||||
@@ -3,55 +3,8 @@
|
|||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
# Defines general utility functions.
|
# Defines general utility functions.
|
||||||
|
|
||||||
# Answers the file name.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The file path.
|
|
||||||
get_file_name() {
|
|
||||||
printf "${1##*/}" # Answers file or directory name.
|
|
||||||
}
|
|
||||||
export -f get_file_name
|
|
||||||
|
|
||||||
# Answers the file extension.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The file name.
|
|
||||||
get_file_extension() {
|
|
||||||
local name=$(get_file_name "$1")
|
|
||||||
local extension="${1##*.}" # Excludes dot.
|
|
||||||
|
|
||||||
if [[ "$name" == "$extension" ]]; then
|
|
||||||
printf ''
|
|
||||||
else
|
|
||||||
printf "$extension"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
export -f get_file_extension
|
|
||||||
|
|
||||||
# Answers the root install path for file name.
|
|
||||||
# Parameters:
|
|
||||||
# $1 = The file name.
|
|
||||||
get_install_root() {
|
|
||||||
local file_name="$1"
|
|
||||||
local file_extension=$(get_file_extension "$file_name")
|
|
||||||
|
|
||||||
# Dynamically build the install path based on file extension.
|
|
||||||
case $file_extension in
|
|
||||||
'')
|
|
||||||
printf "/usr/local/bin";;
|
|
||||||
'app')
|
|
||||||
printf "/Applications";;
|
|
||||||
'prefPane')
|
|
||||||
printf "/Library/PreferencePanes";;
|
|
||||||
'qlgenerator')
|
|
||||||
printf "/Library/QuickLook";;
|
|
||||||
*)
|
|
||||||
printf "/tmp/unknown";;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
export -f get_install_root
|
|
||||||
|
|
||||||
# Answers the full install path (including file name) for file name.
|
# Answers the full install path (including file name) for file name.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - The file name.
|
||||||
# $1 = The file name.
|
|
||||||
get_install_path() {
|
get_install_path() {
|
||||||
local file_name="$1"
|
local file_name="$1"
|
||||||
local install_path=$(get_install_root "$file_name")
|
local install_path=$(get_install_root "$file_name")
|
||||||
@@ -77,3 +30,46 @@ caffeinate_machine() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
export -f caffeinate_machine
|
export -f caffeinate_machine
|
||||||
|
|
||||||
|
# Answers the root install path for file name.
|
||||||
|
# Parameters: $1 (required) - The file name.
|
||||||
|
get_install_root() {
|
||||||
|
local file_name="$1"
|
||||||
|
local file_extension=$(get_file_extension "$file_name")
|
||||||
|
|
||||||
|
# Dynamically build the install path based on file extension.
|
||||||
|
case $file_extension in
|
||||||
|
'')
|
||||||
|
printf "/usr/local/bin";;
|
||||||
|
'app')
|
||||||
|
printf "/Applications";;
|
||||||
|
'prefPane')
|
||||||
|
printf "/Library/PreferencePanes";;
|
||||||
|
'qlgenerator')
|
||||||
|
printf "/Library/QuickLook";;
|
||||||
|
*)
|
||||||
|
printf "/tmp/unknown";;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
export -f get_install_root
|
||||||
|
|
||||||
|
# Answers the file extension.
|
||||||
|
# Parameters: $1 (required) - The file name.
|
||||||
|
get_file_extension() {
|
||||||
|
local name=$(get_file_name "$1")
|
||||||
|
local extension="${1##*.}" # Excludes dot.
|
||||||
|
|
||||||
|
if [[ "$name" == "$extension" ]]; then
|
||||||
|
printf ''
|
||||||
|
else
|
||||||
|
printf "$extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f get_file_extension
|
||||||
|
|
||||||
|
# Answers the file name.
|
||||||
|
# Parameters: $1 (required) - The file path.
|
||||||
|
get_file_name() {
|
||||||
|
printf "${1##*/}" # Answers file or directory name.
|
||||||
|
}
|
||||||
|
export -f get_file_name
|
||||||
|
|||||||
122
lib/verifiers.sh
122
lib/verifiers.sh
@@ -3,22 +3,9 @@
|
|||||||
# DESCRIPTION
|
# DESCRIPTION
|
||||||
# Defines verification/validation functions.
|
# Defines verification/validation functions.
|
||||||
|
|
||||||
# Verifies Homebrew software exists.
|
# Checks for missing Homebrew formulas.
|
||||||
# Parameters:
|
verify_homebrew_formulas() {
|
||||||
# $1 = The file name.
|
printf "Checking Homebrew formulas...\n"
|
||||||
verify_homebrew() {
|
|
||||||
local application="$1"
|
|
||||||
local applications="$2"
|
|
||||||
|
|
||||||
if [[ "${applications[*]}" != *"$application"* ]]; then
|
|
||||||
printf " - Missing: $application\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
export -f verify_homebrew
|
|
||||||
|
|
||||||
# Checks for missing Homebrew software.
|
|
||||||
verify_homebrews() {
|
|
||||||
printf "Checking Homebrew software...\n"
|
|
||||||
|
|
||||||
local applications="$(brew list)"
|
local applications="$(brew list)"
|
||||||
|
|
||||||
@@ -37,28 +24,72 @@ verify_homebrews() {
|
|||||||
application="mercurial"
|
application="mercurial"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
verify_homebrew "$application" "${applications[*]}"
|
verify_listed_application "$application" "${applications[*]}"
|
||||||
fi
|
fi
|
||||||
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew"
|
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_formulas"
|
||||||
|
|
||||||
printf "Homebrew check complete.\n"
|
printf "Homebrew formula check complete.\n"
|
||||||
}
|
}
|
||||||
export -f verify_homebrews
|
export -f verify_homebrew_formulas
|
||||||
|
|
||||||
# Verifies application exists.
|
# Checks for missing Homebrew casks.
|
||||||
# Parameters:
|
verify_homebrew_casks() {
|
||||||
# $1 = The file name.
|
printf "\nChecking Homebrew casks...\n"
|
||||||
verify_application() {
|
|
||||||
local file_name="$1"
|
|
||||||
|
|
||||||
# Display the missing install if not found.
|
local applications="$(brew cask list)"
|
||||||
local install_path=$(get_install_path "$file_name")
|
|
||||||
|
|
||||||
if [[ ! -e "$install_path" ]]; then
|
while read line; do
|
||||||
printf " - Missing: $file_name\n"
|
# Skip blank or comment lines.
|
||||||
|
if [[ "$line" == "brew cask install"* ]]; then
|
||||||
|
local application=$(printf "$line" | awk '{print $4}')
|
||||||
|
|
||||||
|
# Skip: Only necessary for the purpose of licensing system preference.
|
||||||
|
if [[ "$application" == "witch" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Skip: Bug with Homebrew Cask as these apps never show up as installed.
|
||||||
|
if [[ "$application" == "skitch" || "$application" == "openemu" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
verify_listed_application "$application" "${applications[*]}"
|
||||||
|
fi
|
||||||
|
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_casks"
|
||||||
|
|
||||||
|
printf "Homebrew cask check complete.\n"
|
||||||
|
}
|
||||||
|
export -f verify_homebrew_casks
|
||||||
|
|
||||||
|
# Checks for missing App Store applications.
|
||||||
|
verify_app_store_applications() {
|
||||||
|
printf "\nChecking App Store applications...\n"
|
||||||
|
|
||||||
|
local applications="$(mas list)"
|
||||||
|
|
||||||
|
while read line; do
|
||||||
|
# Skip blank or comment lines.
|
||||||
|
if [[ "$line" == "mas install"* ]]; then
|
||||||
|
local application=$(printf "$line" | awk '{print $3}')
|
||||||
|
verify_listed_application "$application" "${applications[*]}"
|
||||||
|
fi
|
||||||
|
done < "$MAC_OS_CONFIG_PATH/bin/install_app_store"
|
||||||
|
|
||||||
|
printf "App Store check complete.\n"
|
||||||
|
}
|
||||||
|
export -f verify_app_store_applications
|
||||||
|
|
||||||
|
# Verifies listed application exists.
|
||||||
|
# Parameters: $1 (required) - The current application, $2 (required) - The application list.
|
||||||
|
verify_listed_application() {
|
||||||
|
local application="$1"
|
||||||
|
local applications="$2"
|
||||||
|
|
||||||
|
if [[ "${applications[*]}" != *"$application"* ]]; then
|
||||||
|
printf " - Missing: $application\n"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
export -f verify_application
|
export -f verify_listed_application
|
||||||
|
|
||||||
# Checks for missing applications suffixed by "APP_NAME" as defined in settings.sh.
|
# Checks for missing applications suffixed by "APP_NAME" as defined in settings.sh.
|
||||||
verify_applications() {
|
verify_applications() {
|
||||||
@@ -77,18 +108,19 @@ verify_applications() {
|
|||||||
}
|
}
|
||||||
export -f verify_applications
|
export -f verify_applications
|
||||||
|
|
||||||
# Verifies path exists.
|
# Verifies application exists.
|
||||||
# Parameters:
|
# Parameters: $1 (required) - The file name.
|
||||||
# $1 = The path.
|
verify_application() {
|
||||||
verify_path() {
|
local file_name="$1"
|
||||||
local path="$1"
|
|
||||||
|
|
||||||
# Display the missing path if not found.
|
# Display the missing install if not found.
|
||||||
if [[ ! -e "$path" ]]; then
|
local install_path=$(get_install_path "$file_name")
|
||||||
printf " - Missing: $path\n"
|
|
||||||
|
if [[ ! -e "$install_path" ]]; then
|
||||||
|
printf " - Missing: $file_name\n"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
export -f verify_path
|
export -f verify_application
|
||||||
|
|
||||||
# Checks for missing extensions suffixed by "EXTENSION_PATH" as defined in settings.sh.
|
# Checks for missing extensions suffixed by "EXTENSION_PATH" as defined in settings.sh.
|
||||||
verify_extensions() {
|
verify_extensions() {
|
||||||
@@ -106,3 +138,15 @@ verify_extensions() {
|
|||||||
printf "Application extension check complete.\n"
|
printf "Application extension check complete.\n"
|
||||||
}
|
}
|
||||||
export -f verify_extensions
|
export -f verify_extensions
|
||||||
|
|
||||||
|
# Verifies path exists.
|
||||||
|
# Parameters: $1 (required) - The path.
|
||||||
|
verify_path() {
|
||||||
|
local path="$1"
|
||||||
|
|
||||||
|
# Display the missing path if not found.
|
||||||
|
if [[ ! -e "$path" ]]; then
|
||||||
|
printf " - Missing: $path\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f verify_path
|
||||||
|
|||||||
Reference in New Issue
Block a user