This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description

Description

linkins is a command line tool which allows users to link a directory structure. It provides the ability to execute user-defined scripts at each level of the directory hierarchy.

Installation

Install using pip:

pip install linkins

or easy_install:

easy_install linkins

Usage

The linkins command takes two positional arguments: a list of directories which have the files to link and the destination directory. These show up in the help messages as TARGET_DIR and LINK_DIR, respectively:

linkins TARGET_DIR [TARGET_DIR ...] LINK_DIR

TARGET_DIRs are processed in the ordered specified by the user. Linkins also supports a number of optional arguments. To see all the supported options you can invoke the help menu:

linkins --help

Running scripts

Scripts are not run be default. In order to run your scripts you must pass the -r or –run option.

Linkins can run custom scripts at each directory. The only requirement is that the script name be the same everywhere. By default, linkins looks for scripts named linkins-script. But, the script name can be changed with the –script option. An example of a TARGET_DIR with scripts would be:

TARGET_DIR/
|-- .bashrc
|-- .emacs
|-- linkins-script
|-- .emacs.d
|   |-- linkins-script
|   |-- wc.el
|-- .xmonad
|   |-- xmonad.hs

Scripts must be executable. In Linux that means the executable bit must be set:

chmod +x SCRIPT_NAME

Scripts are not linked or copied to LINK_DIR. Instead, and for convenience, linkins passes three positional arguments to the script: TARGET_DIR, LINK_DIR and a relative path from TARGET_DIR to the script’s parent directory. All paths are absolute except for the last positional argument just described. This includes the script itself. For example, the two scripts in the example above would be called like:

TARGET_DIR/linkins-script TARGET_DIR LINKS_DIR .
...
TARGET_DIR/.emacs.d/linkins-script TARGET_DIR LINKS_DIR .emacs.d

If the directory which mirrors the script’s parent directory in the LINK_DIR side does not exist linkdirs will create it.

Any files in the same directory as the script are always linked before the script is run.

Multiprocessing

You can run each script as a separate process by using the -m or –multiprocess option. However, you must be aware of the consequences. For example, if you have two scripts that install packages from apt-get one of them will likely fail because it will not be able to obtain the dpkg lock.

Output

A script’s output is read unbuffered and it is redirected to linkins’ log where it is logged at level INFO. A script log line has the following form:

SCRIPT_PATH: SCRIPT: MSG

where SCRIPT_PATH is the relative path from TARGET_DIR to the script, SCRIPT is the word SCRIPT and MSG is the message outputted by the script to either STDOUT or STDERR.

If the -q option is used the script’s output will be not be shown.

Command line options

–exclude

The –exclude option takes a list of arguments separated by whitespace. These arguments can be paths or regular expressions. Any directories or files in TARGET_DIR which match the arguments will be excluded from the operation. You can use –exclude in conjunction with any other operation.

–include

Without the –exclude option, this option doesn’t have much use. You can use it to not exclude directories or files. Like –exclude it takes a list of arguments separated by whitespace which can be either paths or regular expressions.

–force

You can use the –force option to delete and relink links which already exist in LINK_DIR. Only links which link to files in TARGET_DIR will be replaced. Any other directories, files or links in LINK_DIR will be left untouched.

–clean

You can use the –clean option to delete links which already exist in LINK_DIR. Only links which link to files in TARGET_DIR will be removed. Any other directories, files or links in LINK_DIR will be left untouched. This operation has precedence over replacing links and running scripts. –clean will also remove empty parent directories.

Developing

External dependencies

  • python-dev
  • python-setuptools
  • python-virtualenv

Setup

To start developing run the following commands from the project’s base directory. You can download the source from https://github.com/thelinuxkid/linkins:

# I like to install the virtual environment in a hidden repo.
virtualenv .virtual
# I leave the magic to Ruby developers (.virtual/bin/activate)
.virtual/bin/python setup.py develop
# At this point, linkins will already be in easy-install.pth.
# So, pip will not attempt to download it
.virtual/bin/pip install linkins[test]

If you like to use ipython you can install it with the dev requirement:

.virtual/bin/pip install linkins[dev]

Testing

To run the unit-tests run the following command from the project’s base directory:

.virtual/bin/py.test
Release History

Release History

0.0.7.4

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.7.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.7.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.7.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.7.0

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.6.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.6

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
linkins-0.0.7.4.tar.gz (13.3 kB) Copy SHA256 Checksum SHA256 Source Jun 13, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS HPE HPE Development Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting