I have a couple of general scripts repositories for myself and shared with colleagues. These are for scripts which are useful but don’t fit into existing projects or justify having their own repository. An example is rsgis_scripts on bitbucket. The scripts are split into different directories which aren’t available on the main path. To make them available when needed I use EnvMaster (described in a previous post). I have an envmaster module which will search the repository for folders containing executables and add them to $PATH. It will also add folders containing ‘__init__.py’ to $PYTHONPATH.
#%EnvMaster1.0 import os import glob REPO_PATH = "/home/dan/Documents/Development/rsgis_scripts" # Walk through directory for d_name, sd_name, f_list in os.walk(REPO_PATH): # Ignore hidden directories if not d_name.startswith(".") and not ".git" in d_name and not ".hg" in d_name: file_list = glob.glob(os.path.join(d_name,"*")) # Check if a directory contains executable files if True in [(os.path.isfile(f) and os.access(f, os.X_OK)) for f in file_list]: module.setBin(d_name) # Check for Python libraries if len(glob.glob(os.path.join(d_name,"*","__init__.py"))) > 0: module.setPython(d_name)
The script is saved as ‘rsgis_scripts’ in ‘$ENVMASTERPATH’.
To load the module and prepend all the folders to ‘$PATH’ use:
envmaster load rsgis_scripts
They will remain on $PATH until you close the terminal or unload the module using:
envmaster unload rsgis_scripts
This script is just an example, it would be easy to modify for different use cases. If you have multiple repositories a module file can be created for each one.