{ "info": { "author": "Sam Clements", "author_email": "sam@borntyping.co.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Operating System :: Unix", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Topic :: Software Development :: Testing", "Topic :: System :: Monitoring", "Topic :: Utilities" ], "description": "=======\nspotter\n=======\n\n.. image:: https://pypip.in/v/spotter/badge.png\n :target: https://crate.io/packages/spotter/\n :alt: Latest PyPI version\n\nSpotter is a simple command line tool for watching files and running shell commands when they change.\nDirectives are read from a text file, and spotter will look for a file named ``.spotter`` in the current directory if no filenames are given.\n\nUsage\n=====\n\n::\n\n spotter [-h] [-v] [-q] [-c] [filename [filename ...]]\n\nPositional arguments:\n * ``filename``: A list of files containing directives to load, defaulting to ``[\".spotter\"]``.\n\nOptional arguments:\n * ``-h``, ``--help``: Explain the command line options.\n * ``-v``, ``--version``: Show the current version number.\n * ``-q``, ``--quiet``: The output of commands is not printed unless they fail.\n * ``-c``, ``--continue``: Failed commands will not stop spotter from continuing.\n\nSpotter can also be run as a python module:\n\n::\n\n python -m spotter ...\n\nDirectives\n==========\n\nAll directives are in the following form::\n\n : [-> ]\n\nNot all directives take a second argument, but all of them take a first argument.\n\nWatch\n-----\n\n::\n\n watch: -> \n\nThe Watch directive takes two arguments: ```` is a unix-style filename pattern, and ```` is a shell command to run when a file matching the pattern is created or changed.\nMore information on the pattern matching used can be found in the `fnmatch library documentation `_.\n\n::\n\n watch: *.txt -> echo \"Text file changed\"\n\nMultiple watch directives can be given, and spotter will continue to run matching watch directives until one fails (i.e. returns an exit code above 0) or until it runs a matching ``watch-final`` directive.\n\n::\n\n watch: * -> return 1\n watch: * -> echo \"This command will not run\"\n\nThe ``--continue`` command line argument can be used to disable this behaviour, forcing spotter to continue processing watches even if one fails.\n\nWatch-Final\n-----------\n\n::\n\n watch-final: -> \n\nWatch-final has exactly the same syntax and behaviour as the Watch directive.\nUnlike the Watch directive, if the pattern matches and the command is run, no further watches will be processed.\n\n::\n\n watch-final: *.txt -> echo \"No commands will run after this\"\n\nStart / Stop\n------------\n\n::\n\n start: \n stop: \n\nThe start and stop directives can be used to run commands when spotter starts running and when spotter stops running.\n\n::\n\n start: echo \"Started watching files\"\n stop: echo \"Stopped watching files\"\n\nDefine\n------\n\n::\n\n define: -> \n\nThe Define directive allows values to be stored and then included in other directives when they are run.\n``filename`` is always available in watch commands, and contains the path of the file that matched the pattern.\nDefinitions are included in the commands using `python format specifications `_, and are inserted when the command is run, not when the command is loaded.\n\n::\n\n define: python_command -> python2.6\n\n watch: *.py -> {python_command} \"{filename}\"", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/borntyping/spotter", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "spotter", "package_url": "https://pypi.org/project/spotter/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/spotter/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/borntyping/spotter" }, "release_url": "https://pypi.org/project/spotter/1.7.1/", "requires_dist": null, "requires_python": null, "summary": "A command line tool for watching files and running shell commands when they change.", "version": "1.7.1" }, "last_serial": 2595337, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "4238b6c730cf5e6d12a8449c5e348ba5", "sha256": "fc90e3a078abae8843470271e694f4eaf7e45a69c24f738329f4d41451c55c61" }, "downloads": -1, "filename": "spotter-1.0.tar.gz", "has_sig": false, "md5_digest": "4238b6c730cf5e6d12a8449c5e348ba5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4882, "upload_time": "2013-05-07T11:31:22", "url": "https://files.pythonhosted.org/packages/e5/12/c9608eea7cc8792d3ac36f479881fa52226dcd30e6506cd917b27450f728/spotter-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "7cfc1ae34381b2430c88da994dabd5d1", "sha256": "b3170f86512739aa141d808b109332c85d01b8a5c2b7960a54bafbe83395f818" }, "downloads": -1, "filename": "spotter-1.1.tar.gz", "has_sig": false, "md5_digest": "7cfc1ae34381b2430c88da994dabd5d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4998, "upload_time": "2013-05-26T18:11:17", "url": "https://files.pythonhosted.org/packages/1c/30/e8e0e215768988b875842ad5bda1c3abab72368a85d087d07df917634e29/spotter-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "38bd61db16ebec9f0879769f956e9d6b", "sha256": "85510b3e9559291a08633e8f24583604488645cd50e48648659d076306a81091" }, "downloads": -1, "filename": "spotter-1.2.tar.gz", "has_sig": false, "md5_digest": "38bd61db16ebec9f0879769f956e9d6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5302, "upload_time": "2013-05-26T18:13:06", "url": "https://files.pythonhosted.org/packages/0d/8d/27bbb707b3383a3a751a850343f3bfa2b7a020fb07b7fc639fdd3aacdfa9/spotter-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "8b71fbe3a60b60638a1de4298581c46a", "sha256": "3c50b0a85ef00212964298ba1eff214e7bfd5c8094bb2f8459c8bbcb9770be4a" }, "downloads": -1, "filename": "spotter-1.3.tar.gz", "has_sig": false, "md5_digest": "8b71fbe3a60b60638a1de4298581c46a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5294, "upload_time": "2013-05-26T18:12:18", "url": "https://files.pythonhosted.org/packages/9f/5e/e197c9de8291d2971c2bbbdc3e29fec11e0997a844930dfc4ee1acb42d7b/spotter-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "dbb211465adb65e6519be330dd1a44ac", "sha256": "d9853583c67be5ec427ff0f11bb7f963633d4efac6050399e533facd55649a39" }, "downloads": -1, "filename": "spotter-1.4.tar.gz", "has_sig": false, "md5_digest": "dbb211465adb65e6519be330dd1a44ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5325, "upload_time": "2013-06-29T12:56:29", "url": "https://files.pythonhosted.org/packages/46/1a/e9f56e66cd29705af5a77c84a56795d89ff01ce558c796d04f23bf6e32cb/spotter-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "bcfeba0584dedd2aec9f7319c3938755", "sha256": "ac982ed015f34e0f28a46d9d0db4387acfc05d3788e61a8d91c3661530a53092" }, "downloads": -1, "filename": "spotter-1.5.tar.gz", "has_sig": false, "md5_digest": "bcfeba0584dedd2aec9f7319c3938755", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5366, "upload_time": "2013-06-29T13:11:47", "url": "https://files.pythonhosted.org/packages/79/47/406c088bf4f3111c68be1588f97f7b5e50bd6c91e9c819f904c51ab529d8/spotter-1.5.tar.gz" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "8105ef0592225752470cbd4f510ba987", "sha256": "fb1f8d4e5f329290bbadfcb088960075e8f555e313e04efcef313eff87351806" }, "downloads": -1, "filename": "spotter-1.6.tar.gz", "has_sig": false, "md5_digest": "8105ef0592225752470cbd4f510ba987", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5391, "upload_time": "2013-09-21T11:12:12", "url": "https://files.pythonhosted.org/packages/b0/26/23522a078c4be1bf4afb3ee150e0064618bf43d841048dedfee6b142a0ba/spotter-1.6.tar.gz" } ], "1.7": [ { "comment_text": "", "digests": { "md5": "a9a062b932f8f5aff4c8cc993e673e99", "sha256": "c60ceeeb1762b7b3db9950503d2c5ad1b987ffad20a2bffbeb89e8c0b161a392" }, "downloads": -1, "filename": "spotter-1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a9a062b932f8f5aff4c8cc993e673e99", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8631, "upload_time": "2015-01-05T19:26:13", "url": "https://files.pythonhosted.org/packages/f2/f2/5bf02dfef4699b2842079e54b7f87384a2fc00e15961559a634051a75254/spotter-1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1e219483315b9a97462119bef9803d8", "sha256": "af1015a280f62dbac7a60ce8540ea9376f4e6f7ab2927660c31c75d726431d38" }, "downloads": -1, "filename": "spotter-1.7.tar.gz", "has_sig": false, "md5_digest": "c1e219483315b9a97462119bef9803d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5414, "upload_time": "2015-01-05T19:26:10", "url": "https://files.pythonhosted.org/packages/36/b6/cbb52eabf717f08464ab4f3c24683cdfd510d71d202cdbe2e97129758cee/spotter-1.7.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "bcd5c88b3bd9303b3122b9e641771cd3", "sha256": "be0971d2a0612fe6ac64528f64095ad820ba71762448345a229a60b3cc78daf5" }, "downloads": -1, "filename": "spotter-1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bcd5c88b3bd9303b3122b9e641771cd3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8678, "upload_time": "2017-01-24T13:34:34", "url": "https://files.pythonhosted.org/packages/70/13/5d234d285896287daf4e378d4ccb29ed730a0142019919a4f5b562f588f7/spotter-1.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36043a19a89a87e2c369a2daad6d50f0", "sha256": "f77f90af3c586c3382718a5128f2b6b61c7f8c1b1c8879d42fb1b43b2e900c0c" }, "downloads": -1, "filename": "spotter-1.7.1.tar.gz", "has_sig": false, "md5_digest": "36043a19a89a87e2c369a2daad6d50f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5419, "upload_time": "2017-01-24T13:34:31", "url": "https://files.pythonhosted.org/packages/76/32/09b4197063725ab1312f811b63d2efe3fa5f51a3efb13f6c2fab5aa7baf4/spotter-1.7.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bcd5c88b3bd9303b3122b9e641771cd3", "sha256": "be0971d2a0612fe6ac64528f64095ad820ba71762448345a229a60b3cc78daf5" }, "downloads": -1, "filename": "spotter-1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bcd5c88b3bd9303b3122b9e641771cd3", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8678, "upload_time": "2017-01-24T13:34:34", "url": "https://files.pythonhosted.org/packages/70/13/5d234d285896287daf4e378d4ccb29ed730a0142019919a4f5b562f588f7/spotter-1.7.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36043a19a89a87e2c369a2daad6d50f0", "sha256": "f77f90af3c586c3382718a5128f2b6b61c7f8c1b1c8879d42fb1b43b2e900c0c" }, "downloads": -1, "filename": "spotter-1.7.1.tar.gz", "has_sig": false, "md5_digest": "36043a19a89a87e2c369a2daad6d50f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5419, "upload_time": "2017-01-24T13:34:31", "url": "https://files.pythonhosted.org/packages/76/32/09b4197063725ab1312f811b63d2efe3fa5f51a3efb13f6c2fab5aa7baf4/spotter-1.7.1.tar.gz" } ] }