Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
920b111ef4 | ||
|
|
6553f9be6d | ||
|
|
24fe1edefd | ||
|
|
9933eee1cd | ||
|
|
4fa7380216 | ||
|
|
179b4f05a3 | ||
|
|
91acff4756 | ||
|
|
b0b4d51e2c | ||
|
|
c17a132408 | ||
|
|
33fe1c7003 | ||
|
|
605b1e4c3f | ||
|
|
2170941383 | ||
|
|
63ef52185b | ||
|
|
74da03bc07 | ||
|
|
ada1b73c13 | ||
|
|
d196d18641 | ||
|
|
a360bf535a | ||
|
|
f5c6b6d40e | ||
|
|
bd3caab3fc | ||
|
|
2f0fa77831 | ||
|
|
017f79442b | ||
|
|
cf648adae7 | ||
|
|
af7aa4d0d0 | ||
|
|
0bafd0ea25 | ||
|
|
045a254219 | ||
|
|
113f3b88f5 | ||
|
|
4b77ecefd5 | ||
|
|
fc2cca07cf | ||
|
|
24bf3a7e62 | ||
|
|
4159fbce71 | ||
|
|
1ef42c9040 | ||
|
|
a6e170cead | ||
|
|
691d87d0f1 | ||
|
|
5e5ad4100e | ||
|
|
93151ac7d2 | ||
|
|
966b1596be | ||
|
|
5991bd6da6 | ||
|
|
b3f799acfc | ||
|
|
ea4027714a | ||
|
|
4f599099a1 | ||
|
|
c161493c32 | ||
|
|
387241227a | ||
|
|
ecf85b4526 | ||
|
|
06f6302b9a | ||
|
|
7a9bb00877 | ||
|
|
2a01bac2b0 | ||
|
|
b2b4d49c52 | ||
|
|
0945809dc4 |
@@ -8,24 +8,24 @@ jobs:
|
||||
- checkout
|
||||
|
||||
- restore_cache:
|
||||
name: Bundler Restore
|
||||
name: Gems Restore
|
||||
keys:
|
||||
- gem-cache-{{.Branch}}-{{checksum "Gemfile"}}
|
||||
- gem-cache-
|
||||
|
||||
- run:
|
||||
name: Bundler Install
|
||||
name: Gems Install
|
||||
command: |
|
||||
gem update --system
|
||||
bundle config set path "vendor/bundle"
|
||||
bundle install
|
||||
|
||||
- save_cache:
|
||||
name: Bundler Store
|
||||
name: Gems Store
|
||||
key: gem-cache-{{.Branch}}-{{checksum "Gemfile"}}
|
||||
paths:
|
||||
- vendor/bundle
|
||||
|
||||
- run:
|
||||
name: Build
|
||||
name: Rake
|
||||
command: bundle exec rake
|
||||
|
||||
15
.github/ISSUE_TEMPLATE.md
vendored
15
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,11 +1,8 @@
|
||||
## Overview
|
||||
<!-- Required. Describe, briefly, the behavior experienced and desired. -->
|
||||
## Why
|
||||
<!-- Required. Describe, briefly, why this issue is important. -->
|
||||
|
||||
## Screenshots/Screencasts
|
||||
<!-- Optional. Attach screenshot(s) and/or screencast(s) that demo the behavior. -->
|
||||
## How
|
||||
<!-- Optional. List exact steps (numbered) to implement or reproduce behavior. Screen shots/casts are welcome. -->
|
||||
|
||||
## Steps to Recreate
|
||||
<!-- Required. List exact steps (numbered list) to reproduce errant behavior. -->
|
||||
|
||||
## Environment
|
||||
<!-- Required. What is your operating system, software version(s), etc. -->
|
||||
## Notes
|
||||
<!-- Optional. Provide additional details (i.e operating system, software version(s), stack dump, etc.) -->
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.1.2
|
||||
3.3.0
|
||||
|
||||
10
CITATION.cff
10
CITATION.cff
@@ -1,10 +1,10 @@
|
||||
cff-version: 1.2.0
|
||||
message: Please use the following metadata when citing this project in your work.
|
||||
title: macOS
|
||||
abstract: Provides a shell based framework for automating the setup of a macOS machine.
|
||||
version: 15.0.4
|
||||
abstract: Shell scripts for automated macOS machine setup.
|
||||
version: 18.0.0
|
||||
license: Hippocratic-2.1
|
||||
date-released: 2022-04-17
|
||||
date-released: 2024-01-06
|
||||
authors:
|
||||
- family-names: Kuhlmann
|
||||
given-names: Brooke
|
||||
@@ -17,5 +17,5 @@ keywords:
|
||||
- automation
|
||||
- setup
|
||||
- recovery
|
||||
repository-code: https://www.alchemists.io/projects/mac_os
|
||||
repository-artifact: https://www.alchemists.io/projects/mac_os
|
||||
repository-code: https://alchemists.io/projects/mac_os
|
||||
repository-artifact: https://alchemists.io/projects/mac_os
|
||||
|
||||
9
Gemfile
9
Gemfile
@@ -1,9 +1,10 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
ruby File.read(".ruby-version").strip
|
||||
ruby file: ".ruby-version"
|
||||
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "caliber", "~> 0.5"
|
||||
gem "git-lint", "~> 4.0"
|
||||
gem "rake", "~> 13.0"
|
||||
gem "caliber", "~> 0.47"
|
||||
gem "debug", "~> 1.9"
|
||||
gem "git-lint", "~> 7.0"
|
||||
gem "rake", "~> 13.1"
|
||||
|
||||
32
README.adoc
32
README.adoc
@@ -8,13 +8,13 @@ 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
|
||||
link:https://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 foundational framework for building custom macOS machine setups.
|
||||
* *link:https://www.alchemists.io/projects/mac_os-config[macOS Configuration]* - The layer on top of
|
||||
* *link:https://alchemists.io/projects/mac_os-config[macOS Configuration]* - The layer on top of
|
||||
this _macOS_ project which defines a custom machine implementation. The project is meant to be
|
||||
forked for as many custom machine setups as needed.
|
||||
|
||||
@@ -40,12 +40,12 @@ toc::[]
|
||||
|
||||
== 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]
|
||||
[link=https://alchemists.io/screencasts/mac_os]
|
||||
image::https://alchemists.io/images/screencasts/mac_os/cover.svg[Screencast,600,240,role=focal_point]
|
||||
|
||||
== Requirements
|
||||
|
||||
. link:https://www.apple.com/macos/monterey[macOS Monterey]
|
||||
. link:https://www.apple.com/macos/sonoma[macOS Sonoma]
|
||||
. link:https://developer.apple.com/xcode[Xcode]
|
||||
|
||||
== Setup
|
||||
@@ -56,7 +56,7 @@ To install, run:
|
||||
----
|
||||
git clone https://github.com/bkuhlmann/mac_os.git
|
||||
cd mac_os
|
||||
git checkout 15.0.4
|
||||
git checkout 18.0.0
|
||||
----
|
||||
|
||||
== Usage
|
||||
@@ -172,13 +172,13 @@ All executable scripts can be found in the `bin` folder:
|
||||
* `bin/run` (required): The main script and interface for macOS setup.
|
||||
|
||||
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
|
||||
software. Everything provided via the link:https://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.
|
||||
link:https://alchemists.io/projects/mac_os-config[macOS Config] project for further details.
|
||||
|
||||
* `lib/settings.sh`: Defines global settings for software applications, extensions, etc.
|
||||
|
||||
== Troubleshooting
|
||||
=== Troubleshooting
|
||||
|
||||
* *Pi-hole*: When using link:https://pi-hole.net[Pi-hole], you might need to temporarily disable
|
||||
prior to upgrading as you might experience various errors with Apple not being able to detect an
|
||||
@@ -216,18 +216,18 @@ git clone https://github.com/bkuhlmann/mac_os.git
|
||||
cd mac_os
|
||||
----
|
||||
|
||||
== link:https://www.alchemists.io/policies/license[License]
|
||||
== link:https://alchemists.io/policies/license[License]
|
||||
|
||||
== link:https://www.alchemists.io/policies/security[Security]
|
||||
== link:https://alchemists.io/policies/security[Security]
|
||||
|
||||
== link:https://www.alchemists.io/policies/code_of_conduct[Code of Conduct]
|
||||
== link:https://alchemists.io/policies/code_of_conduct[Code of Conduct]
|
||||
|
||||
== link:https://www.alchemists.io/policies/contributions[Contributions]
|
||||
== link:https://alchemists.io/policies/contributions[Contributions]
|
||||
|
||||
== link:https://www.alchemists.io/projects/mac_os/versions[Versions]
|
||||
== link:https://alchemists.io/projects/mac_os/versions[Versions]
|
||||
|
||||
== link:https://www.alchemists.io/community[Community]
|
||||
== link:https://alchemists.io/community[Community]
|
||||
|
||||
== Credits
|
||||
|
||||
Engineered by link:https://www.alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].
|
||||
Engineered by link:https://alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].
|
||||
|
||||
8
Rakefile
8
Rakefile
@@ -1,8 +1,12 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "git/lint/rake/setup"
|
||||
require "git/lint/rake/register"
|
||||
require "rubocop/rake_task"
|
||||
|
||||
Git::Lint::Rake::Register.call
|
||||
RuboCop::RakeTask.new
|
||||
|
||||
task default: %i[git_lint rubocop]
|
||||
desc "Run code quality checks"
|
||||
task quality: %i[git_lint rubocop]
|
||||
|
||||
task default: :quality
|
||||
|
||||
@@ -1,5 +1,68 @@
|
||||
= Versions
|
||||
|
||||
== 18.0.0 (2024-01-06)
|
||||
|
||||
* Added Rakefile quality task - Brooke Kuhlmann
|
||||
* Updated Circle CI step names - Brooke Kuhlmann
|
||||
* Updated GitHub issue template with simplified sections - Brooke Kuhlmann
|
||||
* Updated gem dependencies - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.42.0 - Brooke Kuhlmann
|
||||
* Updated to Ruby 3.3.0 - Brooke Kuhlmann
|
||||
* Refactored Gemfile to use ruby file syntax - Brooke Kuhlmann
|
||||
|
||||
== 17.0.0 (2023-09-28)
|
||||
|
||||
* Added Debug gem - Brooke Kuhlmann
|
||||
* Updated to macOS Sonoma - Brooke Kuhlmann
|
||||
|
||||
== 16.0.4 (2023-06-19)
|
||||
|
||||
* Updated to Caliber 0.35.0 - Brooke Kuhlmann
|
||||
* Updated to Git Lint 6.0.0 - Brooke Kuhlmann
|
||||
* Updated to Refinements 11.0.0 - Brooke Kuhlmann
|
||||
|
||||
== 16.0.3 (2023-05-18)
|
||||
|
||||
* Updated to Caliber 0.30.0 - Brooke Kuhlmann
|
||||
|
||||
== 16.0.2 (2023-04-02)
|
||||
|
||||
* Fixed programs without extensions to install to user directory - Brooke Kuhlmann
|
||||
* Updated site URLs to use bare domain - Brooke Kuhlmann
|
||||
* Updated to Ruby 3.2.1 - Brooke Kuhlmann
|
||||
* Updated to Ruby 3.2.2 - Brooke Kuhlmann
|
||||
|
||||
== 16.0.1 (2023-02-05)
|
||||
|
||||
* Added Rake binstub - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.21.0 - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.25.0 - Brooke Kuhlmann
|
||||
* Updated to Git Lint 5.0.0 - Brooke Kuhlmann
|
||||
|
||||
== 16.0.0 (2022-12-25)
|
||||
|
||||
* Fixed Node installer to detect Node and version - Brooke Kuhlmann
|
||||
* Fixed Ruby installer to pass configuration options - Brooke Kuhlmann
|
||||
* Updated README sections - Brooke Kuhlmann
|
||||
* Updated installs for basic, default, and shell scripts - Brooke Kuhlmann
|
||||
* Updated run script to distinquish between applications and libraries - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.11.0 - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.16.0 - Brooke Kuhlmann
|
||||
* Updated to Ruby 3.1.3 - Brooke Kuhlmann
|
||||
* Updated to Ruby 3.2.0 - Brooke Kuhlmann
|
||||
* Updated to macOS Ventura - Brooke Kuhlmann
|
||||
* Removed configure software script - Brooke Kuhlmann
|
||||
* Removed mention of Intel CPUs from boot disk instructions - Brooke Kuhlmann
|
||||
* Removed system update from Ruby install - Brooke Kuhlmann
|
||||
* Removed uninstallers and reinstallers - Brooke Kuhlmann
|
||||
* Refactored download file function to use multi-line curl command - Brooke Kuhlmann
|
||||
|
||||
== 15.0.5 (2022-05-07)
|
||||
|
||||
* Updated to Caliber 0.6.0 - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.7.0 - Brooke Kuhlmann
|
||||
* Updated to Caliber 0.8.0 - Brooke Kuhlmann
|
||||
|
||||
== 15.0.4 (2022-04-17)
|
||||
|
||||
* Added GitHub sponsorship configuration - Brooke Kuhlmann
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Configures installed software.
|
||||
|
||||
set -o nounset
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/configure_software"
|
||||
|
||||
if [[ -x "$SCRIPT_PATH" ]]; then
|
||||
"$SCRIPT_PATH"
|
||||
else
|
||||
printf "WARNING: Configure software script does not exist or is not executable.\n"
|
||||
fi
|
||||
@@ -4,19 +4,19 @@
|
||||
|
||||
printf "macOS Boot Disk Tips\n"
|
||||
printf " - Use a USB drive (8GB or higher).\n"
|
||||
printf " - Use Disk Utility to format the USB drive as \"Mac OS Extended (Journaled)\".\n"
|
||||
printf " - Use Disk Utility to format the USB drive as \"APSF\".\n"
|
||||
printf " - Use Disk Utility to label the USB drive as \"Untitled\".\n"
|
||||
printf "\nmacOS Boot Disk Usage:\n"
|
||||
printf " 1. Insert the USB boot disk into the machine to be upgraded.\n"
|
||||
printf " 2. Reboot the machine.\n"
|
||||
printf " 3. Hold the POWER (Silicon) or OPTION (Intel) key before the Apple logo appears.\n"
|
||||
printf " 3. Press and hold the POWER key before the Apple logo appears.\n"
|
||||
printf " 4. Select the USB boot disk from the menu.\n"
|
||||
printf " 5. Use Disk Utility to delete and/or erase the hard drive including associated partitions.\n"
|
||||
printf " 6. Use Disk Utility to create a single \"APFS\" drive as a \"GUID Partition Table\".\n"
|
||||
printf " 6. Use Disk Utility to create a single \"APFS\" drive.\n"
|
||||
printf " 7. Install the new operating system.\n"
|
||||
printf "\nmacOS Boot Disk Recovery:\n"
|
||||
printf " 1. Start/restart the machine.\n"
|
||||
printf " 2. Hold the POWER (Silicon) or COMMAND+R (Intel) keys before the Apple logo appears.\n"
|
||||
printf " 2. Press and hold the POWER key before the Apple logo appears.\n"
|
||||
printf " 3. Wait for the macOS installer to load from the recovery partition.\n"
|
||||
printf " 4. Use the dialog options to launch Disk Utility, reinstall the system, etc.\n"
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Applies basic system settings.
|
||||
# Installs basic system settings.
|
||||
|
||||
set -o nounset
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/apply_basic_settings"
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_basics"
|
||||
|
||||
if [[ -x "$SCRIPT_PATH" ]]; then
|
||||
"$SCRIPT_PATH"
|
||||
@@ -1,13 +1,13 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Applies default settings.
|
||||
# Installs system and application default settings.
|
||||
|
||||
set -o nounset
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/apply_default_settings"
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_defaults"
|
||||
|
||||
if [[ -x "$SCRIPT_PATH" ]]; then
|
||||
"$SCRIPT_PATH"
|
||||
@@ -1,16 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs dotfiles.
|
||||
|
||||
set -o nounset
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_dotfiles"
|
||||
|
||||
if [[ -x "$SCRIPT_PATH" ]]; then
|
||||
"$SCRIPT_PATH"
|
||||
else
|
||||
printf "WARNING: Dotfiles install script does not exist or is not executable.\n"
|
||||
fi
|
||||
16
bin/install_shell
Executable file
16
bin/install_shell
Executable file
@@ -0,0 +1,16 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Installs shell.
|
||||
|
||||
set -o nounset
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
SCRIPT_PATH="$MAC_OS_CONFIG_PATH/bin/install_shell"
|
||||
|
||||
if [[ -x "$SCRIPT_PATH" ]]; then
|
||||
"$SCRIPT_PATH"
|
||||
else
|
||||
printf "WARNING: Shell script does not exist or is not executable.\n"
|
||||
fi
|
||||
6
bin/rake
Executable file
6
bin/rake
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "bundler/setup"
|
||||
|
||||
load Gem.bin_path "rake", "rake"
|
||||
20
bin/run
20
bin/run
@@ -4,9 +4,7 @@
|
||||
|
||||
source lib/installers.sh
|
||||
source lib/options.sh
|
||||
source lib/reinstallers.sh
|
||||
source lib/settings.sh
|
||||
source lib/uninstallers.sh
|
||||
source lib/utilities.sh
|
||||
source lib/verifiers.sh
|
||||
|
||||
@@ -32,29 +30,25 @@ while true; do
|
||||
printf " Boot:\n"
|
||||
printf " B: Create boot disk.\n"
|
||||
printf " Install:\n"
|
||||
printf " b: Apply basic settings.\n"
|
||||
printf " b: Install basics.\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 " df: Install dotfiles.\n"
|
||||
printf " d: Install defaults.\n"
|
||||
printf " s: Install shell.\n"
|
||||
printf " r: Restore backups.\n"
|
||||
printf " i: Install all (i.e. executes all of the above steps in order listed).\n"
|
||||
printf " Libraries:\n"
|
||||
printf " np: Install Node packages.\n"
|
||||
printf " rg: Install Ruby gems.\n"
|
||||
printf " rc: Install Rust crates.\n"
|
||||
printf " d: Apply default settings.\n"
|
||||
printf " cs: Configure installed software.\n"
|
||||
printf " i: Install all (i.e. executes all of the above steps in order listed).\n"
|
||||
printf " Restore:\n"
|
||||
printf " R: Restore settings from backup.\n"
|
||||
printf " l: Install libraries (i.e. executes all of the above steps in order listed).\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"
|
||||
read -p "Enter selection: " response
|
||||
|
||||
@@ -11,8 +11,16 @@ download_file() {
|
||||
|
||||
printf "%s\n" "Downloading $1..."
|
||||
clean_work_path
|
||||
mkdir $MAC_OS_WORK_PATH
|
||||
curl --header "$http_header" --location --retry 3 --retry-delay 5 --fail --silent --show-error "$url" >> "$MAC_OS_WORK_PATH/$file_name"
|
||||
mkdir "$MAC_OS_WORK_PATH"
|
||||
|
||||
curl --header "$http_header" \
|
||||
--location \
|
||||
--retry 3 \
|
||||
--retry-delay 5 \
|
||||
--fail \
|
||||
--silent \
|
||||
--show-error \
|
||||
"$url" >> "$MAC_OS_WORK_PATH/$file_name"
|
||||
}
|
||||
export -f download_file
|
||||
|
||||
@@ -193,8 +201,8 @@ export -f install_program
|
||||
# Installs Node.
|
||||
# Parameters: None.
|
||||
install_node() {
|
||||
if ! command -v fnm > /dev/null; then
|
||||
$(get_homebrew_bin_root)/fnm install --lts
|
||||
if [[ ! -x "$(command -v node)" ]]; then
|
||||
"$(get_homebrew_bin_root)/fnm" install --latest
|
||||
fi
|
||||
}
|
||||
export -f install_node
|
||||
@@ -205,9 +213,11 @@ install_ruby() {
|
||||
local version="$(cat $HOME/.ruby-version | tr -d '\n')"
|
||||
|
||||
if [[ ! -x "$(command -v ruby)" && -n $(ruby --version | grep --quiet "$version") ]]; then
|
||||
$(get_homebrew_bin_root)/frum install "$version"
|
||||
$(get_homebrew_bin_root)/frum local "$version"
|
||||
gem update --system && gem update
|
||||
"$(get_homebrew_bin_root)"/frum install "$version" \
|
||||
--with-openssl-dir="$(brew --prefix openssl)" \
|
||||
--enable-shared \
|
||||
--disable-silent-rules
|
||||
"$(get_homebrew_bin_root)"/frum local "$version"
|
||||
fi
|
||||
}
|
||||
export -f install_ruby
|
||||
|
||||
@@ -9,7 +9,7 @@ process_option() {
|
||||
'B')
|
||||
bin/create_boot_disk;;
|
||||
'b')
|
||||
bin/apply_basic_settings;;
|
||||
bin/install_basics;;
|
||||
't')
|
||||
bin/install_dev_tools;;
|
||||
'hf')
|
||||
@@ -22,38 +22,36 @@ process_option() {
|
||||
bin/install_applications;;
|
||||
'x')
|
||||
bin/install_extensions;;
|
||||
'df')
|
||||
bin/install_dotfiles;;
|
||||
'np')
|
||||
bin/install_node_packages;;
|
||||
'rg')
|
||||
bin/install_ruby_gems;;
|
||||
'rc')
|
||||
bin/install_rust_crates;;
|
||||
'd')
|
||||
bin/apply_default_settings;;
|
||||
'cs')
|
||||
bin/configure_software;;
|
||||
bin/install_defaults;;
|
||||
's')
|
||||
bin/install_shell;;
|
||||
'r')
|
||||
bin/restore_backup;;
|
||||
'i')
|
||||
caffeinate_machine
|
||||
bin/apply_basic_settings
|
||||
bin/install_basics
|
||||
bin/install_dev_tools
|
||||
bin/install_homebrew_formulas
|
||||
bin/install_homebrew_casks
|
||||
bin/install_app_store
|
||||
bin/install_applications
|
||||
bin/install_extensions
|
||||
bin/install_dotfiles
|
||||
bin/install_defaults
|
||||
bin/install_shell
|
||||
bin/restore_backup
|
||||
clean_work_path;;
|
||||
'np')
|
||||
bin/install_node_packages;;
|
||||
'rg')
|
||||
bin/install_ruby_gems;;
|
||||
'rc')
|
||||
bin/install_rust_crates;;
|
||||
'l')
|
||||
bin/install_node_packages
|
||||
bin/install_ruby_gems
|
||||
bin/install_rust_crates
|
||||
bin/apply_default_settings
|
||||
bin/configure_software
|
||||
clean_work_path;;
|
||||
'R')
|
||||
caffeinate_machine
|
||||
bin/restore_backup;;
|
||||
'c')
|
||||
bin/install_rust_crates;;
|
||||
'c')
|
||||
verify_homebrew_formulas
|
||||
verify_homebrew_casks
|
||||
verify_app_store_applications
|
||||
@@ -64,14 +62,6 @@ process_option() {
|
||||
verify_rust_crates;;
|
||||
'C')
|
||||
caffeinate_machine;;
|
||||
'ua')
|
||||
uninstall_application;;
|
||||
'ux')
|
||||
uninstall_extension;;
|
||||
'ra')
|
||||
reinstall_application;;
|
||||
'rx')
|
||||
reinstall_extension;;
|
||||
'w')
|
||||
clean_work_path;;
|
||||
'q');;
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Defines reinstall functions.
|
||||
|
||||
# Reinstall application.
|
||||
reinstall_application() {
|
||||
uninstall_application
|
||||
bin/install_applications
|
||||
}
|
||||
export -f reinstall_application
|
||||
|
||||
# Reinstall extension.
|
||||
reinstall_extension() {
|
||||
uninstall_extension
|
||||
bin/install_extensions
|
||||
}
|
||||
export -f reinstall_extension
|
||||
@@ -5,7 +5,7 @@ set -o errexit
|
||||
set -o pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
export MAC_OS_BOOT_DISK_CREATOR="/Applications/Install macOS Monterey.app/Contents/Resources/createinstallmedia"
|
||||
export MAC_OS_BOOT_DISK_CREATOR="/Applications/Install macOS Sonoma.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"
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
# Defines uninstall functions.
|
||||
|
||||
# Uninstalls selected application.
|
||||
uninstall_application() {
|
||||
# Only use environment keys that end with "APP_NAME".
|
||||
local keys=($(set | awk -F "=" '{print $1}' | grep ".*APP_NAME"))
|
||||
|
||||
printf "Select application to uninstall:\n"
|
||||
for ((index = 0; index < ${#keys[*]}; index++)); do
|
||||
local app_file="${!keys[$index]}"
|
||||
printf " $index: ${app_file}\n"
|
||||
done
|
||||
printf " q: Quit/Exit\n\n"
|
||||
|
||||
read -p "Enter selection: " response
|
||||
printf "\n"
|
||||
|
||||
local regex="^[0-9]+$"
|
||||
if [[ $response =~ $regex ]]; then
|
||||
local app_file="${!keys[$response]}"
|
||||
local app_path=$(get_install_path "${app_file}")
|
||||
sudo rm -rf "$app_path"
|
||||
printf "Uninstalled: ${app_path}\n"
|
||||
fi
|
||||
}
|
||||
export -f uninstall_application
|
||||
|
||||
# Uninstalls selected extension.
|
||||
uninstall_extension() {
|
||||
# Only use environment keys that end with "EXTENSION_PATH".
|
||||
local keys=($(set | awk -F "=" '{print $1}' | grep ".*EXTENSION_PATH"))
|
||||
|
||||
printf "Select extension to uninstall:\n"
|
||||
for ((index = 0; index < ${#keys[*]}; index++)); do
|
||||
local extension_path="${!keys[$index]}"
|
||||
printf " $index: ${extension_path}\n"
|
||||
done
|
||||
printf " q: Quit/Exit\n\n"
|
||||
|
||||
read -p "Enter selection: " response
|
||||
printf "\n"
|
||||
|
||||
local regex="^[0-9]+$"
|
||||
if [[ $response =~ $regex ]]; then
|
||||
local extension_path="${!keys[$response]}"
|
||||
rm -rf "${extension_path}"
|
||||
printf "Uninstalled: ${extension_path}\n"
|
||||
fi
|
||||
}
|
||||
export -f uninstall_extension
|
||||
@@ -77,18 +77,10 @@ export -f get_install_path
|
||||
# Parameters: $1 (required) - The file name.
|
||||
get_install_root() {
|
||||
local file_name="$1"
|
||||
local file_extension=$(get_extension "$file_name")
|
||||
|
||||
# Special cases not supported by Homebrew.
|
||||
if [[ "$file_name" == "elm" ]]; then
|
||||
printf "/usr/local/bin"
|
||||
return
|
||||
fi
|
||||
|
||||
# Dynamically build the install path based on file extension.
|
||||
case $file_extension in
|
||||
case $(get_extension "$file_name") in
|
||||
'')
|
||||
printf "$(get_homebrew_bin_root)";;
|
||||
printf "/usr/local/bin";;
|
||||
'app')
|
||||
printf "/Applications";;
|
||||
'prefPane')
|
||||
|
||||
Reference in New Issue
Block a user