Compare commits

..

56 Commits
1.0.0 ... 4.1.0

Author SHA1 Message Date
Brooke Kuhlmann
c0b9be502b Added version release changes. 2018-04-01 10:56:35 -06:00
Brooke Kuhlmann
66cd8d988e Updated to Git Cop 2.2.0.
[Changes](https://is.gd/OEDYpE).
2018-04-01 09:07:07 -06:00
Brooke Kuhlmann
955af0fc9e Updated to Ruby 2.5.1.
[Details](https://is.gd/hSEMaL).
2018-03-30 17:32:36 -06:00
Brooke Kuhlmann
9730e0ce45 Updated to Circle CI 2.0.0 configuration.
Uses latest configuration version in order to not be caught off-guard
if/when they drop v1.0.0 support.

[Details](https://circleci.com/docs/2.0).
2018-01-28 07:44:33 -07:00
Brooke Kuhlmann
94373dd5e8 Updated README screencast tutorial.
Updated to use latest version of software (not that the features have
changed much).
2018-01-07 14:14:22 -07:00
Brooke Kuhlmann
87282969de Updated README license information.
Simplified the text by removing the "(c)" as the use of "Copyright" is
good enough.

[ci skip]
2018-01-06 15:00:50 -07:00
Brooke Kuhlmann
6a6286755e Removed Patreon badge from README.
No longer planning to use this service.

[ci skip]
2018-01-02 20:25:45 -07:00
Brooke Kuhlmann
5866049618 Added version release changes. 2018-01-01 14:00:44 -07:00
Brooke Kuhlmann
3cba8eaa48 Updated to Apache 2.0 license.
Out of all permissive licenses, this provides the clearest terms and
conditions.

[Details](https://choosealicense.com/licenses/apache-2.0).

[ci skip]
2017-12-31 10:17:06 -07:00
Brooke Kuhlmann
cd89faac07 Updated to Ruby 2.5.0.
[Changes](http://bit.ly/2C4KviX).
2017-12-25 06:49:05 -07:00
Brooke Kuhlmann
ea8944a1dc Updated to Ruby 2.4.3.
Fixes a `Net::FTP` security issue.

[Details](http://bit.ly/2jU2KzV).
2017-12-14 19:40:00 -07:00
Brooke Kuhlmann
1e6e9a43bd Added Gemfile.lock to .gitignore.
It's not necessary to track exact details of the gems used in this
project as they are used for build purposes only.
2017-12-10 10:18:56 -07:00
Brooke Kuhlmann
68c1ea0515 Added version release changes. 2017-11-26 15:26:28 -07:00
Brooke Kuhlmann
419fceba0c Updated boot disk documenation to mention APFS.
Aids new installs with the correct option to choose from the menu
prompt.
2017-11-26 08:59:06 -07:00
Brooke Kuhlmann
9fba750712 Updated to Rake 12.3.0.
[Changes](http://bit.ly/2AU14wd).
2017-11-18 08:53:59 -07:00
Brooke Kuhlmann
de9e9dc73e Updated Gemfile.lock file.
Was accidentally missed as part of the previous commit.
2017-11-05 17:12:04 -07:00
Brooke Kuhlmann
0f13af9692 Updated to Git Cop 1.7.0.
[Changes](http://bit.ly/2AcYDV4).
2017-11-05 17:04:03 -07:00
Brooke Kuhlmann
7133361277 Updated to Bundler 1.16.0.
[Changes](http://bit.ly/2hFrBX5).
2017-11-04 13:53:22 -06:00
Brooke Kuhlmann
bc01beac6a Updated to Rubocop 0.51.0.
[Changes](http://bit.ly/2hlepWS).

There is a bug with Rubocop 0.51.0 where the `Style/CommentedKeyword`
cop raises false positives but can be ignored until the next release of
Rubocop is issued.
2017-10-29 15:08:27 -06:00
Brooke Kuhlmann
18ff862a4a Added version release changes. 2017-10-01 15:42:33 -06:00
Brooke Kuhlmann
c6ef97a88b Updated boot disk creation to use macOS High Sierra.
Necessary to create a boot disk for the latest macOS version.
2017-10-01 11:40:24 -06:00
Brooke Kuhlmann
67a17a0113 Updated to Ruby 2.4.2.
[Details](http://bit.ly/2yfBm4I).
2017-09-16 17:34:04 -06:00
Brooke Kuhlmann
e5f2051412 Updated to Git Cop 1.6.0.
[Changes](https://github.com/bkuhlmann/git-cop/releases/tag/v1.6.0).
2017-08-27 08:49:41 -06:00
Brooke Kuhlmann
bbdedb1a56 Updated gem dependencies. 2017-08-27 08:07:13 -06:00
Brooke Kuhlmann
cd595f1bd1 Fixed table of contents.
[ci skip]
2017-08-03 20:03:41 -06:00
Brooke Kuhlmann
e89a05fcbf Updated to Git Cop 1.5.0.
[Changes](https://github.com/bkuhlmann/git-cop/releases/tag/v1.5.0).
2017-07-30 16:03:20 -06:00
Brooke Kuhlmann
048908f2ba Updated to Git Cop 1.3.0.
- [Changes](https://github.com/bkuhlmann/git-cop/releases/tag/v1.3.0).
2017-07-17 20:15:58 -06:00
Brooke Kuhlmann
cc23f2d634 Added version release changes. 2017-07-16 16:13:10 -06:00
Brooke Kuhlmann
4d85b3353f Updated gem dependencies. 2017-07-10 20:55:04 -06:00
Brooke Kuhlmann
a757ed1210 Updated GitHub templates.
- Simplified more of the process.
- Reduced what is required/optional.
- Clarified the help comments.

[ci skip]
2017-06-28 20:26:57 -06:00
Brooke Kuhlmann
2994653972 Updated CONTRIBUTING documentation.
- With code quality tools in place to automate most requirements, the
  documentation doesn't need to be as verbose.
- The documentation has been reduced to the core essentials which means
  there is less to read and no more links to follow.

[ci skip]
2017-06-25 06:45:26 -06:00
Brooke Kuhlmann
6716e687d1 Updated gem dependencies. 2017-06-24 11:58:03 -06:00
Brooke Kuhlmann
18dccd7773 Added Git Cop support.
- Ensures Git commits are consistent.
- [Details](https://github.com/bkuhlmann/git-cop).
2017-06-18 16:05:53 -06:00
Brooke Kuhlmann
88494e2ed3 Updated README headers.
- Reserve H1's for project label and H2's for top-levels for the rest
  of the document.

[ci skip]
2017-06-18 14:15:34 -06:00
Brooke Kuhlmann
87e84a658f Added version release changes. 2017-04-29 07:52:54 -06:00
Brooke Kuhlmann
949a6b9d1e Fixed Java SE Development Kit install.
- Oracle makes it difficult to download the Java SE Development Kit as
  an offline download because the license must be accepted first. The
  JDK is important to have installed as several Homebrew apps require
  it to exist first.
- This provides a prompt for checking that the Java SE Development Kit
  has been installed before proceeding as the original way of
  installing it assumed you had visited the Oracle web site and
  accepted the license.
2017-04-29 07:44:50 -06:00
Sam Wolfson
3b6137ec36 Fix install-all command
The install-all command does not reflect that the `bin/install_homebrew` file was split into `bin/install_homebrew_formulas` and `bin/install_homebrew_casks`, and therefore fails to install.
2017-04-29 06:55:32 -06:00
Brooke Kuhlmann
e1bc7e939a Added version release changes. 2017-04-09 15:51:59 -06:00
Brooke Kuhlmann
8bf0ef473d Added Homebrew Casks install script.
- Provides support for installing Homebrew Casks.
2017-02-17 19:27:37 -07:00
Brooke Kuhlmann
79f7103179 Refactored Homebrew software as Homebrew Formulas.
- Allows for expansion of additional Homebrew software in the future
  (i.e. taps, bottles, casks, etc.)
2017-02-17 19:18:02 -07:00
Brooke Kuhlmann
38fa30a028 Updated README semantic versioning order.
- It's easier to think about versions in the order of major, minor,
  and maintenance.

[ci skip]
2017-02-07 07:20:00 -07:00
Brooke Kuhlmann
a2a2820098 Updated contributing documentation.
- Simplified the documentation to be more succinct in what is required
  (especially in terms of the Style Guides and GitHub pull request and
  issue template).

[ci skip]
2017-02-05 11:26:54 -07:00
Brooke Kuhlmann
3a896882c9 Added version release changes. 2017-01-08 10:23:13 -07:00
Brooke Kuhlmann
8af0c44eba Fixed install of zip app downloads with sub-directories.
- Discovered some applications, packaged in zip file format, would
  extract to a sub-directory. This was problematic because all zip app
  installs previously assumed the app would be unzipped in the current
  directory. This fixes that situation where an app might be located in
  a sub-directory or several sub-directory deep.
- The easiest fix for this problem would have been to the `-j` option
  for *junk* paths via unzip: "The archive's directory structure is not
  recreated; all files are deposited in the extraction directory (by
  default, the current one)." ...but some zip files, when unzipped, run
  executable code that creates the sub-directory structure dynamically
  which makes the `-j` option not viable.
- The solution used to fix this problem uses `find` to determine if the
  application to install is in a sub-directory. If so, then the app is
  copied to the root folder (i.e. $MAC_OS_WORK_PATH) so the script can
  install as it has done in the past. Because the file copy is executed
  only if `find` finds something, this makes the copy optional for sub-
  directories and is a no-op for standard zip files with no sub-
  directories.

Discovered that some zip app downloads use executable scripts to
  build for the particular machine when unzipped.

http://earthlingsoft.net/UnicodeChecker/index.html
2017-01-08 10:12:20 -07:00
Brooke Kuhlmann
d9440953ac Added version release changes. 2017-01-01 15:22:20 -07:00
Brooke Kuhlmann
8528e0ff01 Removed CHANGELOG.md (use CHANGES.md instead).
- Simplifies the name since "Log" is implied and is one of the three
  common file names for this type of information: CHANGELOG.md,
  CHANGES.md, and HISTORY.md

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

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

View File

@@ -1,16 +1,11 @@
## Expected Behavior
<!-- Required. Describe, in detail, the behavior experienced. -->
## Actual Behavior
<!-- Required. Describe, in detail, what should be the correct behavior. -->
## Overview
<!-- Required. Describe, in detail, the behavior experienced and what is desired. -->
## Steps to Recreate
<!-- Required. List the exact steps to the reproduce errant behavior. -->
<!-- Optional. List exact steps (numbered list) to reproduce errant behavior. Delete if unused. -->
0.
## Screenshots/Screencasts
<!-- Optional. Attach screenshot/screencast(s) that demo the behavior. Delete if unused. -->
## Environment
<!-- Optional. What is your operating system, software version(s), etc. Delete if unused. -->
## Screenshots/Screencasts
<!-- Optional. Attach screenshots/screencasts that demo the behavior. Delete if unused. -->

View File

@@ -2,10 +2,10 @@
<!-- Required. Why is this important/necessary? -->
## Details
<!-- Optional. List the key features/highlights as bullet points. -->
<!-- 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
<!-- Optional. Provide image/video support. Delete if unused. -->
<!-- Optional. Provide supporting image/video. Delete if unused. -->

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
Gemfile.lock

1
.ruby-version Normal file
View File

@@ -0,0 +1 @@
2.5.1

View File

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

78
CHANGES.md Normal file
View File

@@ -0,0 +1,78 @@
# v4.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.
# v4.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.
# v3.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.
# v3.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.
# v2.2.0 (2017-07-16)
- Added Git Cop support.
- Updated CONTRIBUTING documentation.
- Updated GitHub templates.
- Updated README headers.
- Updated gem dependencies.
# v2.1.0 (2017-04-29)
- Fixed Java SE Development Kit install.
- Fixed install-all command
# v2.0.0 (2017-04-09)
- Added Homebrew Casks install script.
- Updated README semantic versioning order.
- Updated contributing documentation.
- Refactored Homebrew software as Homebrew Formulas.
# v1.3.1 (2017-01-08)
- Fixed install of zip app downloads with sub-directories.
# v1.3.0 (2017-01-01)
- Updated README versioning documentation.
- Removed CHANGELOG.md (use CHANGES.md instead).
# v1.2.0 (2016-10-12)
- Fixed reinstaller path issues with application and extension scripts.
- Added screencast to README.
# v1.1.0 (2016-10-11)
- Fixed Bash script header to dynamically load correct environment.
- Fixed verification of Homebrew application installs.
- Added script hook for App Store software install.
- Added script hooks for unfinished custom configurations.
- Updated and clarified README documentation.
# v1.0.0 (2016-10-05)
- Initial version.

View File

@@ -1,35 +1,22 @@
# Overview
# 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.
Thanks for taking an interest in this open source project. Your support and involvement is greatly
appreciated. The following sections detail what you need to know in order to contribute.
# Requirements
## Code
- Follow these [Basic Programming Styles](https://github.com/bkuhlmann/style_guides/blob/master/programming/basic.md).
- Follow these [Code Review Styles](https://github.com/bkuhlmann/style_guides/blob/master/programming/code_reviews.md).
- Follow these [Git Styles](https://github.com/bkuhlmann/style_guides/blob/master/programming/git.md).
- Follow these [Bash Styles](https://github.com/bkuhlmann/style_guides/blob/master/programming/languages/bash.md).
- Follow these [CSS Styles](https://github.com/bkuhlmann/style_guides/blob/master/programming/languages/css.md).
- Follow these [Ruby Styles](https://github.com/bkuhlmann/style_guides/blob/master/programming/languages/ruby/ruby.md).
0. Read the project README before starting.
0. Fork the `master` branch of this repository and clone the fork locally.
0. Ensure there are no setup, usage, and/or test issues.
0. Add tests for new functionality and ensure they pass.
0. Submit a pull request, follow the instructions it provides, and ensure the build passes.
# Contributing Code
## Issues
0. Read the project README thoroughly before starting.
0. Fork the master branch of the repository.
0. Ensure there are no setup, usage, and/or test issues (again, follow the README).
0. Add tests for new functionality (refactoring and documentation changes can be excluded).
0. Ensure all tests pass.
0. Push your feature branch and submit a pull request.
0. Submit an issue via the GitHub Issues tab (assuming one does not
already exist) and follow the instructions it provides.
# Submitting Issues
## Feedback
0. Submit an issue via the GitHub Issues tab (assuming one does not already exist).
0. Clearly describe the issue (including steps to reproduce).
0. Specify your enviroment setup (OS, browser, language, etc. with version info).
0. Provide a stack dump (if possible).
0. Explain any additional details that might help diagnose the problem quickly.
# Feedback
Expect a response within one to three business days.
Changes, alternatives, and/or improvements might be suggested upon review.
- Expect a response within one to three business days.
- Changes, alternatives, and/or improvements might be suggested upon review.

6
Gemfile Normal file
View File

@@ -0,0 +1,6 @@
# frozen_string_literal: true
source "https://rubygems.org"
gem "rake", "~> 12.0"
gem "git-cop", "~> 2.2"

View File

@@ -1,20 +1,163 @@
Copyright (c) 2016 [Alchemists](https://www.alchemists.io).
# Apache License
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
Version 2.0, January 2004
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
http://www.apache.org/licenses
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
## 1. Definitions
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by
Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is
granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are
controlled by, or are under common control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this
License.
"Source" form shall mean the preferred form for making modifications, including but not limited to
software source code, documentation source, and configuration files.
"Object" form shall mean any form resulting from mechanical transformation or translation of a
Source form, including but not limited to compiled object code, generated documentation, and
conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the
License, as indicated by a copyright notice that is included in or attached to the work (an example
is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or
derived from) the Work and for which the editorial revisions, annotations, elaborations, or other
modifications represent, as a whole, an original work of authorship. For the purposes of this
License, Derivative Works shall not include works that remain separable from, or merely link (or
bind by name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version of the Work and any
modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted
to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity
authorized to submit on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent to the Licensor or
its representatives, including but not limited to communication on electronic mailing lists, source
code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor
for the purpose of discussing and improving the Work, but excluding communication that is
conspicuously marked or otherwise designated in writing by the copyright owner as "Not a
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
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
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
section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer
the Work, where such license applies only to those patent claims licensable by such Contributor that
are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You institute patent litigation
against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or
a Contribution incorporated within the Work constitutes direct or contributory patent infringement,
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
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
2. 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
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.
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
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
additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed with Licensor regarding such
Contributions.
## 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
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
KIND, either express or implied, including, without limitation, any warranties or conditions of
TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely
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
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
agreed to in writing, shall any Contributor be liable to You for damages, including any direct,
indirect, special, incidental, or consequential damages of any character arising as a result of this
License or out of the use or inability to use the Work (including but not limited to damages for
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
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
consistent with this License. However, in accepting such obligations, You may act only on Your own
behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or
claims asserted against, such Contributor by reason of your accepting any such warranty or
additional liability.
END OF TERMS AND CONDITIONS
Copyright 2016 [Alchemists](https://www.alchemists.io).
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.
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
implied. See the License for the specific language governing permissions and limitations under the
License.

178
README.md
View File

@@ -1,46 +1,70 @@
# macOS
[![Patreon](https://img.shields.io/badge/patreon-donate-brightgreen.svg)](https://www.patreon.com/bkuhlmann)
[![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 provides the foundational tooling for
automated macOS machine setup. To customize further see the companion
[macOS Config](https://github.com/bkuhlmann/mac_os-config) project for details.
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) - Foundation and 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
## Table of Contents
- [Features](#features)
- [Requirements](#requirements)
- [Setup](#setup)
- [Usage](#usage)
- [Customization](#customization)
- [Versioning](#versioning)
- [Code of Conduct](#code-of-conduct)
- [Contributions](#contributions)
- [License](#license)
- [History](#history)
- [Credits](#credits)
- [Features](#features)
- [Screencast](#screencast)
- [Requirements](#requirements)
- [Setup](#setup)
- [Usage](#usage)
- [Customization](#customization)
- [Versioning](#versioning)
- [Code of Conduct](#code-of-conduct)
- [Contributions](#contributions)
- [License](#license)
- [History](#history)
- [Credits](#credits)
<!-- Tocer[finish]: Auto-generated, don't remove. -->
# Features
## Features
- Provides a command line interface for installation and management of macOS software.
- Downloads and installs development tooling (required by Homebrew):
- 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 setting up a machine with a fresh install of the operation
system.
- Downloads and installs development tools (required by Homebrew):
- [Xcode Command Line Tools](https://developer.apple.com/xcode)
- [Java SE Development Kit](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
- Downloads, installs, and configures [Homebrew](http://brew.sh) command line software.
- Downloads, installs, and configures software applications generally not in the
[App Store](http://www.apple.com/macosx/whats-new/app-store.html).
- Downloads, installs, and configures software extensions.
- 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.
# Requirements
## Screencast
0. [macOS](https://www.apple.com/macos) (with latest software updates applied)
[![asciicast](https://asciinema.org/a/155990.png)](https://asciinema.org/a/155990)
## Requirements
0. [macOS High Sierra](https://www.apple.com/macos) (with latest software updates applied)
0. [Xcode](https://developer.apple.com/xcode) (with accepted license agreement)
# Setup
## Setup
Open a terminal window and execute one of the following setup sequences depending on your version
preference:
@@ -49,14 +73,14 @@ Current Version (stable):
git clone https://github.com/bkuhlmann/mac_os.git
cd mac_os
git checkout v1.0.0
git checkout 4.1.0
Master Version (unstable):
git clone https://github.com/bkuhlmann/mac_os.git
cd mac_os
# Usage
## Usage
Run the following script:
@@ -65,34 +89,36 @@ Run the following script:
You will be presented with the following options:
Boot:
B: Create boot disk.
B: Create boot disk.
Install:
b: Apply basic system settings.
t: Install development tools.
h: Install Homebrew software.
a: Install application software.
x: Install application software extensions.
d: Apply software defaults.
s: Setup installed software.
i: Install everything (i.e. executes all install options).
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.
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.
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 all install options or select a specific option to run a single option.
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 run.sh script. For
example, executing `./run.sh i` will execute the complete software install process.
The option prompt can be skipped by passing the desired option directly to the `bin/run` script. For
example, executing `bin/run i` will execute the complete software install process.
The machine should be rebooted after all install tasks have completed to ensure all settings have
been loaded.
@@ -100,51 +126,65 @@ 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.
## Customization
### Customization
Global settings can be configured via the following script:
All executable scripts can be found in the `bin` folder:
- `lib/settings.sh`
- `bin/apply_basic_settings`: Applies basic, initial, settings for setting up a machine. *This is
meant to be customized.*
- `bin/apply_default_settings`: Applies useful system and application defaults. *This is meant to be
customized.*
- `bin/create_boot_disk`: Creates macOS boot disk.
- `bin/install_app_store`: Installs macOS, GUI-based, App Store applications. *This is meant to be
customized.*
- `bin/install_applications`: Installs macOS, GUI-based, non-App Store applications. *This is meant
to be customized.*
- `bin/install_dev_tools`: Installs macOS development tools required by Homebrew.
- `bin/install_extensions`: Installs macOS application extensions and add-ons. *This is meant to be
customized.*
- `bin/install_homebrew_casks`: Installs Homebrew Formulas. *This is meant to be customized.*
- `bin/install_homebrew_formulas`: Installs Homebrew Casks. *This is meant to be customized.*
- `bin/restore_backup`: Restores system/application settings from backup image. *This is meant to be
customized.*
- `bin/run`: The main script and interface for macOS setup.
- `bin/setup_software`: Configures and launches (if necessary) installed software. *This is meant to
be customized.*
All script programs can be found in the `bin` folder:
- `bin/create_boot_disk` = Creates macOS boot disk.
- `bin/install_dev_tools` = Installs macOS development tools required by Homebrew.
- `bin/run` - The main script and interface for macOS setup.
The `lib` folder provides foundational functions for installing, re-installing, and uninstalling
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.
# Versioning
- `lib/settings.sh`: Defines global settings for software applications, extensions, etc.
## Versioning
Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements and/or bug fixes.
- 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
## 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
## Contributions
Read [CONTRIBUTING](CONTRIBUTING.md) for details.
# License
## License
Copyright (c) 2016 [Alchemists](https://www.alchemists.io).
Read the [LICENSE](LICENSE.md) for details.
Copyright 2016 [Alchemists](https://www.alchemists.io).
Read [LICENSE](LICENSE.md) for details.
# History
## History
Read the [CHANGELOG](CHANGELOG.md) for details.
Read [CHANGES](CHANGES.md) for details.
Built with [Bashsmith](https://github.com/bkuhlmann/bashsmith).
# Credits
## Credits
Developed by [Brooke Kuhlmann](https://www.alchemists.io) at
[Alchemists](https://www.alchemists.io).

9
Rakefile Normal file
View File

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

18
bin/apply_basic_settings Executable file
View File

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

18
bin/apply_default_settings Executable file
View File

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

View File

@@ -1,4 +1,4 @@
#! /bin/bash
#! /usr/bin/env bash
# DESCRIPTION
# Creates macOS boot disk.
@@ -12,7 +12,7 @@ printf " 1. Insert the USB boot disk into the machine to be upgraded.\n"
printf " 2. Reboot the machine.\n"
printf " 3. Hold down the OPTION key before the Apple logo appears.\n"
printf " 4. Select the USB boot disk from the menu.\n"
printf " 5. Format the machine's internal drive using Disk Utility.\n"
printf " 5. Format the machine's internal drive using Disk Utility (choose APFS).\n"
printf " 6. Install the new operating system.\n"
printf "\nmacOS Reinstall:\n"
printf " 1. Click the Apple icon from the operating system main menu.\n"

18
bin/install_app_store Executable file
View File

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

18
bin/install_applications Executable file
View File

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

View File

@@ -1,4 +1,4 @@
#! /bin/bash
#! /usr/bin/env bash
# DESCRIPTION
# Installs development tooling requirements.
@@ -6,11 +6,18 @@
printf "Installing Xcode CLI tools...\n"
xcode-select --install
read -p "Have you completed the Xcode CLI tools install (y/n)? " response
if [[ "$response" != "y" ]]; then
read -p "Have you completed the Xcode CLI tools install (y/n)? " xcode_response
if [[ "$xcode_response" != "y" ]]; then
printf "ERROR: Xcode CLI tools must be installed before proceeding.\n"
exit 1
fi
printf "Installing Java...\n"
install_java "$JAVA_URL" "$JAVA_VOLUME_NAME"
printf "Installing $JAVA_LABEL...\n"
printf "%s\n" "You must manually accept the license and download the $JAVA_LABEL: $JAVA_DOWNLOAD_URL."
open $JAVA_DOWNLOAD_URL
read -p "Have you completed the $JAVA_LABEL install (y/n)? " java_response
if [[ "$java_response" != "y" ]]; then
printf "ERROR: $JAVA_LABEL must be installed before proceeding.\n"
exit 1
fi

18
bin/install_extensions Executable file
View File

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

18
bin/install_homebrew_casks Executable file
View File

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

18
bin/install_homebrew_formulas Executable file
View File

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

18
bin/restore_backup Executable file
View File

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

40
bin/run
View File

@@ -1,4 +1,4 @@
#! /bin/bash
#! /usr/bin/env bash
# DESCRIPTION
# Executes the command line interface.
@@ -35,27 +35,29 @@ while true; do
printf "\nUsage: run OPTION\n"
printf "\nOSX Options:\n"
printf " Boot:\n"
printf " B: Create boot disk.\n"
printf " B: Create boot disk.\n"
printf " Install:\n"
printf " b: Apply basic settings.\n"
printf " t: Install development tools.\n"
printf " h: Install Homebrew software.\n"
printf " a: Install application software.\n"
printf " x: Install application software extensions.\n"
printf " d: Apply default settings.\n"
printf " s: Setup installed software.\n"
printf " i: Install everything (i.e. executes all install options).\n"
printf " b: Apply basic settings.\n"
printf " t: Install development tools.\n"
printf " hf: Install Homebrew Formulas.\n"
printf " hc: Install Homebrew Casks.\n"
printf " m: Install Mac App Store software.\n"
printf " a: Install application software.\n"
printf " x: Install application software extensions.\n"
printf " d: Apply default settings.\n"
printf " s: Setup installed software.\n"
printf " i: Install everything (i.e. executes all install options).\n"
printf " Restore:\n"
printf " R: Restore settings from backup.\n"
printf " R: Restore settings from backup.\n"
printf " Manage:\n"
printf " c: Check status of managed software.\n"
printf " C: Caffeinate machine.\n"
printf " ua: Uninstall application software.\n"
printf " ux: Uninstall application software extension.\n"
printf " ra: Reinstall application software.\n"
printf " rx: Reinstall application software extension.\n"
printf " w: Clean work (temp) directory.\n"
printf " q: Quit/Exit.\n\n"
printf " c: Check status of managed software.\n"
printf " C: Caffeinate machine.\n"
printf " ua: Uninstall application software.\n"
printf " ux: Uninstall application software extension.\n"
printf " ra: Reinstall application software.\n"
printf " rx: Reinstall application software extension.\n"
printf " w: Clean work (temp) directory.\n"
printf " q: Quit/Exit.\n\n"
read -p "Enter selection: " response
printf "\n"
process_option $response

18
bin/setup_software Executable file
View File

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

33
circle.yml Normal file
View File

@@ -0,0 +1,33 @@
version: 2
jobs:
build:
working_directory: ~/project
docker:
- image: circleci/ruby:2.5
environment:
BUNDLE_JOBS: 3
BUNDLE_RETRY: 3
BUNDLE_PATH: vendor/bundle
EDITOR: vim
steps:
- checkout
- type: cache-restore
name: Bundler Cache Restore
key: bundle-{{ checksum "Gemfile" }}
- run:
name: Bundler Install
command: |
gem update --system
bundle check || bundle install
- type: cache-save
name: Bundler Cache Store
key: bundle-{{ checksum "Gemfile" }}
paths:
- vendor/bundle
- run:
name: Rake Run
command: bundle exec rake

View File

@@ -1,4 +1,4 @@
#! /bin/bash
#! /usr/bin/env bash
# DESCRIPTION
# Defines software installer functions.
@@ -191,6 +191,7 @@ install_zip_app() {
printf "Preparing...\n"
cd "$MAC_OS_WORK_PATH"
unzip -q "$download_file"
find . -type d -name "$app_name" -print -exec cp -pR {} . > /dev/null 2>&1 \;
)
install_app "$MAC_OS_WORK_PATH" "$app_name"

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
#! /bin/bash
#! /usr/bin/env bash
# DESCRIPTION
# Defines global settings.
@@ -11,12 +11,12 @@ set -o pipefail
IFS=$'\n\t'
# Globals
export MAC_OS_BOOT_DISK_CREATOR="/Applications/Install macOS Sierra.app/Contents/Resources/createinstallmedia"
export MAC_OS_BOOT_DISK_CREATOR="/Applications/Install macOS High Sierra.app/Contents/Resources/createinstallmedia"
export MAC_OS_BOOT_DISK_PATH="/Volumes/Untitled"
export MAC_OS_INSTALLER_PATH="/Applications/Install macOS Sierra.app"
export MAC_OS_INSTALLER_PATH="/Applications/Install macOS High Sierra.app"
export MAC_OS_WORK_PATH=/tmp/downloads
export MAC_OS_CONFIG_PATH="../mac_os-config"
# Java
export JAVA_VOLUME_NAME="JDK 8 Update 101"
export JAVA_URL="http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jdk-8u101-macosx-x64.dmg"
export JAVA_LABEL="Java SE Development Kit"
export JAVA_DOWNLOAD_URL="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"

View File

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

View File

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

View File

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