Compare commits

...

12 Commits
1.0.0 ... 1.3.0

Author SHA1 Message Date
Brooke Kuhlmann
d9440953ac Added version release changes. 2017-01-01 15:22:20 -07:00
Brooke Kuhlmann
8528e0ff01 Removed CHANGELOG.md (use CHANGES.md instead).
- Simplifies the name since "Log" is implied and is one of the three
  common file names for this type of information: CHANGELOG.md,
  CHANGES.md, and HISTORY.md

[ci skip]
2016-10-18 14:23:38 -06:00
Brooke Kuhlmann
7db6835173 Updated README versioning documentation.
[ci skip]
2016-10-16 11:44:39 -06:00
Brooke Kuhlmann
7fc9304834 Added version release changes. 2016-10-12 11:44:48 -06:00
Brooke Kuhlmann
b6e9f38bac Added screencast to README.
- Provides additional usage via the CLI.
2016-10-12 11:42:11 -06:00
Brooke Kuhlmann
3320a8d027 Fixed reinstaller path issues with application and extension scripts.
- These reinstallers were not making use of the new `bin` scripts.
2016-10-12 11:28:48 -06:00
Brooke Kuhlmann
2b54537acb Added version release changes. 2016-10-11 16:58:15 -06:00
Brooke Kuhlmann
d546d79759 Added script hooks for unfinished custom configurations.
- These scripts default to calling out to scripts of the same name as
  defined by the custom configuration project (i.e.
  `$MAC_OS_CONFIG_PATH`).
- This helps ensure the scripts in this project can be run
  appropriately even if the custom configuration project hasn't fully
  implemented all scripts yet.
- This also helps illustrate what scripts are necessary when creating a
  custom configuration.
