Compare commits

..

33 Commits

Author SHA1 Message Date
Brooke Kuhlmann
605190577f Added version release notes 2020-12-30 10:31:46 -07:00
Brooke Kuhlmann
c9c7f46e4a Updated to Git Lint 2.0.0
Supports Ruby 3.0.0.

[Details](https://www.alchemists.io/projects/git-lint/changes.html).
2020-12-29 19:33:36 -07:00
Brooke Kuhlmann
f8a779e926 Updated to Ruby 3.0.0
Includes temporary disablement of gem dependencies that require
updating to Ruby 3.0.0 first.

[Details](https://chl.li/LdWrE).
2020-12-29 10:35:38 -07:00
Brooke Kuhlmann
e6f991baca Added Circle CI explicit Bundle install configuration
Due to fixing the `vendor/bundle` path earlier (see previous commit),
we need to be explicit with the installation of gems now.
2020-12-20 07:15:38 -07:00
Brooke Kuhlmann
ae6ab46fa7 Fixed Circle CI configuration for Bundler config path
Prevents the following deprecation warning:

    [DEPRECATED] The `--path` flag is deprecated because it relies on
    being remembered across bundler invocations, which bundler will no
    longer do in future versions. Instead please use `bundle config set
    path 'vendor/bundle'`, and stop using this flag.
2020-12-19 17:10:44 -07:00
Brooke Kuhlmann
45a6c5d1b0 Added version release notes 2020-11-15 07:38:09 -07:00
Brooke Kuhlmann
1bb6ef39a5 Added macOS Big Sur support
Necessary to support the latest macOS release.
2020-11-15 07:35:58 -07:00
Brooke Kuhlmann
1416aa2f0a Updated to Git Lint 1.3.0
[Changes](https://www.alchemists.io/projects/git-lint/changes.html).
2020-11-14 17:37:33 -07:00
Brooke Kuhlmann
b6cddae599 Updated project documentation to conform to Rubysmith template
Necessary to match consistency used by the
[Rubysmith](https://www.alchemists.io/projects/rubysmith) when
building/maintaining projects.
2020-10-13 20:07:16 -06:00
Brooke Kuhlmann
e533bf04be Updated to Ruby 2.7.2
Fixes a WEBrick security flaw but also disables deprecation warnings by
default which is sad to see. We'll have to enable these ourselves if we
want to have an early warning sign of future breaking changes. 😢

[Release Notes](https://chl.li/lLaOn)
2020-10-03 08:27:07 -06:00
Brooke Kuhlmann
5455a76d14 Added version release notes 2020-09-12 10:11:23 -06:00
Brooke Kuhlmann
5569fdb345 Refactored utility basename and extension utilities
Minor cleanup to the method names used for less typing.
2020-09-12 09:58:53 -06:00
Brooke Kuhlmann
8f2173c938 Removed unnecessary verifier code comments
These were not adding much value so are safe to remove.
2020-09-12 09:51:40 -06:00
Brooke Kuhlmann
4f1ed26934 Removed Homebrew Mecurial formula verification check
No longer necessary as Mecurial isn't used or required by any
applications in the macOS Configuration project.
2020-09-12 09:45:27 -06:00
Brooke Kuhlmann
b7c89266f6 Fixed Homebrew cask verifier deprecation warning
Resolves the following warning when using Homebrew 2.5.0:

    Warning: Calling brew cask list is deprecated! Use brew list

Removed conditional checks for the Skitch, Witch, and OpenEmu
applications since they are no longer supported.
2020-09-12 09:45:27 -06:00
Brooke Kuhlmann
09025fd976 Added version release notes 2020-07-22 20:15:48 -06:00
Brooke Kuhlmann
a97de70b65 Updated README screencast cover to SVG format
Replaces PNG in favor of SVG for faster loading and smaller memory
footprint.
2020-07-16 19:15:37 -06:00
Brooke Kuhlmann
1d75357a18 Fixed project requirements
Links were updated and version information was dropped in order to
specify the bare minimum requirements and reduce situations where the
documentation might not always be up-to-date with the *exact* version
being used.
2020-06-20 08:18:46 -06:00
Brooke Kuhlmann
3c78a1cbf0 Refactored Rakefile requirements
Turns out the rescue block wasn't providing a lot of additional aid as
the Bundler and Rake errors are sufficient. By removing this block, the
error output remains clear and improves readability.
2020-06-18 07:14:35 -06:00
Brooke Kuhlmann
3158d024df Updated to Git Lint 1.0.0
It is necessary to drop Git Cop because it has been deprecated. [Git
Lint](https://www.alchemists.io/projects/git-lint) is the new offical
gem for analyzing Git commit quality.
2020-06-13 15:47:00 -06:00
Brooke Kuhlmann
62295d0851 Updated GitHub templates
Provides more clarity on the format desired when opening up an issue or
a pull request. The order of sections was rearranged to focus on the
*why* and *what* of the root issue.

Optional sections remain encouraged but are not required.
2020-06-13 09:24:27 -06:00
Brooke Kuhlmann
34f7dad25d Fixed screencast image URL
The URL was being built incorrectly originally but is now fixed.
2020-04-04 15:09:07 -06:00
Brooke Kuhlmann
e8101bbb3b Updated README screencast URL
Necessary to point to new URL which doesn't force the HTML format (will
provide more flexibility in the future).
2020-04-03 11:40:07 -06:00
Brooke Kuhlmann
3f9eaf969d Updated README credit URL
Necessary to pick up new author profile URL.
2020-04-03 11:32:44 -06:00
Brooke Kuhlmann
75e9401ff3 Added version release notes 2020-04-01 10:40:58 -06:00
Brooke Kuhlmann
413d4a65fe Updated to Ruby 2.7.1
Addresses the following security issues:

- CVE-2020-16255: Unsafe Object Creation Vulnerability in JSON
  (Additional fix)
- CVE-2020-10933: Heap exposure vulnerability in the socket library

[Details](https://chl.li/ljREu).
2020-03-31 13:22:33 -06:00
Brooke Kuhlmann
5dbed92f89 Updated README screencast to use larger image
Leverages a larger image so the terminal is easier to read at first
glance.
2020-03-29 08:12:09 -06:00
Brooke Kuhlmann
97893843de Updated documentation to ASCII Doc format
Provides enhanced capabilities and customization beyond what Markdown
provides.
2020-03-25 19:04:44 -06:00
Brooke Kuhlmann
9a37f06826 Updated to Code of Conduct 2.0.0
Includes improved enforcement guidelines. Format has been switched to
ASCII Doc from Markdown in order to leverage enhanced documentation
capabilities.
2020-03-20 11:30:46 -06:00
Brooke Kuhlmann
50b9edd7f7 Removed README images
These are now hosted on https://www.alchemists.io so binaries don't
pollute the Git repository. This is the first step of many to migrate
more project information over to https://www.alchemists.io.
2020-03-15 15:31:53 -06:00
Brooke Kuhlmann
1769a8234a Added README production and development setup instructions
Improves the setup experience by explaining how to use the project for
production and/or development purposes.
2020-03-15 12:09:09 -06:00
Brooke Kuhlmann
788aec169a Updated Circle CI build label
Properly displays the correct label for building of the project.
2020-03-15 08:38:10 -06:00
Brooke Kuhlmann
0ad8cc432c Updated to Git Cop 4.0.0
[Details](https://github.com/bkuhlmann/git-cop/releases/tag/4.0.0).
2020-01-01 13:54:02 -07:00
20 changed files with 672 additions and 612 deletions

View File

@@ -1,11 +1,14 @@
## Overview
<!-- Required. Describe, in detail, the behavior experienced and what is desired. -->
## Steps to Recreate
<!-- Optional. List exact steps (numbered list) to reproduce errant behavior. Delete if unused. -->
<!-- Required. Describe, briefly, the behavior experienced. -->
## 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
<!-- Optional. What is your operating system, software version(s), etc. Delete if unused. -->
<!-- Required. What is your operating system, software version(s), etc. -->

View File

@@ -1,11 +1,11 @@
## Overview
<!-- Required. Why is this important/necessary? -->
## 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. -->
<!-- Required. Why is this important/necessary and what is the overarching architecture. -->
## 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. -->

View File

@@ -1 +1 @@
2.7.0
3.0.0

204
CHANGES.adoc Normal file
View File

@@ -0,0 +1,204 @@
= Changes
== 11.0.0 (2020-12-30)
* Fixed Circle CI configuration for Bundler config path - Brooke Kuhlmann
* Added Circle CI explicit Bundle install configuration - Brooke Kuhlmann
* Updated to Git Lint 2.0.0 - Brooke Kuhlmann
* Updated to Ruby 3.0.0 - Brooke Kuhlmann
== 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.

View File

@@ -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
View 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].

View File

@@ -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
View 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.

View File

@@ -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.

View File

@@ -3,4 +3,4 @@
source "https://rubygems.org"
gem "rake", "~> 13.0"
gem "git-cop", "~> 3.5"
gem "git-lint", "~> 2.0"

View File

@@ -1,4 +1,4 @@
# Apache License
= Apache License
Version 2.0, January 2004
@@ -6,7 +6,7 @@ http://www.apache.org/licenses
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
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
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
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to
reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and
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
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
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
or without modifications, and in Source or Object form, provided that You meet the following
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
files; and
. You must cause any modified files to carry prominent notices stating that You changed the files;
and
3. 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
notices that do not pertain to any part of the Derivative Works; and
. 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
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
Works that You distribute must include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not pertain to any part of the
Derivative Works, in at least one of the following places: within a NOTICE text file
distributed as part of the Derivative Works; within the Source form or documentation, if
provided along with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of the NOTICE
file are for informational purposes only and do not modify the License. You may add Your own
attribution notices within Derivative Works that You distribute, alongside or as an addendum to
the NOTICE text from the Work, provided that such additional attribution notices cannot be
construed as modifying the License.
. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works
that You distribute must include a readable copy of the attribution notices contained within such
NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in
at least one of the following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along with the Derivative
Works; or, within a display generated by the Derivative Works, if and wherever such third-party
notices normally appear. The contents of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such
additional attribution notices cannot be construed as modifying the License.
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,
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.
## 5. Submission of Contributions
== 5. Submission of Contributions
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
@@ -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
Contributions.
## 6. Trademarks
== 6. Trademarks
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
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
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
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
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
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
for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights
@@ -151,11 +150,11 @@ additional liability.
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
compliance with the License. You may obtain a [copy](http://www.apache.org/licenses/LICENSE-2.0) of
the License.
compliance with the License. You may obtain a link:https://www.apache.org/licenses/LICENSE-2.0[copy]
of the License.
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

249
README.adoc Normal file
View 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 11.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`, youll 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,
youll 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.
Youll 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 cant 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, youll 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
View File

@@ -1,258 +0,0 @@
<p align="center">
<img src="mac_os.png" alt="MacOS Icon"/>
</p>
# macOS
[![Circle CI Status](https://circleci.com/gh/bkuhlmann/mac_os.svg?style=svg)](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
[![asciicast](https://asciinema.org/a/278158.svg)](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).

View File

@@ -1,9 +1,5 @@
# frozen_string_literal: true
begin
require "git/cop/rake/setup"
rescue LoadError => error
puts error.message
end
require "git/lint/rake/setup"
task default: :git_cop
task default: :git_lint

View File

@@ -24,9 +24,9 @@ jobs:
- run:
name: Ruby Install
command: |
curl https://cache.ruby-lang.org/pub/ruby/${CI_RUBY_VERSION::-2}/ruby-$CI_RUBY_VERSION.tar.bz2 > ../ruby-$CI_RUBY_VERSION.tar.gz
cd ..
tar --extract --bzip2 --verbose --file ruby-$CI_RUBY_VERSION.tar.gz
curl https://cache.ruby-lang.org/pub/ruby/${CI_RUBY_VERSION::-2}/ruby-$CI_RUBY_VERSION.tar.gz > ruby-$CI_RUBY_VERSION.tar.gz
tar --extract --gzip --verbose --file ruby-$CI_RUBY_VERSION.tar.gz
cd ruby-$CI_RUBY_VERSION
./configure
make
@@ -48,7 +48,8 @@ jobs:
name: Bundler Install
command: |
gem update --system
bundle install --path vendor/bundle
bundle config set path "vendor/bundle"
bundle install
- type: cache-save
name: Bundler Store
@@ -57,5 +58,5 @@ jobs:
- vendor/bundle
- run:
name: Rake Run
name: Build
command: bundle exec rake

View File

@@ -136,7 +136,7 @@ export -f install_program
# Parameters: $1 (required) - Repository URL, $2 (required) - Install path, $3 (optional) - Git clone options.
install_git_app() {
local repository_url="$1"
local app_name=$(get_file_name "$2")
local app_name=$(get_basename "$2")
local install_path="$2"
local options="--quiet"
@@ -175,7 +175,7 @@ export -f install_git_project
# Parameters: $1 (required) - URL, $2 (required) - Install path.
install_file() {
local file_url="$1"
local file_name=$(get_file_name "$1")
local file_name=$(get_basename "$1")
local install_path="$2"
if [[ ! -e "$install_path" ]]; then
@@ -206,7 +206,7 @@ export -f download_file
# Parameters: $1 (required) - Application source path, $2 (required) - Application name.
install_app() {
local install_root=$(get_install_root "$2")
local file_extension=$(get_file_extension "$2")
local file_extension=$(get_extension "$2")
printf "Installing: $install_root/$2...\n"

View File

@@ -5,7 +5,7 @@ set -o errexit
set -o pipefail
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_WORK_PATH=/tmp/downloads
export MAC_OS_CONFIG_PATH="../mac_os-config"

View File

@@ -2,6 +2,19 @@
# 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.
# Parameters: $1 (required) - The file name.
get_install_path() {
@@ -17,24 +30,11 @@ 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.
# Parameters: $1 (required) - The file name.
get_install_root() {
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.
case $file_extension in
@@ -52,10 +52,17 @@ 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.
# Parameters: $1 (required) - The file name.
get_file_extension() {
local name=$(get_file_name "$1")
get_extension() {
local name=$(get_basename "$1")
local extension="${1##*.}" # Excludes dot.
if [[ "$name" == "$extension" ]]; then
@@ -64,11 +71,4 @@ get_file_extension() {
printf "$extension"
fi
}
export -f get_file_extension
# Answers the file name.
# Parameters: $1 (required) - The file path.
get_file_name() {
printf "${1##*/}" # Answers file or directory name.
}
export -f get_file_name
export -f get_extension

View File

@@ -9,7 +9,6 @@ verify_homebrew_formulas() {
local applications="$(brew list)"
while read line; do
# Skip blank or comment lines.
if [[ "$line" == "brew install"* ]]; then
local application=$(printf "$line" | awk '{print $3}')
@@ -18,11 +17,6 @@ verify_homebrew_formulas() {
application="gnupg"
fi
# Exception: "hg" is the binary but is listed as "mercurial".
if [[ "$application" == "hg" ]]; then
application="mercurial"
fi
verify_listed_application "$application" "${applications[*]}"
fi
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_formulas"
@@ -35,23 +29,11 @@ export -f verify_homebrew_formulas
verify_homebrew_casks() {
printf "\nChecking Homebrew casks...\n"
local applications="$(brew cask list)"
local applications="$(brew list --cask)"
while read line; do
# Skip blank or comment lines.
if [[ "$line" == "brew cask install"* ]]; then
local application=$(printf "$line" | awk '{print $4}')
# Skip: Only necessary for the purpose of licensing system preference.
if [[ "$application" == "witch" ]]; then
continue
fi
# Skip: Bug with Homebrew Cask as these apps never show up as installed.
if [[ "$application" == "skitch" || "$application" == "openemu" ]]; then
continue
fi
verify_listed_application "$application" "${applications[*]}"
fi
done < "$MAC_OS_CONFIG_PATH/bin/install_homebrew_casks"
@@ -67,7 +49,6 @@ verify_app_store_applications() {
local applications="$(mas list)"
while read line; do
# Skip blank or comment lines.
if [[ "$line" == "mas install"* ]]; then
local application=$(printf "$line" | awk '{print $3}')
verify_listed_application "$application" "${applications[*]}"
@@ -99,7 +80,6 @@ verify_applications() {
# For each application name, check to see if the application is installed. Otherwise, skip.
for name in $file_names; do
# Pass the key value to verfication.
verify_application "${!name}"
done
@@ -111,8 +91,6 @@ export -f verify_applications
# Parameters: $1 (required) - The file name.
verify_application() {
local file_name="$1"
# Display the missing install if not found.
local install_path=$(get_install_path "$file_name")
if [[ ! -e "$install_path" ]]; then
@@ -143,7 +121,6 @@ export -f verify_extensions
verify_path() {
local path="$1"
# Display the missing path if not found.
if [[ ! -e "$path" ]]; then
printf " - Missing: $path\n"
fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB