https://github.com/alecthomas/ondir
OnDir is a small program to automate tasks specific to certain directories
https://github.com/alecthomas/ondir
Last synced: over 1 year ago
JSON representation
OnDir is a small program to automate tasks specific to certain directories
- Host: GitHub
- URL: https://github.com/alecthomas/ondir
- Owner: alecthomas
- License: gpl-2.0
- Created: 2010-09-21T13:05:59.000Z (almost 16 years ago)
- Default Branch: master
- Last Pushed: 2023-12-01T21:53:56.000Z (over 2 years ago)
- Last Synced: 2025-03-24T08:08:23.755Z (over 1 year ago)
- Language: C
- Homepage:
- Size: 23.4 KB
- Stars: 209
- Watchers: 4
- Forks: 17
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- Changelog: ChangeLog
- License: COPYING
- Authors: AUTHORS
Awesome Lists containing this project
README
OnDir
=====
Introduction
------------
ondir is a small program to automate tasks specific to certain directories. It
works by executing scripts in directories when you enter and leave them.
Scripts in the doc subdirectory show how to automate this when using either
BASH or TCSH.
Getting Started
---------------
1. Add scripts.sh or scripts.tcsh to your startup scripts for BASH or TCSH,
respectively.
2. Restart your shell.
3. Add an entry to your ~/.ondirrc such as those described below.
4. Change into the corresponding path.
5. Check for success.
Details
-------
An example of ondirs usefulness is when editing web pages. I have a umask of 077
by default, but when creating web pages in ~/public_html the web content has
to be readable by the user the web server runs as. By adding a path section for
this directory to my ~/.ondirrc, and corresponding enter and leave sub-sections,
any scripts in the enter/leave sub-sections are executed when I enter and leave
the directory, respectively. Here is how the entry in my ~/.ondirrc would look::
enter /home/athomas/public_html
umask 022
leave /home/athomas/public_html
umask 077
And that's all it does. Simple, but effective.
ondir takes one parameter, the directory you are leaving.
Note that these scripts will be executed when you pass THROUGH the directory
as well. Using the preceding example, typing "cd ~/public_html/mywebpage" will
execute the 'enter' in ~/public_html. The reverse is also true: when leaving
a path, all 'leave' scripts in the intermediate directories are executed.
A more useful example
---------------------
Ondir is particularly useful with `virtualenv
`_. The following config will
automatically activate virtualenv's when you change into a directory and
deactivate when you move out::
enter ~/Projects/([^/]+)
if [ -r .venv ]; then
. ./.venv/bin/activate
fi
leave ~/Projects/([^/]+)
deactivate > /dev/null 2>&1