Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
45a6c5d1b0 | ||
|
|
1bb6ef39a5 | ||
|
|
1416aa2f0a | ||
|
|
b6cddae599 | ||
|
|
e533bf04be | ||
|
|
5455a76d14 | ||
|
|
5569fdb345 | ||
|
|
8f2173c938 | ||
|
|
4f1ed26934 | ||
|
|
b7c89266f6 | ||
|
|
09025fd976 | ||
|
|
a97de70b65 | ||
|
|
1d75357a18 | ||
|
|
3c78a1cbf0 | ||
|
|
3158d024df | ||
|
|
62295d0851 | ||
|
|
34f7dad25d | ||
|
|
e8101bbb3b | ||
|
|
3f9eaf969d | ||
|
|
75e9401ff3 | ||
|
|
413d4a65fe | ||
|
|
5dbed92f89 | ||
|
|
97893843de | ||
|
|
9a37f06826 | ||
|
|
50b9edd7f7 | ||
|
|
1769a8234a | ||
|
|
788aec169a | ||
|
|
0ad8cc432c |
15
.github/ISSUE_TEMPLATE.md
vendored
15
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,11 +1,14 @@
|
|||||||
## Overview
|
## Overview
|
||||||
<!-- Required. Describe, in detail, the behavior experienced and what is desired. -->
|
<!-- Required. Describe, briefly, the behavior experienced. -->
|
||||||
|
|
||||||
## Steps to Recreate
|
|
||||||
<!-- Optional. List exact steps (numbered list) to reproduce errant behavior. Delete if unused. -->
|
|
||||||
|
|
||||||
## Screenshots/Screencasts
|
## Screenshots/Screencasts
|
||||||
<!-- Optional. Attach screenshot/screencast(s) that demo the behavior. Delete if unused. -->
|
<!-- Optional. Attach screenshot(s) and/or screencast(s) that demo the behavior. -->
|
||||||
|
|
||||||
|
## Steps to Recreate
|
||||||
|
<!-- Required. List exact steps (numbered list) to reproduce errant behavior. -->
|
||||||
|
|
||||||
|
## Desired Behavior
|
||||||
|
<!-- Required. Describe the behavior you'd like to see or your idea of a proposed solution. -->
|
||||||
|
|
||||||
## Environment
|
## Environment
|
||||||
<!-- Optional. What is your operating system, software version(s), etc. Delete if unused. -->
|
<!-- Required. What is your operating system, software version(s), etc. -->
|
||||||
|
|||||||
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
16
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,11 +1,11 @@
|
|||||||
## Overview
|
## Overview
|
||||||
<!-- Required. Why is this important/necessary? -->
|
<!-- Required. Why is this important/necessary and what is the overarching architecture. -->
|
||||||
|
|
||||||
## Details
|
|
||||||
<!-- Optional. List the key features/highlights as bullet points. Delete if unused. -->
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
<!-- Optional. List additional notes/references as bullet points. Delete if unused. -->
|
|
||||||
|
|
||||||
## Screenshots/Screencasts
|
## Screenshots/Screencasts
|
||||||
<!-- Optional. Provide supporting image/video. Delete if unused. -->
|
<!-- Optional. Provide supporting image/video. -->
|
||||||
|
|
||||||
|
## Details
|
||||||
|
<!-- Optional. List the key features/highlights as bullet points. -->
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
<!-- Optional. List additional notes/references as bullet points. -->
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
2.7.0
|
2.7.2
|
||||||
|
|||||||
197
CHANGES.adoc
Normal file
197
CHANGES.adoc
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
= Changes
|
||||||
|
|
||||||
|
== 10.0.0 (2020-11-15)
|
||||||
|
|
||||||
|
* Added macOS Big Sur support
|
||||||
|
* Updated project documentation to conform to Rubysmith template
|
||||||
|
* Updated to Git Lint 1.3.0
|
||||||
|
* Updated to Ruby 2.7.2
|
||||||
|
|
||||||
|
== 9.0.0 (2020-09-12)
|
||||||
|
|
||||||
|
* Fixed Homebrew cask verifier deprecation warning
|
||||||
|
* Removed Homebrew Mecurial formula verification check
|
||||||
|
* Removed unnecessary verifier code comments
|
||||||
|
* Refactored utility basename and extension utilities
|
||||||
|
|
||||||
|
== 8.2.0 (2020-07-22)
|
||||||
|
|
||||||
|
* Fixed project requirements
|
||||||
|
* Fixed screencast image URL
|
||||||
|
* Updated GitHub templates
|
||||||
|
* Updated README credit URL
|
||||||
|
* Updated README screencast URL
|
||||||
|
* Updated README screencast cover to SVG format
|
||||||
|
* Updated to Git Lint 1.0.0
|
||||||
|
* Refactored Rakefile requirements
|
||||||
|
|
||||||
|
== 8.1.0 (2020-04-01)
|
||||||
|
|
||||||
|
* Added README production and development setup instructions
|
||||||
|
* Updated Circle CI build label
|
||||||
|
* Updated README screencast to use larger image
|
||||||
|
* Updated documentation to ASCII Doc format
|
||||||
|
* Updated to Code of Conduct 2.0.0
|
||||||
|
* Updated to Git Cop 4.0.0
|
||||||
|
* Updated to Ruby 2.7.1
|
||||||
|
* Removed README images
|
||||||
|
|
||||||
|
== 8.0.1 (2020-01-01)
|
||||||
|
|
||||||
|
* Added Startup Security Utility to README.
|
||||||
|
* Updated README screencast.
|
||||||
|
* Updated to Ruby 2.7.0.
|
||||||
|
* Refactored caffeinate machine function to process grep.
|
||||||
|
|
||||||
|
== 8.0.0 (2019-10-12)
|
||||||
|
|
||||||
|
* Updated to Rake 13.0.0.
|
||||||
|
* Updated to Ruby 2.6.5.
|
||||||
|
* Updated to macOS Catalina.
|
||||||
|
|
||||||
|
== 7.2.1 (2019-09-01)
|
||||||
|
|
||||||
|
* Updated README screencast tutorial.
|
||||||
|
* Updated to Ruby 2.6.4.
|
||||||
|
|
||||||
|
== 7.2.0 (2019-08-01)
|
||||||
|
|
||||||
|
* Added file install function.
|
||||||
|
|
||||||
|
== 7.1.2 (2019-06-01)
|
||||||
|
|
||||||
|
* Updated contributing documentation.
|
||||||
|
* Updated to Git Cop 3.5.0.
|
||||||
|
|
||||||
|
== 7.1.1 (2019-05-01)
|
||||||
|
|
||||||
|
* Added project icon to README.
|
||||||
|
* Updated to Ruby 2.6.3.
|
||||||
|
|
||||||
|
== 7.1.0 (2019-04-01)
|
||||||
|
|
||||||
|
* Added XCode installer fix to troubleshooting section.
|
||||||
|
* Updated to Ruby 2.6.1.
|
||||||
|
* Updated to Ruby 2.6.2.
|
||||||
|
|
||||||
|
== 7.0.0 (2019-01-01)
|
||||||
|
|
||||||
|
* Fixed Circle CI cache for Ruby version.
|
||||||
|
* Fixed installation of apps with no extension.
|
||||||
|
* Fixed program installs.
|
||||||
|
* Added Circle CI Bundler cache.
|
||||||
|
* Added README boot disk documentation.
|
||||||
|
* Added README troubleshooting section.
|
||||||
|
* Updated to Git Cop 3.0.0.
|
||||||
|
* Updated to Ruby 2.6.0.
|
||||||
|
* Removed Java development tools from setup.
|
||||||
|
* Removed download file function.
|
||||||
|
|
||||||
|
== 6.1.0 (2018-11-01)
|
||||||
|
|
||||||
|
* Updated to Java SE Development Kit 11.
|
||||||
|
* Updated to Ruby 2.5.2.
|
||||||
|
* Updated to Ruby 2.5.3.
|
||||||
|
* Removed unnecessary source code comments.
|
||||||
|
|
||||||
|
== 6.0.0 (2018-10-01)
|
||||||
|
|
||||||
|
* Added XCode install tip.
|
||||||
|
* Updated boot disk creation to macOS Mojave.
|
||||||
|
* Updated to Contributor Covenant Code of Conduct 1.4.1.
|
||||||
|
* Updated to Java SE Development Kit 10.
|
||||||
|
|
||||||
|
== 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.
|
||||||
|
* Updated to Apache 2.0 license.
|
||||||
|
* Updated to Ruby 2.4.3.
|
||||||
|
* Updated to Ruby 2.5.0.
|
||||||
|
|
||||||
|
== 3.1.0 (2017-11-26)
|
||||||
|
|
||||||
|
* Updated Gemfile.lock file.
|
||||||
|
* Updated boot disk documenation to mention APFS.
|
||||||
|
* Updated to Bundler 1.16.0.
|
||||||
|
* Updated to Git Cop 1.7.0.
|
||||||
|
* Updated to Rake 12.3.0.
|
||||||
|
* Updated to Rubocop 0.51.0.
|
||||||
|
|
||||||
|
== 3.0.0 (2017-10-01)
|
||||||
|
|
||||||
|
* Fixed table of contents.
|
||||||
|
* Updated boot disk creation to use macOS High Sierra.
|
||||||
|
* Updated gem dependencies.
|
||||||
|
* Updated to Git Cop 1.6.0.
|
||||||
|
* Updated to Ruby 2.4.2.
|
||||||
|
|
||||||
|
== 2.2.0 (2017-07-16)
|
||||||
|
|
||||||
|
* Added Git Cop support.
|
||||||
|
* Updated CONTRIBUTING documentation.
|
||||||
|
* Updated GitHub templates.
|
||||||
|
* Updated README headers.
|
||||||
|
* Updated gem dependencies.
|
||||||
|
|
||||||
|
== 2.1.0 (2017-04-29)
|
||||||
|
|
||||||
|
* Fixed Java SE Development Kit install.
|
||||||
|
* Fixed install-all command
|
||||||
|
|
||||||
|
== 2.0.0 (2017-04-09)
|
||||||
|
|
||||||
|
* Added Homebrew Casks install script.
|
||||||
|
* Updated README semantic versioning order.
|
||||||
|
* Updated contributing documentation.
|
||||||
|
* Refactored Homebrew software as Homebrew Formulas.
|
||||||
|
|
||||||
|
== 1.3.1 (2017-01-08)
|
||||||
|
|
||||||
|
* Fixed install of zip app downloads with sub-directories.
|
||||||
|
|
||||||
|
== 1.3.0 (2017-01-01)
|
||||||
|
|
||||||
|
* Updated README versioning documentation.
|
||||||
|
* Removed CHANGELOG.md (use CHANGES.md instead).
|
||||||
|
|
||||||
|
== 1.2.0 (2016-10-12)
|
||||||
|
|
||||||
|
* Fixed reinstaller path issues with application and extension scripts.
|
||||||
|
* Added screencast to README.
|
||||||
|
|
||||||
|
== 1.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.
|
||||||
|
|
||||||
|
== 1.0.0 (2016-10-05)
|
||||||
|
|
||||||
|
* Initial version.
|
||||||
159
CHANGES.md
159
CHANGES.md
@@ -1,159 +0,0 @@
|
|||||||
# 8.0.1 (2020-01-01)
|
|
||||||
|
|
||||||
- Added Startup Security Utility to README.
|
|
||||||
- Updated README screencast.
|
|
||||||
- Updated to Ruby 2.7.0.
|
|
||||||
- Refactored caffeinate machine function to process grep.
|
|
||||||
|
|
||||||
# 8.0.0 (2019-10-12)
|
|
||||||
|
|
||||||
- Updated to Rake 13.0.0.
|
|
||||||
- Updated to Ruby 2.6.5.
|
|
||||||
- Updated to macOS Catalina.
|
|
||||||
|
|
||||||
# 7.2.1 (2019-09-01)
|
|
||||||
|
|
||||||
- Updated README screencast tutorial.
|
|
||||||
- Updated to Ruby 2.6.4.
|
|
||||||
|
|
||||||
# 7.2.0 (2019-08-01)
|
|
||||||
|
|
||||||
- Added file install function.
|
|
||||||
|
|
||||||
# 7.1.2 (2019-06-01)
|
|
||||||
|
|
||||||
- Updated contributing documentation.
|
|
||||||
- Updated to Git Cop 3.5.0.
|
|
||||||
|
|
||||||
# 7.1.1 (2019-05-01)
|
|
||||||
|
|
||||||
- Added project icon to README.
|
|
||||||
- Updated to Ruby 2.6.3.
|
|
||||||
|
|
||||||
# 7.1.0 (2019-04-01)
|
|
||||||
|
|
||||||
- Added XCode installer fix to troubleshooting section.
|
|
||||||
- Updated to Ruby 2.6.1.
|
|
||||||
- Updated to Ruby 2.6.2.
|
|
||||||
|
|
||||||
# 7.0.0 (2019-01-01)
|
|
||||||
|
|
||||||
- Fixed Circle CI cache for Ruby version.
|
|
||||||
- Fixed installation of apps with no extension.
|
|
||||||
- Fixed program installs.
|
|
||||||
- Added Circle CI Bundler cache.
|
|
||||||
- Added README boot disk documentation.
|
|
||||||
- Added README troubleshooting section.
|
|
||||||
- Updated to Git Cop 3.0.0.
|
|
||||||
- Updated to Ruby 2.6.0.
|
|
||||||
- Removed Java development tools from setup.
|
|
||||||
- Removed download file function.
|
|
||||||
|
|
||||||
# 6.1.0 (2018-11-01)
|
|
||||||
|
|
||||||
- Updated to Java SE Development Kit 11.
|
|
||||||
- Updated to Ruby 2.5.2.
|
|
||||||
- Updated to Ruby 2.5.3.
|
|
||||||
- Removed unnecessary source code comments.
|
|
||||||
|
|
||||||
# 6.0.0 (2018-10-01)
|
|
||||||
|
|
||||||
- Added XCode install tip.
|
|
||||||
- Updated boot disk creation to macOS Mojave.
|
|
||||||
- Updated to Contributor Covenant Code of Conduct 1.4.1.
|
|
||||||
- Updated to Java SE Development Kit 10.
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
- Updated to Apache 2.0 license.
|
|
||||||
- Updated to Ruby 2.4.3.
|
|
||||||
- Updated to Ruby 2.5.0.
|
|
||||||
|
|
||||||
# 3.1.0 (2017-11-26)
|
|
||||||
|
|
||||||
- Updated Gemfile.lock file.
|
|
||||||
- Updated boot disk documenation to mention APFS.
|
|
||||||
- Updated to Bundler 1.16.0.
|
|
||||||
- Updated to Git Cop 1.7.0.
|
|
||||||
- Updated to Rake 12.3.0.
|
|
||||||
- Updated to Rubocop 0.51.0.
|
|
||||||
|
|
||||||
# 3.0.0 (2017-10-01)
|
|
||||||
|
|
||||||
- Fixed table of contents.
|
|
||||||
- Updated boot disk creation to use macOS High Sierra.
|
|
||||||
- Updated gem dependencies.
|
|
||||||
- Updated to Git Cop 1.6.0.
|
|
||||||
- Updated to Ruby 2.4.2.
|
|
||||||
|
|
||||||
# 2.2.0 (2017-07-16)
|
|
||||||
|
|
||||||
- Added Git Cop support.
|
|
||||||
- Updated CONTRIBUTING documentation.
|
|
||||||
- Updated GitHub templates.
|
|
||||||
- Updated README headers.
|
|
||||||
- Updated gem dependencies.
|
|
||||||
|
|
||||||
# 2.1.0 (2017-04-29)
|
|
||||||
|
|
||||||
- Fixed Java SE Development Kit install.
|
|
||||||
- Fixed install-all command
|
|
||||||
|
|
||||||
# 2.0.0 (2017-04-09)
|
|
||||||
|
|
||||||
- Added Homebrew Casks install script.
|
|
||||||
- Updated README semantic versioning order.
|
|
||||||
- Updated contributing documentation.
|
|
||||||
- Refactored Homebrew software as Homebrew Formulas.
|
|
||||||
|
|
||||||
# 1.3.1 (2017-01-08)
|
|
||||||
|
|
||||||
- Fixed install of zip app downloads with sub-directories.
|
|
||||||
|
|
||||||
# 1.3.0 (2017-01-01)
|
|
||||||
|
|
||||||
- Updated README versioning documentation.
|
|
||||||
- Removed CHANGELOG.md (use CHANGES.md instead).
|
|
||||||
|
|
||||||
# 1.2.0 (2016-10-12)
|
|
||||||
|
|
||||||
- Fixed reinstaller path issues with application and extension scripts.
|
|
||||||
- Added screencast to README.
|
|
||||||
|
|
||||||
# 1.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.
|
|
||||||
|
|
||||||
# 1.0.0 (2016-10-05)
|
|
||||||
|
|
||||||
- Initial version.
|
|
||||||
113
CODE_OF_CONDUCT.adoc
Normal file
113
CODE_OF_CONDUCT.adoc
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
= Contributor Covenant Code of Conduct
|
||||||
|
|
||||||
|
== Our Pledge
|
||||||
|
|
||||||
|
We as members, contributors, and leaders pledge to make participation in our community a
|
||||||
|
harassment-free experience for everyone, regardless of age, body size, visible or invisible
|
||||||
|
disability, ethnicity, sex characteristics, gender identity and expression, level of experience,
|
||||||
|
education, socio-economic status, nationality, personal appearance, race, religion, or sexual
|
||||||
|
identity and orientation.
|
||||||
|
|
||||||
|
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and
|
||||||
|
healthy community.
|
||||||
|
|
||||||
|
== Our Standards
|
||||||
|
|
||||||
|
Examples of behavior that contributes to a positive environment for our community include:
|
||||||
|
|
||||||
|
* Demonstrating empathy and kindness toward other people
|
||||||
|
* Being respectful of differing opinions, viewpoints, and experiences
|
||||||
|
* Giving and gracefully accepting constructive feedback
|
||||||
|
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the
|
||||||
|
experience
|
||||||
|
* Focusing on what is best not just for us as individuals, but for the overall community
|
||||||
|
|
||||||
|
Examples of unacceptable behavior include:
|
||||||
|
|
||||||
|
* The use of sexualized language or imagery, and sexual attention or advances of any kind
|
||||||
|
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||||
|
* Public or private harassment
|
||||||
|
* Publishing others' private information, such as a physical or email address, without their
|
||||||
|
explicit permission
|
||||||
|
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
||||||
|
|
||||||
|
== Enforcement Responsibilities
|
||||||
|
|
||||||
|
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior
|
||||||
|
and will take appropriate and fair corrective action in response to any behavior that they deem
|
||||||
|
inappropriate, threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
Community leaders have the right and responsibility to remove, edit, or reject comments, commits,
|
||||||
|
code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and
|
||||||
|
will communicate reasons for moderation decisions when appropriate.
|
||||||
|
|
||||||
|
== Scope
|
||||||
|
|
||||||
|
This Code of Conduct applies within all community spaces, and also applies when an individual is
|
||||||
|
officially representing the community in public spaces. Examples of representing our community
|
||||||
|
include using an official e-mail address, posting via an official social media account, or acting as
|
||||||
|
an appointed representative at an online or offline event.
|
||||||
|
|
||||||
|
== Enforcement
|
||||||
|
|
||||||
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community
|
||||||
|
leaders responsible for enforcement at link:mailto:brooke@alchemists.io?subject=Conduct[Brooke Kuhlmann].
|
||||||
|
|
||||||
|
All complaints will be reviewed and investigated promptly and fairly.
|
||||||
|
|
||||||
|
All community leaders are obligated to respect the privacy and security of the reporter of any
|
||||||
|
incident.
|
||||||
|
|
||||||
|
== Enforcement Guidelines
|
||||||
|
|
||||||
|
Community leaders will follow these Community Impact Guidelines in determining the consequences for
|
||||||
|
any action they deem in violation of this Code of Conduct:
|
||||||
|
|
||||||
|
=== 1. Correction
|
||||||
|
|
||||||
|
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or
|
||||||
|
unwelcome in the community.
|
||||||
|
|
||||||
|
**Consequence**: A private, written warning from community leaders, providing clarity around the
|
||||||
|
nature of the violation and an explanation of why the behavior was inappropriate. A public apology
|
||||||
|
may be requested.
|
||||||
|
|
||||||
|
=== 2. Warning
|
||||||
|
|
||||||
|
**Community Impact**: A violation through a single incident or series of actions.
|
||||||
|
|
||||||
|
**Consequence**: A warning with consequences for continued behavior. No interaction with the people
|
||||||
|
involved, including unsolicited interaction with those enforcing the Code of Conduct, for a
|
||||||
|
specified period of time. This includes avoiding interactions in community spaces as well as
|
||||||
|
external channels like social media. Violating these terms may lead to a temporary or permanent ban.
|
||||||
|
|
||||||
|
=== 3. Temporary Ban
|
||||||
|
|
||||||
|
**Community Impact**: A serious violation of community standards, including sustained inappropriate
|
||||||
|
behavior.
|
||||||
|
|
||||||
|
**Consequence**: A temporary ban from any sort of interaction or public communication with the
|
||||||
|
community for a specified period of time. No public or private interaction with the people involved,
|
||||||
|
including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this
|
||||||
|
period. Violating these terms may lead to a permanent ban.
|
||||||
|
|
||||||
|
=== 4. Permanent Ban
|
||||||
|
|
||||||
|
**Community Impact**: Demonstrating a pattern of violation of community standards, including
|
||||||
|
sustained inappropriate behavior, harassment of an individual, or aggression toward or
|
||||||
|
disparagement of classes of individuals.
|
||||||
|
|
||||||
|
**Consequence**: A permanent ban from any sort of public interaction within the community.
|
||||||
|
|
||||||
|
== Attribution
|
||||||
|
|
||||||
|
This Code of Conduct is adapted from the
|
||||||
|
link:https://www.contributor-covenant.org/version/2/0/code_of_conduct.html[Contributor Covenant,
|
||||||
|
Version 2.0].
|
||||||
|
|
||||||
|
Community Impact Guidelines were inspired by link:https://github.com/mozilla/diversity[Mozilla's
|
||||||
|
code of conduct enforcement ladder].
|
||||||
|
|
||||||
|
For answers to common questions about this code of conduct, see the
|
||||||
|
link:https://www.contributor-covenant.org/faq[FAQ]. Translations are available
|
||||||
|
link:https://www.contributor-covenant.org/translations[here].
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
|
||||||
|
|
||||||
## Our Pledge
|
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as contributors and maintainers
|
|
||||||
pledge to making participation in our project and our community a harassment-free experience for
|
|
||||||
everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity
|
|
||||||
and expression, level of experience, education, socio-economic status, nationality, personal
|
|
||||||
appearance, race, religion, or sexual identity and orientation.
|
|
||||||
|
|
||||||
## Our Standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment include:
|
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
|
||||||
* Being respectful of differing viewpoints and experiences
|
|
||||||
* Gracefully accepting constructive criticism
|
|
||||||
* Focusing on what is best for the community
|
|
||||||
* Showing empathy towards other community members
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
||||||
* Public or private harassment
|
|
||||||
* Publishing others' private information, such as a physical or electronic address, without explicit
|
|
||||||
permission
|
|
||||||
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
||||||
|
|
||||||
## Our Responsibilities
|
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable behavior and are
|
|
||||||
expected to take appropriate and fair corrective action in response to any instances of unacceptable
|
|
||||||
behavior.
|
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits,
|
|
||||||
code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or
|
|
||||||
to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate,
|
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces when an individual is
|
|
||||||
representing the project or its community. Examples of representing a project or community include
|
|
||||||
using an official project e-mail address, posting via an official social media account, or acting as
|
|
||||||
an appointed representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting
|
|
||||||
the project team at [Brooke Kuhlmann](mailto:brooke@alchemists.io). All complaints will be reviewed
|
|
||||||
and investigated and will result in a response that is deemed necessary and appropriate to the
|
|
||||||
circumstances. The project team is obligated to maintain confidentiality with regard to the reporter
|
|
||||||
of an incident. Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face
|
|
||||||
temporary or permanent repercussions as determined by other members of the project's leadership.
|
|
||||||
|
|
||||||
## Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
||||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
|
||||||
|
|
||||||
[homepage]: https://www.contributor-covenant.org
|
|
||||||
22
CONTRIBUTING.adoc
Normal file
22
CONTRIBUTING.adoc
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
= Contributing
|
||||||
|
|
||||||
|
Thanks for taking an interest in this open source project. Your support and involvement is greatly
|
||||||
|
appreciated. The following details what you need to know in order to contribute.
|
||||||
|
|
||||||
|
== Code
|
||||||
|
|
||||||
|
. Read the project link:README.adoc[README] before starting.
|
||||||
|
. Fork and clone the `master` branch of this repository locally.
|
||||||
|
. Ensure there are no setup, usage, and/or test issues.
|
||||||
|
. Add tests for new functionality and ensure they pass.
|
||||||
|
. Submit a pull request, follow the instructions provided, and ensure the build passes.
|
||||||
|
|
||||||
|
== Issues
|
||||||
|
|
||||||
|
Submit an issue via the GitHub Issues tab (assuming one does not already exist) and follow the
|
||||||
|
instructions provided.
|
||||||
|
|
||||||
|
== Feedback
|
||||||
|
|
||||||
|
* Expect a response within one to three business days.
|
||||||
|
* Changes, alternatives, and/or improvements may be suggested upon review.
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# Contributing
|
|
||||||
|
|
||||||
Thanks for taking an interest in this open source project. Your support and involvement is greatly
|
|
||||||
appreciated. The following details what you need to know in order to contribute.
|
|
||||||
|
|
||||||
## Code
|
|
||||||
|
|
||||||
1. Read the project README before starting.
|
|
||||||
1. Fork and clone the `master` branch of this repository locally.
|
|
||||||
1. Ensure there are no local setup, usage, and/or test issues.
|
|
||||||
1. Add tests for new functionality and ensure they pass.
|
|
||||||
1. Submit a pull request, follow the instructions provided, and ensure the build passes.
|
|
||||||
|
|
||||||
## Issues
|
|
||||||
|
|
||||||
- Submit an issue via the GitHub Issues tab (assuming one does not already exist) and follow the
|
|
||||||
instructions provided.
|
|
||||||
|
|
||||||
## Feedback
|
|
||||||
|
|
||||||
- Expect a response within one to three business days.
|
|
||||||
- Changes, alternatives, and/or improvements may be suggested upon review.
|
|
||||||
2
Gemfile
2
Gemfile
@@ -3,4 +3,4 @@
|
|||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "rake", "~> 13.0"
|
gem "rake", "~> 13.0"
|
||||||
gem "git-cop", "~> 3.5"
|
gem "git-lint", "~> 1.3"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Apache License
|
= Apache License
|
||||||
|
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ http://www.apache.org/licenses
|
|||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
## 1. Definitions
|
== 1. Definitions
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by
|
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by
|
||||||
Sections 1 through 9 of this document.
|
Sections 1 through 9 of this document.
|
||||||
@@ -54,14 +54,14 @@ Contribution."
|
|||||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a
|
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a
|
||||||
Contribution has been received by Licensor and subsequently incorporated within the Work.
|
Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||||
|
|
||||||
## 2. Grant of Copyright License
|
== 2. Grant of Copyright License
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby grants to You a
|
Subject to the terms and conditions of this License, each Contributor hereby grants to You a
|
||||||
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to
|
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to
|
||||||
reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and
|
reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and
|
||||||
distribute the Work and such Derivative Works in Source or Object form.
|
distribute the Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
## 3. Grant of Patent License
|
== 3. Grant of Patent License
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby grants to You a
|
Subject to the terms and conditions of this License, each Contributor hereby grants to You a
|
||||||
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
|
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
|
||||||
@@ -74,39 +74,38 @@ a Contribution incorporated within the Work constitutes direct or contributory p
|
|||||||
then any patent licenses granted to You under this License for that Work shall terminate as of the
|
then any patent licenses granted to You under this License for that Work shall terminate as of the
|
||||||
date such litigation is filed.
|
date such litigation is filed.
|
||||||
|
|
||||||
## 4. Redistribution
|
== 4. Redistribution
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with
|
You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with
|
||||||
or without modifications, and in Source or Object form, provided that You meet the following
|
or without modifications, and in Source or Object form, provided that You meet the following
|
||||||
conditions:
|
conditions:
|
||||||
|
|
||||||
1. You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
. You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||||
|
|
||||||
2. You must cause any modified files to carry prominent notices stating that You changed the
|
. You must cause any modified files to carry prominent notices stating that You changed the files;
|
||||||
files; and
|
and
|
||||||
|
|
||||||
3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright,
|
. You must retain, in the Source form of any Derivative Works that You distribute, all copyright,
|
||||||
patent, trademark, and attribution notices from the Source form of the Work, excluding those
|
patent, trademark, and attribution notices from the Source form of the Work, excluding those
|
||||||
notices that do not pertain to any part of the Derivative Works; and
|
notices that do not pertain to any part of the Derivative Works; and
|
||||||
|
|
||||||
4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative
|
. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works
|
||||||
Works that You distribute must include a readable copy of the attribution notices contained
|
that You distribute must include a readable copy of the attribution notices contained within such
|
||||||
within such NOTICE file, excluding those notices that do not pertain to any part of the
|
NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in
|
||||||
Derivative Works, in at least one of the following places: within a NOTICE text file
|
at least one of the following places: within a NOTICE text file distributed as part of the
|
||||||
distributed as part of the Derivative Works; within the Source form or documentation, if
|
Derivative Works; within the Source form or documentation, if provided along with the Derivative
|
||||||
provided along with the Derivative Works; or, within a display generated by the Derivative
|
Works; or, within a display generated by the Derivative Works, if and wherever such third-party
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of the NOTICE
|
notices normally appear. The contents of the NOTICE file are for informational purposes only and
|
||||||
file are for informational purposes only and do not modify the License. You may add Your own
|
do not modify the License. You may add Your own attribution notices within Derivative Works that
|
||||||
attribution notices within Derivative Works that You distribute, alongside or as an addendum to
|
You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such
|
||||||
the NOTICE text from the Work, provided that such additional attribution notices cannot be
|
additional attribution notices cannot be construed as modifying the License.
|
||||||
construed as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide additional or
|
You may add Your own copyright statement to Your modifications and may provide additional or
|
||||||
different license terms and conditions for use, reproduction, or distribution of Your modifications,
|
different license terms and conditions for use, reproduction, or distribution of Your modifications,
|
||||||
or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of
|
or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of
|
||||||
the Work otherwise complies with the conditions stated in this License.
|
the Work otherwise complies with the conditions stated in this License.
|
||||||
|
|
||||||
## 5. Submission of Contributions
|
== 5. Submission of Contributions
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the
|
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the
|
||||||
Work by You to the Licensor shall be under the terms and conditions of this License, without any
|
Work by You to the Licensor shall be under the terms and conditions of this License, without any
|
||||||
@@ -114,13 +113,13 @@ additional terms or conditions. Notwithstanding the above, nothing herein shall
|
|||||||
the terms of any separate license agreement you may have executed with Licensor regarding such
|
the terms of any separate license agreement you may have executed with Licensor regarding such
|
||||||
Contributions.
|
Contributions.
|
||||||
|
|
||||||
## 6. Trademarks
|
== 6. Trademarks
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks, service marks, or product
|
This License does not grant permission to use the trade names, trademarks, service marks, or product
|
||||||
names of the Licensor, except as required for reasonable and customary use in describing the origin
|
names of the Licensor, except as required for reasonable and customary use in describing the origin
|
||||||
of the Work and reproducing the content of the NOTICE file.
|
of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
## 7. Disclaimer of Warranty
|
== 7. Disclaimer of Warranty
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each
|
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
@@ -129,7 +128,7 @@ TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. Y
|
|||||||
responsible for determining the appropriateness of using or redistributing the Work and assume any
|
responsible for determining the appropriateness of using or redistributing the Work and assume any
|
||||||
risks associated with Your exercise of permissions under this License.
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
## 8. Limitation of Liability
|
== 8. Limitation of Liability
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence), contract, or
|
In no event and under no legal theory, whether in tort (including negligence), contract, or
|
||||||
otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or
|
otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or
|
||||||
@@ -139,7 +138,7 @@ License or out of the use or inability to use the Work (including but not limite
|
|||||||
loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial
|
loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial
|
||||||
damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||||
|
|
||||||
## 9. Accepting Warranty or Additional Liability
|
== 9. Accepting Warranty or Additional Liability
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee
|
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee
|
||||||
for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights
|
for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights
|
||||||
@@ -151,11 +150,11 @@ additional liability.
|
|||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
Copyright 2016 [Alchemists](https://www.alchemists.io).
|
Copyright 2016 link:https://www.alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
|
||||||
compliance with the License. You may obtain a [copy](http://www.apache.org/licenses/LICENSE-2.0) of
|
compliance with the License. You may obtain a link:https://www.apache.org/licenses/LICENSE-2.0[copy]
|
||||||
the License.
|
of the License.
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software distributed under the License is
|
Unless required by applicable law or agreed to in writing, software distributed under the License is
|
||||||
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
249
README.adoc
Normal file
249
README.adoc
Normal file
@@ -0,0 +1,249 @@
|
|||||||
|
:toc: macro
|
||||||
|
:toclevels: 5
|
||||||
|
:figure-caption!:
|
||||||
|
|
||||||
|
= macOS
|
||||||
|
|
||||||
|
[link=https://circleci.com/gh/bkuhlmann/mac_os]
|
||||||
|
image::https://circleci.com/gh/bkuhlmann/mac_os.svg?style=svg[Circle CI Status]
|
||||||
|
|
||||||
|
Shell scripts for automated macOS machine setup.
|
||||||
|
|
||||||
|
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
|
||||||
|
link:https://www.alchemists.io/projects/mac_os-config[macOS 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) - The foundation framework for building customizated macOS machine setups.
|
||||||
|
* *link:https://www.alchemists.io/projects/mac_os-config[macOS Configuration]* - 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.
|
||||||
|
|
||||||
|
toc::[]
|
||||||
|
|
||||||
|
== Features
|
||||||
|
|
||||||
|
* Provides a command line interface, written in Bash, with no additional dependencies for
|
||||||
|
installation and management of a macOS machine.
|
||||||
|
* Supports macOS boot disk creation for fresh install of operating system.
|
||||||
|
* Downloads and installs link:https://developer.apple.com/xcode[Xcode Command Line Tools].
|
||||||
|
* Downloads, installs, and configures link:http://brew.sh[Homebrew Formulas].
|
||||||
|
* Downloads, installs, and configures link:https://caskroom.github.io[Homebrew Casks].
|
||||||
|
* Downloads, installs, and configures link:http://www.apple.com/macosx/whats-new/app-store.html[App
|
||||||
|
Store] software.
|
||||||
|
* 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
|
||||||
|
|
||||||
|
[link=https://www.alchemists.io/screencasts/mac_os]
|
||||||
|
image::https://www.alchemists.io/images/screencasts/mac_os/cover.svg[Screencast,600,240,role=focal_point]
|
||||||
|
|
||||||
|
== Requirements
|
||||||
|
|
||||||
|
. link:https://www.apple.com/macos/big-sur[macOS Big Sur]
|
||||||
|
. link:https://developer.apple.com/xcode[Xcode]
|
||||||
|
|
||||||
|
== Setup
|
||||||
|
|
||||||
|
To install, run:
|
||||||
|
|
||||||
|
[source,bash]
|
||||||
|
----
|
||||||
|
git clone https://github.com/bkuhlmann/mac_os.git
|
||||||
|
cd mac_os
|
||||||
|
git checkout 10.0.0
|
||||||
|
----
|
||||||
|
|
||||||
|
== Usage
|
||||||
|
|
||||||
|
Run the following:
|
||||||
|
|
||||||
|
[source,bash]
|
||||||
|
----
|
||||||
|
bin/run
|
||||||
|
----
|
||||||
|
|
||||||
|
You will be presented with the following options (listed in order of
|
||||||
|
use):
|
||||||
|
|
||||||
|
....
|
||||||
|
Boot:
|
||||||
|
B: Create boot disk.
|
||||||
|
Install:
|
||||||
|
b: Apply basic settings.
|
||||||
|
t: Install development tools.
|
||||||
|
hf: Install Homebrew Formulas.
|
||||||
|
hc: Install Homebrew Casks.
|
||||||
|
m: Install Mac App Store software.
|
||||||
|
a: Install application software.
|
||||||
|
x: Install application software extensions.
|
||||||
|
d: Apply default settings.
|
||||||
|
s: Setup installed software.
|
||||||
|
i: Install everything (i.e. executes all install options).
|
||||||
|
Restore:
|
||||||
|
R: Restore settings from backup.
|
||||||
|
Manage:
|
||||||
|
c: Check status of managed software.
|
||||||
|
C: Caffeinate machine.
|
||||||
|
ua: Uninstall application software.
|
||||||
|
ux: Uninstall application software extension.
|
||||||
|
ra: Reinstall application software.
|
||||||
|
rx: Reinstall application software extension.
|
||||||
|
w: Clean work (temp) directory.
|
||||||
|
q: Quit/Exit.
|
||||||
|
....
|
||||||
|
|
||||||
|
Choose option `i` to run a full install or select a specific option to run a single action. 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.
|
||||||
|
|
||||||
|
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 full install process.
|
||||||
|
|
||||||
|
The machine should be rebooted after all install tasks have completed to ensure all settings have
|
||||||
|
been loaded.
|
||||||
|
|
||||||
|
It is recommended that the `mac_os` project directory not be deleted and kept on the local machine
|
||||||
|
in order to manage installed software and benefit from future upgrades.
|
||||||
|
|
||||||
|
=== Boot Disk
|
||||||
|
|
||||||
|
When attempting to create a boot disk via `bin/run B`, you’ll be presented with the following
|
||||||
|
documentation (provided here for reference):
|
||||||
|
|
||||||
|
....
|
||||||
|
macOS Boot Disk Tips
|
||||||
|
- Use a USB drive (8GB or higher).
|
||||||
|
- Use Disk Utility to format the USB drive as "Mac OS Extended (Journaled)".
|
||||||
|
- Use Disk Utility to label the USB drive as "Untitled".
|
||||||
|
|
||||||
|
macOS Boot Disk Usage:
|
||||||
|
1. Insert the USB boot disk into the machine to be upgraded.
|
||||||
|
2. Reboot the machine.
|
||||||
|
3. Hold down the OPTION key before the Apple logo appears.
|
||||||
|
4. Select the USB boot disk from the menu.
|
||||||
|
5. Use Disk Utility to format the machine's drive as "APFS (Encrypted)".
|
||||||
|
6. Install the new operating system.
|
||||||
|
|
||||||
|
macOS Reinstall:
|
||||||
|
1. Click the Apple icon from the operating system main menu.
|
||||||
|
2. Select the "Restart..." menu option.
|
||||||
|
3. Hold down the COMMAND+R keys before the Apple logo appears.
|
||||||
|
4. Wait for the macOS installer to load from the recovery partition.
|
||||||
|
5. Use the dialog options to launch Disk Utility, reinstall the system, etc.
|
||||||
|
....
|
||||||
|
|
||||||
|
Depending on your security settings, you might need to use the Startup
|
||||||
|
Security Utility before using the Boot Disk (see below).
|
||||||
|
|
||||||
|
=== https://support.apple.com/en-us/HT208198[Startup Security Utility]
|
||||||
|
|
||||||
|
With newer hardware, you should be running with the Apple T2 Security Chip (found via → About This
|
||||||
|
Mac → Overview → System Report → Controller). In order to boot your machine using the Boot Disk,
|
||||||
|
you’ll need to _temporarily_ disable the default security settings as follows:
|
||||||
|
|
||||||
|
* Turn on or restart your Mac, then press and hold `COMMAND + R` immediately after seeing the Apple
|
||||||
|
logo.
|
||||||
|
* Select Utilities → Startup Security Utility from the main menu.
|
||||||
|
* Click _Turn Off Firmware Password_.
|
||||||
|
* Select _Secure Boot: No Security_.
|
||||||
|
* Select _External Boot: Allow booting from external media_.
|
||||||
|
* Quit the utility and restart the machine.
|
||||||
|
|
||||||
|
You’ll now be able to boot your system with the Boot Disk (see above).
|
||||||
|
|
||||||
|
After the new operating system has been installed via the Boot Disk, _ensure you return to the
|
||||||
|
Startup Security Utility and re-enable the following settings_:
|
||||||
|
|
||||||
|
* Click _Turn On Firmware Password_.
|
||||||
|
* Select _Secure Boot: Full Security_.
|
||||||
|
* Select _External Boot: Disallow booting from external or removable media_.
|
||||||
|
|
||||||
|
=== Customization
|
||||||
|
|
||||||
|
All executable scripts can be found in the `bin` folder:
|
||||||
|
|
||||||
|
* `bin/apply_basic_settings`: Applies basic, initial, settings for setting up a machine. _Can be
|
||||||
|
customized._
|
||||||
|
* `bin/apply_default_settings`: Applies useful system and application defaults. _Can be customized._
|
||||||
|
* `bin/create_boot_disk`: Creates macOS boot disk.
|
||||||
|
* `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._
|
||||||
|
* `bin/install_dev_tools`: Installs macOS development tools required by Homebrew.
|
||||||
|
* `bin/install_extensions`: Installs macOS application extensions and add-ons. _Can be customized._
|
||||||
|
* `bin/install_homebrew_casks`: Installs Homebrew Formulas. _Can be customized._
|
||||||
|
* `bin/install_homebrew_formulas`: Installs Homebrew Casks. _Can be customized._
|
||||||
|
* `bin/restore_backup`: Restores system/application settings from backup image. _Can be customized._
|
||||||
|
* `bin/run`: The main script and interface for macOS setup.
|
||||||
|
* `bin/setup_software`: Configures and launches (if necessary) installed software. _Can be
|
||||||
|
customized._
|
||||||
|
|
||||||
|
The `lib` folder provides the base framework for installing, re-installing, and uninstalling
|
||||||
|
software. Everything provided via the link:https://www.alchemists.io/projects/mac_os-config[macOS
|
||||||
|
Config] project is built upon the functions found in the `lib` folder. See the
|
||||||
|
link:https://www.alchemists.io/projects/mac_os-config[macOS Config] project for further details.
|
||||||
|
|
||||||
|
* `lib/settings.sh`: Defines global settings for software applications, extensions, etc.
|
||||||
|
|
||||||
|
== Troubleshooting
|
||||||
|
|
||||||
|
* When using the boot disk, you might experience a situation where you see a black screen with a
|
||||||
|
white circle and diagonal line running through it. This means macOS lost or can’t find the boot
|
||||||
|
disk for some reason. To correct this, shut down and boot up the system again while holding down
|
||||||
|
the `OPTION+COMMAND+R+P` keys simultaneously. You might want to wait for the system boot sound to
|
||||||
|
happen a few times before releasing the keys. This will clear the system NVRAM/PRAM. At this point
|
||||||
|
you can shut down and restart the system following the boot disk instructions (the boot disk will
|
||||||
|
be recognized now).
|
||||||
|
* Sometimes, when installing XCode development tools (i.e. the `t` option), not all of the macOS
|
||||||
|
headers will be installed. This can cause issues with compiling and building native packages. For
|
||||||
|
example: `fatal error: 'stdio.h' file not found`. This can happen due to an intermittent bug with
|
||||||
|
the XCode installer. To fix this, you’ll need to install this package:
|
||||||
|
`/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg`. Depending on
|
||||||
|
your system, the version might differ, so look for a `*.pkg` in the
|
||||||
|
`/Library/Developer/CommandLineTools/Packages` folder.
|
||||||
|
|
||||||
|
== Development
|
||||||
|
|
||||||
|
To contribute, run:
|
||||||
|
|
||||||
|
[source,bash]
|
||||||
|
----
|
||||||
|
git clone https://github.com/bkuhlmann/mac_os.git
|
||||||
|
cd mac_os
|
||||||
|
----
|
||||||
|
|
||||||
|
== Versioning
|
||||||
|
|
||||||
|
Read link:https://semver.org[Semantic Versioning] for details. Briefly, it means:
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
* Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
|
||||||
|
|
||||||
|
== Code of Conduct
|
||||||
|
|
||||||
|
Please note that this project is released with a link:CODE_OF_CONDUCT.adoc[CODE OF CONDUCT]. By
|
||||||
|
participating in this project you agree to abide by its terms.
|
||||||
|
|
||||||
|
== Contributions
|
||||||
|
|
||||||
|
Read link:CONTRIBUTING.adoc[CONTRIBUTING] for details.
|
||||||
|
|
||||||
|
== License
|
||||||
|
|
||||||
|
Read link:LICENSE.adoc[LICENSE] for details.
|
||||||
|
|
||||||
|
== History
|
||||||
|
|
||||||
|
Read link:CHANGES.adoc[CHANGES] for details.
|
||||||
|
|
||||||
|
== Credits
|
||||||
|
|
||||||
|
Engineered by link:https://www.alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].
|
||||||
258
README.md
258
README.md
@@ -1,258 +0,0 @@
|
|||||||
<p align="center">
|
|
||||||
<img src="mac_os.png" alt="MacOS Icon"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
# macOS
|
|
||||||
|
|
||||||
[](https://circleci.com/gh/bkuhlmann/mac_os)
|
|
||||||
|
|
||||||
Shell scripts for automated macOS machine setup.
|
|
||||||
|
|
||||||
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) - The foundation framework for building customizated macOS machine
|
|
||||||
setups.
|
|
||||||
- **[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
|
|
||||||
to be forked for as many custom machine setups as needed.
|
|
||||||
|
|
||||||
<!-- Tocer[start]: Auto-generated, don't remove. -->
|
|
||||||
|
|
||||||
## Table of Contents
|
|
||||||
|
|
||||||
- [Features](#features)
|
|
||||||
- [Screencast](#screencast)
|
|
||||||
- [Requirements](#requirements)
|
|
||||||
- [Setup](#setup)
|
|
||||||
- [Usage](#usage)
|
|
||||||
- [Boot Disk](#boot-disk)
|
|
||||||
- [Startup Security Utility](#startup-security-utility)
|
|
||||||
- [Customization](#customization)
|
|
||||||
- [Troubleshooting](#troubleshooting)
|
|
||||||
- [Versioning](#versioning)
|
|
||||||
- [Code of Conduct](#code-of-conduct)
|
|
||||||
- [Contributions](#contributions)
|
|
||||||
- [License](#license)
|
|
||||||
- [History](#history)
|
|
||||||
- [Credits](#credits)
|
|
||||||
|
|
||||||
<!-- Tocer[finish]: Auto-generated, don't remove. -->
|
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
- Provides a command line interface, written in Bash, with no additional dependencies for
|
|
||||||
installation and management of a macOS machine.
|
|
||||||
- Supports macOS boot disk creation for fresh install of operating system.
|
|
||||||
- Downloads and installs [Xcode Command Line Tools](https://developer.apple.com/xcode).
|
|
||||||
- Downloads, installs, and configures [Homebrew Formulas](http://brew.sh).
|
|
||||||
- Downloads, installs, and configures [Homebrew Casks](https://caskroom.github.io).
|
|
||||||
- Downloads, installs, and configures
|
|
||||||
[App Store](http://www.apple.com/macosx/whats-new/app-store.html) software.
|
|
||||||
- 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
|
|
||||||
|
|
||||||
[](https://asciinema.org/a/278158)
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
1. [macOS Catalina](https://www.apple.com/macos/catalina) (with latest software updates applied)
|
|
||||||
1. [Xcode](https://developer.apple.com/xcode) (with accepted license agreement)
|
|
||||||
|
|
||||||
## Setup
|
|
||||||
|
|
||||||
Open a terminal window and execute one of the following setup sequences depending on your version
|
|
||||||
preference:
|
|
||||||
|
|
||||||
Current Version (stable):
|
|
||||||
|
|
||||||
git clone https://github.com/bkuhlmann/mac_os.git
|
|
||||||
cd mac_os
|
|
||||||
git checkout 8.0.1
|
|
||||||
|
|
||||||
Master Version (unstable):
|
|
||||||
|
|
||||||
git clone https://github.com/bkuhlmann/mac_os.git
|
|
||||||
cd mac_os
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Run the following:
|
|
||||||
|
|
||||||
bin/run
|
|
||||||
|
|
||||||
You will be presented with the following options (listed in order of use):
|
|
||||||
|
|
||||||
Boot:
|
|
||||||
B: Create boot disk.
|
|
||||||
Install:
|
|
||||||
b: Apply basic settings.
|
|
||||||
t: Install development tools.
|
|
||||||
hf: Install Homebrew Formulas.
|
|
||||||
hc: Install Homebrew Casks.
|
|
||||||
m: Install Mac App Store software.
|
|
||||||
a: Install application software.
|
|
||||||
x: Install application software extensions.
|
|
||||||
d: Apply default settings.
|
|
||||||
s: Setup installed software.
|
|
||||||
i: Install everything (i.e. executes all install options).
|
|
||||||
Restore:
|
|
||||||
R: Restore settings from backup.
|
|
||||||
Manage:
|
|
||||||
c: Check status of managed software.
|
|
||||||
C: Caffeinate machine.
|
|
||||||
ua: Uninstall application software.
|
|
||||||
ux: Uninstall application software extension.
|
|
||||||
ra: Reinstall application software.
|
|
||||||
rx: Reinstall application software extension.
|
|
||||||
w: Clean work (temp) directory.
|
|
||||||
q: Quit/Exit.
|
|
||||||
|
|
||||||
Choose option `i` to run a full install or select a specific option to run a single action. 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.
|
|
||||||
|
|
||||||
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 full install process.
|
|
||||||
|
|
||||||
The machine should be rebooted after all install tasks have completed to ensure all settings have
|
|
||||||
been loaded.
|
|
||||||
|
|
||||||
It is recommended that the `mac_os` project directory not be deleted and kept on the local machine
|
|
||||||
in order to manage installed software and benefit from future upgrades.
|
|
||||||
|
|
||||||
### Boot Disk
|
|
||||||
|
|
||||||
When attempting to create a boot disk via `bin/run B`, you'll be presented with the following
|
|
||||||
documentation (provided here for reference):
|
|
||||||
|
|
||||||
macOS Boot Disk Tips
|
|
||||||
- Use a USB drive (8GB or higher).
|
|
||||||
- Use Disk Utility to format the USB drive as "Mac OS Extended (Journaled)".
|
|
||||||
- Use Disk Utility to label the USB drive as "Untitled".
|
|
||||||
|
|
||||||
macOS Boot Disk Usage:
|
|
||||||
1. Insert the USB boot disk into the machine to be upgraded.
|
|
||||||
2. Reboot the machine.
|
|
||||||
3. Hold down the OPTION key before the Apple logo appears.
|
|
||||||
4. Select the USB boot disk from the menu.
|
|
||||||
5. Use Disk Utility to format the machine's drive as "APFS (Encrypted)".
|
|
||||||
6. Install the new operating system.
|
|
||||||
|
|
||||||
macOS Reinstall:
|
|
||||||
1. Click the Apple icon from the operating system main menu.
|
|
||||||
2. Select the "Restart..." menu option.
|
|
||||||
3. Hold down the COMMAND+R keys before the Apple logo appears.
|
|
||||||
4. Wait for the macOS installer to load from the recovery partition.
|
|
||||||
5. Use the dialog options to launch Disk Utility, reinstall the system, etc.
|
|
||||||
|
|
||||||
Depending on your security settings, you might need to use the Startup Security Utility before using
|
|
||||||
the Boot Disk (see below).
|
|
||||||
|
|
||||||
### [Startup Security Utility](https://support.apple.com/en-us/HT208198)
|
|
||||||
|
|
||||||
With newer hardware, you should be running with the Apple T2 Security Chip (found via → About This
|
|
||||||
Mac → Overview → System Report → Controller). In order to boot your machine using the Boot Disk,
|
|
||||||
you'll need to *temporarily* disable the default security settings as follows:
|
|
||||||
|
|
||||||
- Turn on or restart your Mac, then press and hold `COMMAND + R` immediately after seeing the Apple
|
|
||||||
logo.
|
|
||||||
- Select Utilities → Startup Security Utility from the main menu.
|
|
||||||
- Click "Turn Off Firmware Password".
|
|
||||||
- Select "Secure Boot: No Security".
|
|
||||||
- Select "External Boot: Allow booting from external media".
|
|
||||||
- Quit the utility and restart the machine.
|
|
||||||
|
|
||||||
You'll now be able to boot your system with the Boot Disk (see above).
|
|
||||||
|
|
||||||
After the new operating system has been installed via the Boot Disk, *ensure you return to the
|
|
||||||
Startup Security Utility and re-enable the following settings*:
|
|
||||||
|
|
||||||
- Click "Turn On Firmware Password".
|
|
||||||
- Select "Secure Boot: Full Security".
|
|
||||||
- Select "External Boot: Disallow booting from external or removable media".
|
|
||||||
|
|
||||||
### Customization
|
|
||||||
|
|
||||||
All executable scripts can be found in the `bin` folder:
|
|
||||||
|
|
||||||
- `bin/apply_basic_settings`: Applies basic, initial, settings for setting up a machine. *Can be
|
|
||||||
customized.*
|
|
||||||
- `bin/apply_default_settings`: Applies useful system and application defaults. *Can be customized.*
|
|
||||||
- `bin/create_boot_disk`: Creates macOS boot disk.
|
|
||||||
- `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.*
|
|
||||||
- `bin/install_dev_tools`: Installs macOS development tools required by Homebrew.
|
|
||||||
- `bin/install_extensions`: Installs macOS application extensions and add-ons. *Can be customized.*
|
|
||||||
- `bin/install_homebrew_casks`: Installs Homebrew Formulas. *Can be customized.*
|
|
||||||
- `bin/install_homebrew_formulas`: Installs Homebrew Casks. *Can be customized.*
|
|
||||||
- `bin/restore_backup`: Restores system/application settings from backup image. *Can be customized.*
|
|
||||||
- `bin/run`: The main script and interface for macOS setup.
|
|
||||||
- `bin/setup_software`: Configures and launches (if necessary) installed software. *Can be
|
|
||||||
customized.*
|
|
||||||
|
|
||||||
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)
|
|
||||||
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.
|
|
||||||
|
|
||||||
- `lib/settings.sh`: Defines global settings for software applications, extensions, etc.
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
- When using the boot disk, you might experience a situation where you see a black screen with a
|
|
||||||
white circle and diagonal line running through it. This means macOS lost or can't find the boot
|
|
||||||
disk for some reason. To correct this, shut down and boot up the system again while holding down
|
|
||||||
the `OPTION+COMMAND+R+P` keys simultaneously. You might want to wait for the system boot sound to
|
|
||||||
happen a few times before releasing the keys. This will clear the system NVRAM/PRAM. At this point
|
|
||||||
you can shut down and restart the system following the boot disk instructions (the boot disk will
|
|
||||||
be recognized now).
|
|
||||||
- Sometimes, when installing XCode development tools (i.e. the `t` option), not all of the macOS
|
|
||||||
headers will be installed. This can cause issues with compiling and building native packages. For
|
|
||||||
example: `fatal error: 'stdio.h' file not found`. This can happen due to an intermittent bug with
|
|
||||||
the XCode installer. To fix this, you'll need to install this package:
|
|
||||||
`/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg`. Depending on
|
|
||||||
your system, the version might differ, so look for a `*.pkg` in the
|
|
||||||
`/Library/Developer/CommandLineTools/Packages` folder.
|
|
||||||
|
|
||||||
## Versioning
|
|
||||||
|
|
||||||
Read [Semantic Versioning](https://semver.org) for details. Briefly, it means:
|
|
||||||
|
|
||||||
- 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.
|
|
||||||
- Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
|
|
||||||
|
|
||||||
## Code of Conduct
|
|
||||||
|
|
||||||
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
|
||||||
participating in this project you agree to abide by its terms.
|
|
||||||
|
|
||||||
## Contributions
|
|
||||||
|
|
||||||
Read [CONTRIBUTING](CONTRIBUTING.md) for details.
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Copyright 2016 [Alchemists](https://www.alchemists.io).
|
|
||||||
Read [LICENSE](LICENSE.md) for details.
|
|
||||||
|
|
||||||
## History
|
|
||||||
|
|
||||||
Read [CHANGES](CHANGES.md) for details.
|
|
||||||
Built with [Bashsmith](https://github.com/bkuhlmann/bashsmith).
|
|
||||||
|
|
||||||
## Credits
|
|
||||||
|
|
||||||
Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
|
|
||||||
[Alchemists](https://www.alchemists.io).
|
|
||||||
8
Rakefile
8
Rakefile
@@ -1,9 +1,5 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
begin
|
require "git/lint/rake/setup"
|
||||||
require "git/cop/rake/setup"
|
|
||||||
rescue LoadError => error
|
|
||||||
puts error.message
|
|
||||||
end
|
|
||||||
|
|
||||||
task default: :git_cop
|
task default: :git_lint
|
||||||
|
|||||||
@@ -57,5 +57,5 @@ jobs:
|
|||||||
- vendor/bundle
|
- vendor/bundle
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
name: Rake Run
|
name: Build
|
||||||
command: bundle exec rake
|
command: bundle exec rake
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ export -f install_program
|
|||||||
# Parameters: $1 (required) - Repository URL, $2 (required) - Install path, $3 (optional) - Git clone options.
|
# Parameters: $1 (required) - Repository URL, $2 (required) - Install path, $3 (optional) - Git clone options.
|
||||||
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_basename "$2")
|
||||||
local install_path="$2"
|
local install_path="$2"
|
||||||
local options="--quiet"
|
local options="--quiet"
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ export -f install_git_project
|
|||||||
# Parameters: $1 (required) - URL, $2 (required) - Install path.
|
# Parameters: $1 (required) - URL, $2 (required) - Install path.
|
||||||
install_file() {
|
install_file() {
|
||||||
local file_url="$1"
|
local file_url="$1"
|
||||||
local file_name=$(get_file_name "$1")
|
local file_name=$(get_basename "$1")
|
||||||
local install_path="$2"
|
local install_path="$2"
|
||||||
|
|
||||||
if [[ ! -e "$install_path" ]]; then
|
if [[ ! -e "$install_path" ]]; then
|
||||||
@@ -206,7 +206,7 @@ export -f download_file
|
|||||||
# Parameters: $1 (required) - Application source path, $2 (required) - Application name.
|
# Parameters: $1 (required) - Application source path, $2 (required) - Application name.
|
||||||
install_app() {
|
install_app() {
|
||||||
local install_root=$(get_install_root "$2")
|
local install_root=$(get_install_root "$2")
|
||||||
local file_extension=$(get_file_extension "$2")
|
local file_extension=$(get_extension "$2")
|
||||||
|
|
||||||
printf "Installing: $install_root/$2...\n"
|
printf "Installing: $install_root/$2...\n"
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ set -o errexit
|
|||||||
set -o pipefail
|
set -o pipefail
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
export MAC_OS_BOOT_DISK_CREATOR="/Applications/Install macOS Catalina.app/Contents/Resources/createinstallmedia"
|
export MAC_OS_BOOT_DISK_CREATOR="/Applications/Install macOS Big Sur.app/Contents/Resources/createinstallmedia"
|
||||||
export MAC_OS_BOOT_DISK_PATH="/Volumes/Untitled"
|
export MAC_OS_BOOT_DISK_PATH="/Volumes/Untitled"
|
||||||
export MAC_OS_WORK_PATH=/tmp/downloads
|
export MAC_OS_WORK_PATH=/tmp/downloads
|
||||||
export MAC_OS_CONFIG_PATH="../mac_os-config"
|
export MAC_OS_CONFIG_PATH="../mac_os-config"
|
||||||
|
|||||||
@@ -2,6 +2,19 @@
|
|||||||
|
|
||||||
# Defines general utility functions.
|
# Defines general utility functions.
|
||||||
|
|
||||||
|
# Caffeinate machine.
|
||||||
|
caffeinate_machine() {
|
||||||
|
local pid=$(pgrep -x caffeinate)
|
||||||
|
|
||||||
|
if [[ -n "$pid" ]]; then
|
||||||
|
printf "Machine is already caffeinated!\n"
|
||||||
|
else
|
||||||
|
caffeinate -s -u -d -i -t 3153600000 > /dev/null &
|
||||||
|
printf "Machine caffeinated.\n"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export -f caffeinate_machine
|
||||||
|
|
||||||
# Answers the full install path (including file name) for file name.
|
# Answers the full install path (including file name) for file name.
|
||||||
# Parameters: $1 (required) - The file name.
|
# Parameters: $1 (required) - The file name.
|
||||||
get_install_path() {
|
get_install_path() {
|
||||||
@@ -17,24 +30,11 @@ clean_work_path() {
|
|||||||
}
|
}
|
||||||
export -f clean_work_path
|
export -f clean_work_path
|
||||||
|
|
||||||
# Caffeinate machine.
|
|
||||||
caffeinate_machine() {
|
|
||||||
local pid=$(pgrep -x caffeinate)
|
|
||||||
|
|
||||||
if [[ -n "$pid" ]]; then
|
|
||||||
printf "Whoa, tweaker, machine is already caffeinated!\n"
|
|
||||||
else
|
|
||||||
caffeinate -s -u -d -i -t 3153600000 > /dev/null &
|
|
||||||
printf "Machine caffeinated.\n"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
export -f caffeinate_machine
|
|
||||||
|
|
||||||
# Answers the root install path for file name.
|
# Answers the root install path for file name.
|
||||||
# Parameters: $1 (required) - The file name.
|
# Parameters: $1 (required) - The file name.
|
||||||
get_install_root() {
|
get_install_root() {
|
||||||
local file_name="$1"
|
local file_name="$1"
|
||||||
local file_extension=$(get_file_extension "$file_name")
|
local file_extension=$(get_extension "$file_name")
|
||||||
|
|
||||||
# Dynamically build the install path based on file extension.
|
# Dynamically build the install path based on file extension.
|
||||||
case $file_extension in
|
case $file_extension in
|
||||||
@@ -52,10 +52,17 @@ get_install_root() {
|
|||||||
}
|
}
|
||||||
export -f get_install_root
|
export -f get_install_root
|
||||||
|
|
||||||
|
# Answers the file or directory basename.
|
||||||
|
# Parameters: $1 (required) - The file path.
|
||||||
|
get_basename() {
|
||||||
|
printf "${1##*/}" # Answers file or directory name.
|
||||||
|
}
|
||||||
|
export -f get_basename
|
||||||
|
|
||||||
# Answers the file extension.
|
# Answers the file extension.
|
||||||
# Parameters: $1 (required) - The file name.
|
# Parameters: $1 (required) - The file name.
|
||||||
get_file_extension() {
|
get_extension() {
|
||||||
local name=$(get_file_name "$1")
|
local name=$(get_basename "$1")
|
||||||
local extension="${1##*.}" # Excludes dot.
|
local extension="${1##*.}" # Excludes dot.
|
||||||
|
|
||||||
if [[ "$name" == "$extension" ]]; then
|
if [[ "$name" == "$extension" ]]; then
|
||||||
@@ -64,11 +71,4 @@ get_file_extension() {
|
|||||||
printf "$extension"
|
printf "$extension"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
export -f get_file_extension
|
export -f get_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
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ verify_homebrew_formulas() {
|
|||||||
local applications="$(brew list)"
|
local applications="$(brew list)"
|
||||||
|
|
||||||
while read line; do
|
while read line; do
|
||||||
# Skip blank or comment lines.
|
|
||||||
if [[ "$line" == "brew install"* ]]; then
|
if [[ "$line" == "brew install"* ]]; then
|
||||||
local application=$(printf "$line" | awk '{print $3}')
|
local application=$(printf "$line" | awk '{print $3}')
|
||||||
|
|
||||||
@@ -18,11 +17,6 @@ verify_homebrew_formulas() {
|
|||||||
application="gnupg"
|
application="gnupg"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Exception: "hg" is the binary but is listed as "mercurial".
|
|
||||||
if [[ "$application" == "hg" ]]; then
|
|
||||||
application="mercurial"
|
|
||||||
fi
|
|
||||||
|
|
||||||
verify_listed_application "$application" "${applications[*]}"
|
verify_listed_application "$application" "${applications[*]}"
|
||||||
fi
|
fi
|
||||||
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_formulas"
|
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_formulas"
|
||||||
@@ -35,23 +29,11 @@ export -f verify_homebrew_formulas
|
|||||||
verify_homebrew_casks() {
|
verify_homebrew_casks() {
|
||||||
printf "\nChecking Homebrew casks...\n"
|
printf "\nChecking Homebrew casks...\n"
|
||||||
|
|
||||||
local applications="$(brew cask list)"
|
local applications="$(brew list --cask)"
|
||||||
|
|
||||||
while read line; do
|
while read line; do
|
||||||
# Skip blank or comment lines.
|
|
||||||
if [[ "$line" == "brew cask install"* ]]; then
|
if [[ "$line" == "brew cask install"* ]]; then
|
||||||
local application=$(printf "$line" | awk '{print $4}')
|
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[*]}"
|
verify_listed_application "$application" "${applications[*]}"
|
||||||
fi
|
fi
|
||||||
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_casks"
|
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_casks"
|
||||||
@@ -67,7 +49,6 @@ verify_app_store_applications() {
|
|||||||
local applications="$(mas list)"
|
local applications="$(mas list)"
|
||||||
|
|
||||||
while read line; do
|
while read line; do
|
||||||
# Skip blank or comment lines.
|
|
||||||
if [[ "$line" == "mas install"* ]]; then
|
if [[ "$line" == "mas install"* ]]; then
|
||||||
local application=$(printf "$line" | awk '{print $3}')
|
local application=$(printf "$line" | awk '{print $3}')
|
||||||
verify_listed_application "$application" "${applications[*]}"
|
verify_listed_application "$application" "${applications[*]}"
|
||||||
@@ -99,7 +80,6 @@ verify_applications() {
|
|||||||
|
|
||||||
# For each application name, check to see if the application is installed. Otherwise, skip.
|
# For each application name, check to see if the application is installed. Otherwise, skip.
|
||||||
for name in $file_names; do
|
for name in $file_names; do
|
||||||
# Pass the key value to verfication.
|
|
||||||
verify_application "${!name}"
|
verify_application "${!name}"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -111,8 +91,6 @@ export -f verify_applications
|
|||||||
# Parameters: $1 (required) - The file name.
|
# Parameters: $1 (required) - The file name.
|
||||||
verify_application() {
|
verify_application() {
|
||||||
local file_name="$1"
|
local file_name="$1"
|
||||||
|
|
||||||
# Display the missing install if not found.
|
|
||||||
local install_path=$(get_install_path "$file_name")
|
local install_path=$(get_install_path "$file_name")
|
||||||
|
|
||||||
if [[ ! -e "$install_path" ]]; then
|
if [[ ! -e "$install_path" ]]; then
|
||||||
@@ -143,7 +121,6 @@ export -f verify_extensions
|
|||||||
verify_path() {
|
verify_path() {
|
||||||
local path="$1"
|
local path="$1"
|
||||||
|
|
||||||
# Display the missing path if not found.
|
|
||||||
if [[ ! -e "$path" ]]; then
|
if [[ ! -e "$path" ]]; then
|
||||||
printf " - Missing: $path\n"
|
printf " - Missing: $path\n"
|
||||||
fi
|
fi
|
||||||
|
|||||||
BIN
mac_os.png
BIN
mac_os.png
Binary file not shown.
|
Before Width: | Height: | Size: 2.8 KiB |
Reference in New Issue
Block a user