homely.general

homely.general.include()

include() makes it easy to split your HOMELY.py script into multiple files if it is getting too big to be in a single file.

include(filename)

filename
The relative path to another HOMELY.py script in your dotfiles repo.

include() is imperative and will immediately start executing the target script. It is therefore more likely that you will want to add a collection of include(...) calls at the end of your main HOMELY.py script, after core dependencies have been installed.

When include() finishes executing the target file it returns the associated python module, making it possible to access symbols from the included file.

Also, inside the included file you can also import symbols from the root HOMELY.py script by importing from the special module named "HOMELY".

Example 1: Moving code into an include()

You have a command that sets the keyboard repeat rate for MacOS, and you want to move it out of your main HOMELY.py script and into mac/HOMELY.py. But you also want to set a boolean variable to indicate whether or not the command was executed.:

# ~/dotfiles/HOMELY.py
from homely.general import include

mac = include('mac/HOMELY.py')

if mac.KEY_REPEAT_RATE_IS_SET:
    print("Key repeat rate has been set automatically")
else:
    print("You need to set key repeat rate manually in system preferences")

and then in mac/HOMELY.py…:

# ~/dotfiles/mac/HOMELY.py
import platform
from homely.system import execute

KEY_REPEAT_RATE_IS_SET = False

if platform.system() == "Darwin":
    execute(['defaults', 'write', 'NSGlobalDomain', 'KeyRepeat', '-float', '1.0'])
    KEY_REPEAT_RATE_IS_SET = True

Example 2: Importing from your root HOMELY.py

Taking the code from the example above, you might want to put the logic for detecting MacOS into your root HOMELY.py script and then import that boolean into mac/HOMELY.py::

# ~/dotfiles/HOMELY.py
import platform
from homely.general import include

[... snip non-mac things ...]

IS_MACOS = platform.system() == "Darwin"

include('mac/HOMELY.py')

and then in mac/HOMELY.py…:

# ~/dotfiles/mac/HOMELY.py
from homely.system import execute
import HOMELY

if HOMELY.IS_MACOS:
    execute(['defaults', 'write', 'NSGlobalDomain', 'KeyRepeat', '-float', '1.0'])