Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 28 million developers.Sign up
Updated to support apfs sorting and High Sierra.
Note: the sort order of processed items has changed, and will now be similar to how
ls -l lists files. See the FAQ.
Adding support for running login items as root via the
login-privileged-every directories. Useful when an admin wants privileged items to be processed at login instead of boot.
- installing a pkg that requires the user to be logged in.
- installing 802.1x config profiles for a standard user which require admin auth.
- kicking off an interactive management task via a system like jamf or munki.
Adding support for adding login-once scripts to an override list so they will be run again.
Outset will now use os.walk to recursively traverse the respective root dirs, making it easier to group similar scripts in subdirectories, i.e.
├── login-once │ ├── foo │ │ ├── desktop_script_1.sh │ │ └── desktop_script_2.sh │ └── bar │ ├── network_script_1.sh │ └── network_script_2.sh
The last release fixed an issue where the wait_for_network value wasn't working if set to False in the plist. This fix also introduced a breaking change where the value was defaulting to False instead of True. This release fixes that. Upgrade if you rely on the the wait_for_network value being set to True at boot.
- Merged some formatting changes from @rmanly
- Profiles (mobileconfig files) are natively installed in boot and login contexts.
- Can define users you wish to ignore during login runs.
- Preference plist will be created if it doesn't exit, otherwise it will only read values.
- Working directories (boot-every, etc) will be created if they do not exist, when outset is initiated.
- Logging will print to stdout for testing.
- Repo now has example directories for packaging custom and on-demand scripts.
- General code cleanup
(Making this release 2.0.0 because it introduces breaking changes.)
This release will change some fundamentals, so some cleanup work might be needed:
"firstboot-scripts" and "firstboot-packages" are now consolidated and called "boot-once." This will be less confusing for new users since "firstboot" usually means "run only the first time the system is ever booted ever."
- You'll want to place scripts/pkgs you wish to run once at boot into the new "boot-once" folder.
"everyboot-scripts" is now called "boot-every," for the same reasoning as above.
- You'll want to move any existing scripts from "everyboot-scripts" to "boot-every"
Scripts no longer have to have a specific extension (py, rb, sh) to run. It now only checks that the file is executable.
outset now supports "on-demand" scripts. (Issue #14)
- on-demand script(s) will work for the currently logged in console user only.
- FUS users in the background will not run the on-demand script(s).
- on-demand script(s) will not run when the machine is at the loginwindow, or when being invoked manually by root (or sudo)
- on-demand script(s) are not added to the login once plist. This will allow an admin to push the same on-demand script(s) - multiple times, i.e. a notification.
- the on-demand folder is cleaned out after each run, so it will not run twice or for subsequent logins.
- You can trigger on-demand by touching /private/tmp/.com.github.outset.ondemand.launchd, perhaps via a postinstall in a package.
You can edit share/com.chilcote.outset.plist to suppress the network check if you so choose (some environments might not be on a network). You can also customize the timeout time that it will use before bailing on the boot-once scripts.
Packages no longer have to be executable
Scripts and packages with malformed permissions will no longer be added to the run once plist, so you an fix the permissions without having to change the name of the script.
The package installer should no longer require a reboot before the plists are loaded.
Merged some helpful PRs from @rmanly