{ "info": { "author": "Andres Buritica", "author_email": "andres@thelinuxkid.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.7" ], "description": "=======\nlinkins\n=======\n\nDescription\n===========\n\nlinkins is a command line tool which allows users to link a directory\nstructure. It provides the ability to execute user-defined scripts at\neach level of the directory hierarchy.\n\nInstallation\n============\n\nInstall using pip::\n\n pip install linkins\n\nor easy_install::\n\n easy_install linkins\n\nUsage\n=====\n\nThe linkins command takes two positional arguments: a list of\ndirectories which have the files to link and the destination\ndirectory. These show up in the help messages as TARGET_DIR and\nLINK_DIR, respectively::\n\n linkins TARGET_DIR [TARGET_DIR ...] LINK_DIR\n\nTARGET_DIRs are processed in the ordered specified by the user.\nLinkins also supports a number of optional arguments. To see all the\nsupported options you can invoke the help menu::\n\n linkins --help\n\nRunning scripts\n===============\n\n*Scripts are not run be default. In order to run your scripts you must\npass the -r or --run option.*\n\nLinkins can run custom scripts at each directory. The only requirement\nis that the script name be the same everywhere. By default, linkins\nlooks for scripts named linkins-script. But, the script name can be\nchanged with the --script option. An example of a TARGET_DIR with\nscripts would be::\n\n TARGET_DIR/\n |-- .bashrc\n |-- .emacs\n |-- linkins-script\n |-- .emacs.d\n | |-- linkins-script\n | |-- wc.el\n |-- .xmonad\n | |-- xmonad.hs\n\nScripts must be executable. In Linux that means the executable bit\nmust be set::\n\n chmod +x SCRIPT_NAME\n\nScripts are not linked or copied to LINK_DIR. Instead, and for\nconvenience, linkins passes three positional arguments to the script:\nTARGET_DIR, LINK_DIR and a relative path from TARGET_DIR to the\nscript's parent directory. All paths are absolute except for the last\npositional argument just described. This includes the script\nitself. For example, the two scripts in the example above would be\ncalled like::\n\n TARGET_DIR/linkins-script TARGET_DIR LINKS_DIR .\n ...\n TARGET_DIR/.emacs.d/linkins-script TARGET_DIR LINKS_DIR .emacs.d\n\nIf the directory which mirrors the script's parent directory in the\nLINK_DIR side does not exist linkdirs will create it.\n\nAny files in the same directory as the script are always linked before\nthe script is run.\n\nMultiprocessing\n---------------\n\nYou can run each script as a separate process by using the -m\nor --multiprocess option. However, you must be aware of the\nconsequences. For example, if you have two scripts that install\npackages from apt-get one of them will likely fail because it will not\nbe able to obtain the dpkg lock.\n\nOutput\n------\n\nA script's output is read unbuffered and it is redirected to linkins'\nlog where it is logged at level INFO. A script log line has the\nfollowing form::\n\n SCRIPT_PATH: SCRIPT: MSG\n\nwhere SCRIPT_PATH is the relative path from TARGET_DIR to the script,\nSCRIPT is the word SCRIPT and MSG is the message outputted by the\nscript to either STDOUT or STDERR.\n\nIf the -q option is used the script's output will be not be shown.\n\nCommand line options\n====================\n\n--exclude\n---------\n\nThe --exclude option takes a list of arguments separated by\nwhitespace. These arguments can be paths or regular expressions. Any\ndirectories or files in TARGET_DIR which match the arguments will be\nexcluded from the operation. You can use --exclude in conjunction with\nany other operation.\n\n--include\n---------\n\nWithout the --exclude option, this option doesn't have much use. You\ncan use it to *not exclude* directories or files. Like --exclude it\ntakes a list of arguments separated by whitespace which can be either\npaths or regular expressions.\n\n--force\n-------\n\nYou can use the --force option to delete and relink links which\nalready exist in LINK_DIR. Only links which link to files in\nTARGET_DIR will be replaced. Any other directories, files or links in\nLINK_DIR will be left untouched.\n\n--clean\n-------\n\nYou can use the --clean option to delete links which already exist in\nLINK_DIR. Only links which link to files in TARGET_DIR will be\nremoved. Any other directories, files or links in LINK_DIR will be\nleft untouched. This operation has precedence over replacing links and\nrunning scripts. --clean will also remove empty parent directories.\n\nDeveloping\n==========\n\nExternal dependencies\n---------------------\n\n - python-dev\n - python-setuptools\n - python-virtualenv\n\nSetup\n-----\n\nTo start developing run the following commands from the project's base\ndirectory. You can download the source from\nhttps://github.com/thelinuxkid/linkins::\n\n # I like to install the virtual environment in a hidden repo.\n virtualenv .virtual\n # I leave the magic to Ruby developers (.virtual/bin/activate)\n .virtual/bin/python setup.py develop\n # At this point, linkins will already be in easy-install.pth.\n # So, pip will not attempt to download it\n .virtual/bin/pip install linkins[test]\n\nIf you like to use ipython you can install it with the dev\nrequirement::\n\n .virtual/bin/pip install linkins[dev]\n\nTesting\n-------\n\nTo run the unit-tests run the following command from the project's\nbase directory::\n\n .virtual/bin/py.test", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/thelinuxkid/linkins", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "linkins", "package_url": "https://pypi.org/project/linkins/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/linkins/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/thelinuxkid/linkins" }, "release_url": "https://pypi.org/project/linkins/0.0.7.4/", "requires_dist": null, "requires_python": null, "summary": "Links a directory structure and optionally executes user-defined scripts at each level of the directory hierarchy", "version": "0.0.7.4" }, "last_serial": 769786, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a0875a48f693a32530e5bd4a0baa5840", "sha256": "d04d58c1908436a343feb03448231b26734d767bde4fd418381eb0b67afabe3d" }, "downloads": -1, "filename": "linkins-0.0.1.tar.gz", "has_sig": false, "md5_digest": "a0875a48f693a32530e5bd4a0baa5840", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4042, "upload_time": "2012-10-02T07:19:00", "url": "https://files.pythonhosted.org/packages/e5/e8/6c62d771f4cc9618cf9f839a0ad364c76218e5c0464e826e3a9edfbe54e5/linkins-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "1b97b435aea2a78ffc2f532b961f9e97", "sha256": "1b820f0dde94cd4f9d5f11df8c464ec83742bfba5c7e0730a69fb2da64486af8" }, "downloads": -1, "filename": "linkins-0.0.2.tar.gz", "has_sig": false, "md5_digest": "1b97b435aea2a78ffc2f532b961f9e97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6184, "upload_time": "2012-10-20T03:34:47", "url": "https://files.pythonhosted.org/packages/fc/5a/2e84646136c2b8085892493a307938fb84ba971b445299f817ed85a026c6/linkins-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "fb0d288651f233f641510e670ffb6810", "sha256": "e4141f42c5eafebc0b40b81d0f90ca2792094ce9acbed31fae4c1dd8da2ba908" }, "downloads": -1, "filename": "linkins-0.0.3.tar.gz", "has_sig": false, "md5_digest": "fb0d288651f233f641510e670ffb6810", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7806, "upload_time": "2012-10-20T08:08:03", "url": "https://files.pythonhosted.org/packages/dc/37/e42ae14c275f296e767695b33b3353a942784ac1b61dd7e47b3c2e193875/linkins-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "100d5237a236ee7a4bad9a055322e4b8", "sha256": "2e1f442cee520bd768ff0685d5462d5c1ced55279340b1c4be563675104dd521" }, "downloads": -1, "filename": "linkins-0.0.4.tar.gz", "has_sig": false, "md5_digest": "100d5237a236ee7a4bad9a055322e4b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10069, "upload_time": "2012-10-20T10:34:19", "url": "https://files.pythonhosted.org/packages/ff/d9/02bc29d730dcdfb945e0882fcde562cbc4516b18fda49ae3352e879d296a/linkins-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "e3cb7d167d0c50a27b5e6bec91deb464", "sha256": "94a9588d5aa527581b133e56f419574d6ffc36750b37b6b2856cf1c383783671" }, "downloads": -1, "filename": "linkins-0.0.5.tar.gz", "has_sig": false, "md5_digest": "e3cb7d167d0c50a27b5e6bec91deb464", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9868, "upload_time": "2012-10-29T20:50:24", "url": "https://files.pythonhosted.org/packages/5c/fc/f66f995510a0ebe5614af797ee0326ed322b1e76f2763eee878975b3f325/linkins-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "7e8f668eb2c7a2c402c88ccdd65aa9d7", "sha256": "0553d43221ecd8fcd0c54144cb154548740a81b1a2e8ec09481b94cb8bd4012f" }, "downloads": -1, "filename": "linkins-0.0.6.tar.gz", "has_sig": false, "md5_digest": "7e8f668eb2c7a2c402c88ccdd65aa9d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11016, "upload_time": "2012-11-02T08:39:38", "url": "https://files.pythonhosted.org/packages/84/8f/0fae2f12e14a148cff6cbd4a0d14bd42e5d529f50e64b8699c942f6e0b83/linkins-0.0.6.tar.gz" } ], "0.0.6.1": [ { "comment_text": "", "digests": { "md5": "589d96fde007c4b26db76101a98732d9", "sha256": "bc1b3f9ec4ee2688f0a512dbc4e0cb5c8c3a5b192eeaff778e91a6f739a65980" }, "downloads": -1, "filename": "linkins-0.0.6.1.tar.gz", "has_sig": false, "md5_digest": "589d96fde007c4b26db76101a98732d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11047, "upload_time": "2012-11-10T02:38:53", "url": "https://files.pythonhosted.org/packages/5a/18/6f825375ad7382d3ffd4616c215bdb76083774809959069c58d3e5f4535a/linkins-0.0.6.1.tar.gz" } ], "0.0.7.0": [ { "comment_text": "", "digests": { "md5": "1899b67a70aa6239b09607579bb3626d", "sha256": "05e8379f504bcc9abd613a7b84bccfbc01daa26fc017a976becdf1a7c6003c79" }, "downloads": -1, "filename": "linkins-0.0.7.0.tar.gz", "has_sig": false, "md5_digest": "1899b67a70aa6239b09607579bb3626d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12809, "upload_time": "2013-02-21T05:57:33", "url": "https://files.pythonhosted.org/packages/17/3f/192456a5eed0b42bff445472650ab13a268035a697254a9399a8164d90f9/linkins-0.0.7.0.tar.gz" } ], "0.0.7.1": [ { "comment_text": "", "digests": { "md5": "bfd44c2a92f387e42e1273f21cb97300", "sha256": "f322d176a1e8d0ccc37b063f63312e7baca4ec74436861e63bbb6f89fbd15b22" }, "downloads": -1, "filename": "linkins-0.0.7.1.tar.gz", "has_sig": false, "md5_digest": "bfd44c2a92f387e42e1273f21cb97300", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13782, "upload_time": "2013-02-21T22:51:50", "url": "https://files.pythonhosted.org/packages/db/47/82b49e980568f4a518e976566e96da65fe9288fb1d46a50538b5eaadcbb9/linkins-0.0.7.1.tar.gz" } ], "0.0.7.2": [ { "comment_text": "", "digests": { "md5": "ea5f02d8fb39f3126272ddac1d726b0c", "sha256": "708a0822dc1d0f37118abcf16c1857d9ca28cc98a5b05422ea01df6a7348cae0" }, "downloads": -1, "filename": "linkins-0.0.7.2.tar.gz", "has_sig": false, "md5_digest": "ea5f02d8fb39f3126272ddac1d726b0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13771, "upload_time": "2013-02-23T04:23:23", "url": "https://files.pythonhosted.org/packages/56/50/7ea0013fcd32d8725378efc718947ae455741623f0962db3283b6d45d070/linkins-0.0.7.2.tar.gz" } ], "0.0.7.3": [ { "comment_text": "", "digests": { "md5": "2c79b436d7c666897dced45c2921b4a9", "sha256": "5d47378e744b65d6dc7ed6fd6012da7e6cb4bdb8db8e2377732c306e2a76bca9" }, "downloads": -1, "filename": "linkins-0.0.7.3.tar.gz", "has_sig": false, "md5_digest": "2c79b436d7c666897dced45c2921b4a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11172, "upload_time": "2013-03-09T07:40:18", "url": "https://files.pythonhosted.org/packages/43/ba/d94ffb1756efdbe9ca10140eba1fe35cecad797d03f7ffeaf32893b85631/linkins-0.0.7.3.tar.gz" } ], "0.0.7.4": [ { "comment_text": "", "digests": { "md5": "bc48a81e13cfad9b7acbd4cc188c3f47", "sha256": "a83d9911900461f32bc40b5a8c59c03281d826c70ed23434b43d5e6a34d4fee0" }, "downloads": -1, "filename": "linkins-0.0.7.4.tar.gz", "has_sig": false, "md5_digest": "bc48a81e13cfad9b7acbd4cc188c3f47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13349, "upload_time": "2013-06-13T01:07:49", "url": "https://files.pythonhosted.org/packages/35/57/214f321c59a9f484acbe6f98d9ab44df27a97da178c5c7a781202f95e64f/linkins-0.0.7.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bc48a81e13cfad9b7acbd4cc188c3f47", "sha256": "a83d9911900461f32bc40b5a8c59c03281d826c70ed23434b43d5e6a34d4fee0" }, "downloads": -1, "filename": "linkins-0.0.7.4.tar.gz", "has_sig": false, "md5_digest": "bc48a81e13cfad9b7acbd4cc188c3f47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13349, "upload_time": "2013-06-13T01:07:49", "url": "https://files.pythonhosted.org/packages/35/57/214f321c59a9f484acbe6f98d9ab44df27a97da178c5c7a781202f95e64f/linkins-0.0.7.4.tar.gz" } ] }