2016-10-11 16:31:47 -06:00
Brooke Kuhlmann
57e20929b3 Added script hook for App Store software install.
- Allows for the automation of Mac App Store software via the
  [Mac App Store CLI](https://github.com/mas-cli/mas) app.
- See [macOS Config](https://github.com/bkuhlmann/mac_os-config) for
  usage.
2016-10-11 11:54:20 -06:00
Brooke Kuhlmann
d45be4e61d Fixed verification of Homebrew application installs.
- Was pointing to the incorrect macOS Config path now that
  the base macOS scripts and macOS configuration files have been
  split into two projects.
2016-10-11 10:41:11 -06:00
Brooke Kuhlmann
8fbf63a783 Fixed Bash script header to dynamically load correct environment.
- Improves loading of the correct Bash environment/version, especially
  on systems that might not be using a standard install (i.e.
  Homebrew), by loading a version of Bash as defined by the environment
  rather than a hard coded path.

[ci skip]
2016-10-10 09:37:54 -06:00
Brooke Kuhlmann
d03c461739 Updated and clarified README documentation. 2016-10-06 08:37:42 -06:00
22 changed files with 260 additions and 57 deletions

View File

@@ -1,3 +0,0 @@
# v1.0.0 (2016-10-05)
- Initial version.

21
CHANGES.md Normal file
View File

@@ -0,0 +1,21 @@
# v1.3.0 (2017-01-01)
- Updated README versioning documentation.
- Removed CHANGELOG.md (use CHANGES.md instead).
# v1.2.0 (2016-10-12)
- Fixed reinstaller path issues with application and extension scripts.
- Added screencast to README.
# v1.1.0 (2016-10-11)
- Fixed Bash script header to dynamically load correct environment.
- Fixed verification of Homebrew application installs.
- Added script hook for App Store software install.
- Added script hooks for unfinished custom configurations.
- Updated and clarified README documentation.
# v1.0.0 (2016-10-05)
- Initial version.

View File

@@ -2,15 +2,27 @@
[![Patreon](https://img.shields.io/badge/patreon-donate-brightgreen.svg)](https://www.patreon.com/bkuhlmann) [![Patreon](https://img.shields.io/badge/patreon-donate-brightgreen.svg)](https://www.patreon.com/bkuhlmann)
Shell scripts for automated macOS machine setup. This project provides the foundational tooling for Shell scripts for automated macOS machine setup.
automated macOS machine setup. To customize further see the companion
[macOS Config](https://github.com/bkuhlmann/mac_os-config) project for details. This project is a framework for automating the setup of a macOS machine. In order to illustrate the
potential of what this project can do, please see the companion
[macOS Config](https://github.com/bkuhlmann/mac_os-config) project for details. The *macOS Config*
project is an opinionated configuration which meets the needs of my development environment but is
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:
- **macOS** (this project) - Foundation and framework for building customizated macOS machine
setups.
- **[macOS Config](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 to be
forked for as many custom machine setups as needed.
<!-- Tocer[start]: Auto-generated, don't remove. --> <!-- Tocer[start]: Auto-generated, don't remove. -->
# Table of Contents # Table of Contents
- [Features](#features) - [Features](#features)
- [Screencast](#screencast)
- [Requirements](#requirements) - [Requirements](#requirements)
- [Setup](#setup) - [Setup](#setup)
- [Usage](#usage) - [Usage](#usage)
@@ -26,18 +38,29 @@ automated macOS machine setup. To customize further see the companion
# Features # Features
- Provides a command line interface for installation and management of macOS software. - Provides a command line interface, written in Bash with no additional dependencies, for
- Downloads and installs development tooling (required by Homebrew): installation and management of a macOS machine.
- Supports macOS boot disk creation for setting up a machine with a fresh install of the operation
system.
- 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)
- Downloads, installs, and configures [Homebrew](http://brew.sh) command line software. - Downloads, installs, and configures [Homebrew](http://brew.sh) command line software.
- Downloads, installs, and configures software applications generally not in the - Downloads, installs, and configures
[App Store](http://www.apple.com/macosx/whats-new/app-store.html). [App Store](http://www.apple.com/macosx/whats-new/app-store.html) software.
- Downloads, installs, and configures software extensions. - Downloads, installs, and configures non-App Store software applications.
- Downloads, installs, and configures software application extensions.
- Applies basic and default software settings.
- Sets up and configures installed software for use.
- Supports restoration of machine backups.
# Screencast
[![asciicast](https://asciinema.org/a/88971.png)](https://asciinema.org/a/88971)
# Requirements # Requirements
0. [macOS](https://www.apple.com/macos) (with latest software updates applied) 0. [macOS Sierra](https://www.apple.com/macos) (with latest software updates applied)
0. [Xcode](https://developer.apple.com/xcode) (with accepted license agreement) 0. [Xcode](https://developer.apple.com/xcode) (with accepted license agreement)
# Setup # Setup
@@ -49,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 v1.0.0 git checkout v1.3.0
Master Version (unstable): Master Version (unstable):
@@ -67,12 +90,13 @@ You will be presented with the following options:
Boot: Boot:
B: Create boot disk. B: Create boot disk.
Install: Install:
b: Apply basic system settings. b: Apply basic settings.
t: Install development tools. t: Install development tools.
h: Install Homebrew software. h: Install Homebrew software.
m: Install Mac App Store software.
a: Install application software. a: Install application software.
x: Install application software extensions. x: Install application software extensions.
d: Apply software defaults. d: Apply default settings.
s: Setup installed software. s: Setup installed software.
i: Install everything (i.e. executes all install options). i: Install everything (i.e. executes all install options).
Restore: Restore:
@@ -91,8 +115,8 @@ Choose option `i` to run all install options or select a specific option to run
Each option is designed to be re-run if necessary. This can also be handy for performing upgrades, Each 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 run.sh script. For The option prompt can be skipped by passing the desired option directly to the `bin/run` script. For
example, executing `./run.sh i` will execute the complete software install process. example, executing `bin/run i` will execute the complete software 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.
@@ -102,27 +126,40 @@ in order to manage installed software and benefit from future upgrades.
## Customization ## Customization
Global settings can be configured via the following script: All executable scripts can be found in the `bin` folder:
- `lib/settings.sh` - `bin/apply_basic_settings`: Applies basic, initial, settings for setting up a machine. *This is
meant to be customized.*
- `bin/apply_default_settings`: Applies useful system and application defaults. *This is meant to be
customized.*
- `bin/create_boot_disk`: Creates macOS boot disk.
- `bin/install_app_store`: Installs macOS, GUI-based, App Store applications. *This is meant to be
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_extensions`: Installs macOS application extensions and add-ons. *This is meant to be
customized.*
- `bin/install_homebrew`: Installs Homebrew managed software. *This is meant to 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/setup_software`: Configures and launches (if necessary) installed software. *This is meant to
be customized.*
All script programs can be found in the `bin` folder: The `lib` folder provides the base framework for installing, re-installing, and uninstalling
- `bin/create_boot_disk` = Creates macOS boot disk.
- `bin/install_dev_tools` = Installs macOS development tools required by Homebrew.
- `bin/run` - The main script and interface for macOS setup.
The `lib` folder provides foundational functions 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)
project is built upon the functions found in the `lib` folder. See the project is built upon the functions found in the `lib` folder. See the
[macOS Config](https://github.com/bkuhlmann/mac_os-config) project for further details. [macOS Config](https://github.com/bkuhlmann/mac_os-config) project for further details.
- `lib/settings.sh`: Defines global settings for software applications, extensions, etc.
# Versioning # Versioning
Read [Semantic Versioning](http://semver.org) for details. Briefly, it means: Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes. - Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes. - Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
- Major (X.y.z) - Incremented for any backwards incompatible public API changes. - Major (X.y.z) - Incremented for any backwards incompatible public API changes.
# Code of Conduct # Code of Conduct
@@ -137,11 +174,11 @@ Read [CONTRIBUTING](CONTRIBUTING.md) for details.
# License # License
Copyright (c) 2016 [Alchemists](https://www.alchemists.io). Copyright (c) 2016 [Alchemists](https://www.alchemists.io).
Read the [LICENSE](LICENSE.md) for details. Read [LICENSE](LICENSE.md) for details.
# History # History
Read the [CHANGELOG](CHANGELOG.md) for details. Read [CHANGES](CHANGES.md) for details.
Built with [Bashsmith](https://github.com/bkuhlmann/bashsmith). Built with [Bashsmith](https://github.com/bkuhlmann/bashsmith).
# Credits # Credits

18
bin/apply_basic_settings Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Applies basic system settings.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/apply_basic_settings"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Basic settings script does not exist or is not executable.\n"
fi

18
bin/apply_default_settings Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Applies default settings.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/apply_default_settings"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Default settings script does not exist or is not executable.\n"
fi

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Creates macOS boot disk. # Creates macOS boot disk.

18
bin/install_app_store Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Installs App Store software.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_app_store"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: App Store install script does not exist or is not executable.\n"
fi

18
bin/install_applications Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Installs applications.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_applications"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Applications install script does not exist or is not executable.\n"
fi

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Installs development tooling requirements. # Installs development tooling requirements.

18
bin/install_extensions Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Installs application extensions.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_extensions"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Application extensions install script does not exist or is not executable.\n"
fi

18
bin/install_homebrew Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Installs Homebrew software.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_homebrew"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Homebrew install script does not exist or is not executable.\n"
fi

18
bin/restore_backup Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Performs restoration of backup data.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/restore_backup"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Restore backup script does not exist or is not executable.\n"
fi

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Executes the command line interface. # Executes the command line interface.
@@ -40,6 +40,7 @@ while true; do
printf " b: Apply basic settings.\n" printf " b: Apply basic settings.\n"
printf " t: Install development tools.\n" printf " t: Install development tools.\n"
printf " h: Install Homebrew software.\n" printf " h: Install Homebrew software.\n"
printf " m: Install Mac App Store software.\n"
printf " a: Install application software.\n" printf " a: Install application software.\n"
printf " x: Install application software extensions.\n" printf " x: Install application software extensions.\n"
printf " d: Apply default settings.\n" printf " d: Apply default settings.\n"

18
bin/setup_software Executable file
View File

@@ -0,0 +1,18 @@
#! /usr/bin/env bash
# DESCRIPTION
# Sets up and launches (if necessary) installed software.
# SETTINGS
set -o nounset
set -o errexit
set -o pipefail
IFS=$'\n\t'
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/setup_software"
# EXECUTION
if [[ -x "$SCRIPT_PATH" ]]; then
"$SCRIPT_PATH"
else
printf "WARNING: Software setup script does not exist or is not executable.\n"
fi

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines software installer functions. # Defines software installer functions.

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines command line prompt options. # Defines command line prompt options.
@@ -11,31 +11,34 @@ process_option() {
'B') 'B')
bin/create_boot_disk;; bin/create_boot_disk;;
'b') 'b')
"$MAC_OS_CONFIG_PATH/bin/apply_basic_settings";; bin/apply_basic_settings;;
't') 't')
bin/install_dev_tools;; bin/install_dev_tools;;
'h') 'h')
"$MAC_OS_CONFIG_PATH/bin/install_homebrew";; bin/install_homebrew;;
'm')
bin/install_app_store;;
'a') 'a')
"$MAC_OS_CONFIG_PATH/bin/install_applications";; bin/install_applications;;
'x') 'x')
"$MAC_OS_CONFIG_PATH/bin/install_extensions";; bin/install_extensions;;
'd') 'd')
"$MAC_OS_CONFIG_PATH/bin/apply_default_settings";; bin/apply_default_settings;;
's') 's')
"$MAC_OS_CONFIG_PATH/bin/setup_software";; bin/setup_software;;
'i') 'i')
caffeinate_machine caffeinate_machine
"$MAC_OS_CONFIG_PATH/bin/apply_basic_settings" bin/apply_basic_settings
bin/install_dev_tools bin/install_dev_tools
"$MAC_OS_CONFIG_PATH/bin/install_homebrew" bin/install_homebrew
"$MAC_OS_CONFIG_PATH/bin/install_applications" bin/install_app_store
"$MAC_OS_CONFIG_PATH/bin/install_extensions" bin/install_applications
"$MAC_OS_CONFIG_PATH/bin/apply_default_settings" bin/install_extensions
"$MAC_OS_CONFIG_PATH/bin/setup_software" bin/apply_default_settings
bin/setup_software
clean_work_path;; clean_work_path;;
'R') 'R')
"$MAC_OS_CONFIG_PATH/bin/restore_backup";; bin/restore_backup;;
'c') 'c')
verify_homebrews verify_homebrews
verify_applications verify_applications

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines reinstall functions. # Defines reinstall functions.
@@ -6,13 +6,13 @@
# Reinstall application. # Reinstall application.
reinstall_application() { reinstall_application() {
uninstall_application uninstall_application
scripts/applications.sh bin/install_applications
} }
export -f reinstall_application export -f reinstall_application
# Reinstall extension. # Reinstall extension.
reinstall_extension() { reinstall_extension() {
uninstall_extension uninstall_extension
scripts/extensions.sh bin/install_extensions
} }
export -f reinstall_extension export -f reinstall_extension

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines software restore functions. # Defines software restore functions.

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines global settings. # Defines global settings.

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines uninstall functions. # Defines uninstall functions.

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines general utility functions. # Defines general utility functions.

View File

@@ -1,4 +1,4 @@
#! /bin/bash #! /usr/bin/env bash
# DESCRIPTION # DESCRIPTION
# Defines verification/validation functions. # Defines verification/validation functions.
@@ -39,7 +39,7 @@ verify_homebrews() {
verify_homebrew "$application" "${applications[*]}" verify_homebrew "$application" "${applications[*]}"
fi fi
done < "$PWD/scripts/homebrew.sh" done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew"
printf "Homebrew check complete.\n" printf "Homebrew check complete.\n"
} }