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'])