{ "info": { "author": "Matt Pizzimenti", "author_email": "mjpizz+metamake@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Description\n===========\n\nMetamake **is a simple way to define common tasks** and execute those tasks by\nname, similar to Rake. Metamake **is not** a dependency-tracking build tool\nlike Make, ant, qmake, SCons, Visual Studio, or XCode. Metamake is used\n**with** these build tools to orchestrate complex builds that work in a\ncross-platform fashion.\n\nUsage\n=====\n\nUsing Metamake is as easy as creating a 'Makefile.py' in your project\ndirectory::\n\n from metamake import task, shell, path\n\n @task\n def build():\n \"\"\"builds the widget\"\"\"\n shell(\"qmake proj.pro -o Makefile.proj && make -f Makefile.proj\")\n path(\"src/headers\").copytree(\"dist/include\")\n\nOn the commandline, you can then type ``metamake ls`` to see a listing\nof all Metamake tasks defined in your Makefile.py, with their docstrings\nhelpfully listed to describe the purpose of that task.\n\nBugs\n====\n\nPlease file any bugs against the Google Code project @ http://code.google.com/p/metamake/issues/list\n\nAdvanced Features\n=================\n\nNamespaces\n----------\n\nTo organize some of your tasks, you may want to namespace them::\n\n from metamake import task, namespace\n \n @namespace\n def mynamespace():\n \n @task\n def foo():\n \"\"\"do something\"\"\"\n pass\n \n @task\n def bar():\n \"\"\"do something else\"\"\"\n pass\n\nThen, when you list these tasks on the commandline, you will see::\n \n mynamespace:foo # do something\n mynamespace:bar # do something else\n\n\nBackwards-compatibility with Make\n---------------------------------\nTo make things easier on newcomers to Metamake, a \"Makefile\" can be\ncreated in your working directory that contains a bootstrapped version of\nMetamake inside. This allows anybody to build your project without needing\nMetamake to be installed. With the bootstrapped Makefile, you can type\n``make `` to achieve the same effect as ``metamake ``. Whenever you\nupdate Metamake on your system, these bootstrapped Makefiles will be updated\nautomatically next time you execute Metamake for that project. You should \ncommit these Makefiles to your repository so that other people can check out\nyour project and build it without installing Metamake. To create a Makefile\nbootstrap::\n\n from metamake import task, shell, bootstrap\n \n bootstrap(\"Makefile\")\n \n # ...\n\nWhat if you already have a Makefile that you are using for other purposes?\nThat's easy to solve, simply by specifying a different filename::\n \n from metamake import task, shell, bootstrap\n \n bootstrap(\"Makefile.meta\")\n \n # ...\n \nEasy Commandline Flag Definition\n--------------------------------\nMetamake allows you to define commandline flags that can be passed\ninto your build process. These flags will work regardless of whether you use\nthe 'metamake' tool or the bootstrapped Makefile::\n\n from metamake import task, Flag\n\n Flag(\"cleanfirst\").explain(\"set this flag to 'true' to do a clean build\")\n \n if Flag(\"cleanfirst\").given:\n print \"flag was given\"\n \n if Flag(\"cleanfirst\").value == \"true\":\n print \"flag value was True\"\n\nWhen you execute ``metamake ls`` on the commandline, you will see these flags\nlisted underneath all of the task definitions, with the explanation that\nyou provided as documentation.\n\nFrom the first example, asking if the value is \"true\" or \"false\" is a bit unweildy\nfor a boolean value. This gets even worse for flags that take a restricted set of\nvalues, for example a range of integers. The ``explain`` method can take a few\nmore parameters to help you out here::\n\n from metamake import task, Flag\n\n Flag(\"debuglevel\").explain(\"set the debug level\", convert=int, allow=[1,2,3,4])\n \n if Flag(\"debuglevel\").value == 3:\n print \"flag was converted to the integer 3\"\n\nYou can also grab the Flag instance instead of always referring to the\nstring name::\n\n from metamake import task, Flag\n \n cleanflag = Flag(\"cleanfirst\")\n debugflag = Flag(\"debuglevel\")\n \n if cleanflag.given and debugflag.value == 3:\n print \"we just checked the flag instances\"\n \n\nReadable, Cross-platform Filesystem Manipulation\n------------------------------------------------\nJason Orendorff's excellent `path.py `_\nlibrary unifies all of the cross-platform Python filesystem manipulations\nunder a single object called **path**::\n\n from metamake import task, path\n\n @task\n def build():\n \"\"\"builds the widget\"\"\"\n path(\"dist/include\").makedirs()\n path(\"src/widget\").copytree(\"dist/include/widget\")\n for header_file in path(\"src/gadget\").listdir(\"*.h\"):\n header_file.copyfile(\"dist/include/gadget/%s\" % header_file.basename())\n\nMetamake extends Jason's library by providing console logging for file operations.\nThis makes it easy to see the manipulations that are happening to your filesystem\non the commandline.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/metamake/", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "metamake", "package_url": "https://pypi.org/project/metamake/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/metamake/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/metamake/" }, "release_url": "https://pypi.org/project/metamake/1.1.7/", "requires_dist": null, "requires_python": null, "summary": "Metamake is a dead-simple task-based automation tool written in Python.", "version": "1.1.7" }, "last_serial": 794715, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "d8eeec5c35685f4d12cfdf190e449fc2", "sha256": "b5d1e913d79900797e9fe538ab1574a09a77ad3f97cfdc9869fa766968e2fe5c" }, "downloads": -1, "filename": "metamake-1.0.0.tar.gz", "has_sig": false, "md5_digest": "d8eeec5c35685f4d12cfdf190e449fc2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41002, "upload_time": "2008-11-03T15:46:49", "url": "https://files.pythonhosted.org/packages/5d/1e/e26002726bc8b8befb6fcbb1128737edd5fdafa1f3e2cf5c6b8a65007f4e/metamake-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8e08551c9dbd30be6020f8574da4bb55", "sha256": "7401a0a83c2f867709a2b57338079645b0ee48c65f289234c0aea90e8b8855bf" }, "downloads": -1, "filename": "metamake-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8e08551c9dbd30be6020f8574da4bb55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44111, "upload_time": "2008-11-04T02:06:57", "url": "https://files.pythonhosted.org/packages/e6/4f/9e035e308c4ef9ab434c8a633fc008a62a18ce94910210d7ad5d6d1d00ab/metamake-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "d049fe842c07a2d4976de0fa8e0c48db", "sha256": "0af8fcfb2e9fb76b4842fd6782ee562b89df36128da2d7793613ad41d45d79fe" }, "downloads": -1, "filename": "metamake-1.0.2.tar.gz", "has_sig": false, "md5_digest": "d049fe842c07a2d4976de0fa8e0c48db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44086, "upload_time": "2008-11-04T02:21:07", "url": "https://files.pythonhosted.org/packages/ad/36/d60d0628c5f6cebf14d54df06bbec10f0308072ba86c614642f4054967f3/metamake-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "cf6129275185c1e2a728896d9e61ed1d", "sha256": "f73968a553cabf834d33fb4214887b4e907096e7173a8ede77a6dce5a84c7d1b" }, "downloads": -1, "filename": "metamake-1.0.3.tar.gz", "has_sig": false, "md5_digest": "cf6129275185c1e2a728896d9e61ed1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44165, "upload_time": "2008-11-04T02:40:04", "url": "https://files.pythonhosted.org/packages/85/1f/8b90e32df80016174fc02f2ad344061489ba73423cf41906b7a312449122/metamake-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "f4cd129b5d801f35a03f42d38063efea", "sha256": "b2ce1cdda8ad4d2689edbc01f2ffe336bcff9b5b704c7c82c0776cac3e65eedc" }, "downloads": -1, "filename": "metamake-1.0.4.tar.gz", "has_sig": false, "md5_digest": "f4cd129b5d801f35a03f42d38063efea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44215, "upload_time": "2008-11-04T03:12:36", "url": "https://files.pythonhosted.org/packages/de/31/73bf38964ab8080a20eab1a51d35eaef035cfb54719ae5188f0c805c8440/metamake-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "987110fd107e24c0640c01e9f132b1b8", "sha256": "8dd8319d40c65e8b061a99e4b9c3e559d53e8c01fc270f42fc36e343b7f7ba90" }, "downloads": -1, "filename": "metamake-1.0.5.tar.gz", "has_sig": false, "md5_digest": "987110fd107e24c0640c01e9f132b1b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44262, "upload_time": "2008-11-18T16:00:26", "url": "https://files.pythonhosted.org/packages/a4/15/0c998e184e597b4c1b307ce818dc788b254599a21462e93cd0c3a41fd588/metamake-1.0.5.tar.gz" } ], "1.0.6": [ { "comment_text": "", "digests": { "md5": "4bf37fa8efe021228b07e28b57b3995c", "sha256": "f4d0e76c7059fb74d7b3b0e9b2bb3aba292e87ac4e00384a8b1629e6a8446645" }, "downloads": -1, "filename": "metamake-1.0.6.tar.gz", "has_sig": false, "md5_digest": "4bf37fa8efe021228b07e28b57b3995c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44555, "upload_time": "2008-11-18T16:13:19", "url": "https://files.pythonhosted.org/packages/de/5d/b67da9347011f46728313122647a470226ee0b1e6cdd1d96729d2e51d898/metamake-1.0.6.tar.gz" } ], "1.0.7": [ { "comment_text": "", "digests": { "md5": "25d2847bf35a256f07355ae8cbee8eb7", "sha256": "89e593834ed2cfbc7bedcc30aa17d554ff5b13be4846e632a3bce6686d530654" }, "downloads": -1, "filename": "metamake-1.0.7.tar.gz", "has_sig": false, "md5_digest": "25d2847bf35a256f07355ae8cbee8eb7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62995, "upload_time": "2008-12-05T23:17:56", "url": "https://files.pythonhosted.org/packages/36/92/22145da9ee4a828cde14f1d3940e33520532c00b783f79f1c27dcca6b714/metamake-1.0.7.tar.gz" } ], "1.0.8": [ { "comment_text": "", "digests": { "md5": "6840ae6cf0b569592580bb525a29efdb", "sha256": "e480aef2aa82e2aa240c53d6d7bbec307a55ecad4299c90ba0e0d2a017e27b41" }, "downloads": -1, "filename": "metamake-1.0.8.tar.gz", "has_sig": false, "md5_digest": "6840ae6cf0b569592580bb525a29efdb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63110, "upload_time": "2009-01-07T20:32:03", "url": "https://files.pythonhosted.org/packages/b5/9f/718569b7c472680a38ee061343323a025375317ea61509b636b076504a0a/metamake-1.0.8.tar.gz" } ], "1.0.9": [ { "comment_text": "", "digests": { "md5": "4105fbba837b8289890fe038f002cdda", "sha256": "7b92eacaf8671b80a8b5acbfece9d80b2e2b5ae2e46e4830d1a39e69e47c51b8" }, "downloads": -1, "filename": "metamake-1.0.9.tar.gz", "has_sig": false, "md5_digest": "4105fbba837b8289890fe038f002cdda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45568, "upload_time": "2009-01-07T20:47:00", "url": "https://files.pythonhosted.org/packages/dd/a0/fb1b33937d5427bb821642b38120b77315ef986f657a860bb5b90d387233/metamake-1.0.9.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "235ae4c903d4083ac58efef5dd7bfcee", "sha256": "693b2d1ae9d6412e98d4f850bce8599c405c170cef16db71b426fc278347c45f" }, "downloads": -1, "filename": "metamake-1.1.0.tar.gz", "has_sig": false, "md5_digest": "235ae4c903d4083ac58efef5dd7bfcee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22944, "upload_time": "2009-02-08T03:35:22", "url": "https://files.pythonhosted.org/packages/2b/07/93f5ed1e8d2a578ea53cb57feb0c51fa3f3dd477a99024054378a4a7e095/metamake-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "65c7ebbda186fd1a295c10f2d44d99ea", "sha256": "0ba869fc03cd2da17ab65470ed2e6faf61e12e5004521c03038d2363e552b7be" }, "downloads": -1, "filename": "metamake-1.1.1.tar.gz", "has_sig": false, "md5_digest": "65c7ebbda186fd1a295c10f2d44d99ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23637, "upload_time": "2009-06-03T22:37:04", "url": "https://files.pythonhosted.org/packages/84/30/e9a53eb81ec55b17d348e7d3959975653cdaaebfa8b723987d9b54010baa/metamake-1.1.1.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "b5eaa403e761c00b8ef694f01bc1ff59", "sha256": "cacd3dc210db529746a29d2c865a96a451f51cca101ae28aea0a184e50b5ee12" }, "downloads": -1, "filename": "metamake-1.1.3.tar.gz", "has_sig": false, "md5_digest": "b5eaa403e761c00b8ef694f01bc1ff59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23826, "upload_time": "2009-06-13T00:58:10", "url": "https://files.pythonhosted.org/packages/4c/91/f42d37822968c7e8651b34f6ec2f8f795b90bfcac0c60a0d1d6a25c7c86a/metamake-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "c5077648d21b44842e6e10b427dd7bda", "sha256": "94ba217941bbf0aaa5846f1f519a45a303c75e596d45fa36562639937d588546" }, "downloads": -1, "filename": "metamake-1.1.4.tar.gz", "has_sig": false, "md5_digest": "c5077648d21b44842e6e10b427dd7bda", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21802, "upload_time": "2009-06-14T22:10:04", "url": "https://files.pythonhosted.org/packages/5a/97/e90abd8793ad9b65f98ca819e08ba94e82be26949b7781182b4346f5f49c/metamake-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "ac530472b7a15b891f622662e40d2a75", "sha256": "e574e58947613c0aeedbe9ae6779504712654a215da7640479c36c64a860ac73" }, "downloads": -1, "filename": "metamake-1.1.5.tar.gz", "has_sig": false, "md5_digest": "ac530472b7a15b891f622662e40d2a75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21878, "upload_time": "2009-06-16T07:56:31", "url": "https://files.pythonhosted.org/packages/c2/3f/a2e45206177204dea826076e92a309818b8e1c38100d5c1d1d92e079b097/metamake-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "55c0219edbceeeecb0d7f805702a32d6", "sha256": "06d9e22c0f49edfddf0048e0170d667de331217fb49d89c5187c5c9e86e9ec58" }, "downloads": -1, "filename": "metamake-1.1.6.tar.gz", "has_sig": false, "md5_digest": "55c0219edbceeeecb0d7f805702a32d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22011, "upload_time": "2009-08-03T23:02:46", "url": "https://files.pythonhosted.org/packages/08/0c/70b3e8c882927e8bfa7bc04580244df8c650e0aeadbb9cef304376a835ea/metamake-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "87dfa354c31c8feb597794fe6a2fea6b", "sha256": "693facaeb473c7138d8a1d508f2a62d8936a67e8d2f842425d29931c0cb4daad" }, "downloads": -1, "filename": "metamake-1.1.7.tar.gz", "has_sig": false, "md5_digest": "87dfa354c31c8feb597794fe6a2fea6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22038, "upload_time": "2009-08-04T19:15:18", "url": "https://files.pythonhosted.org/packages/21/31/c281f9cfb759e1ef0f68702af83d7242a9f89bbc1e9a40e937e0a29a8453/metamake-1.1.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "87dfa354c31c8feb597794fe6a2fea6b", "sha256": "693facaeb473c7138d8a1d508f2a62d8936a67e8d2f842425d29931c0cb4daad" }, "downloads": -1, "filename": "metamake-1.1.7.tar.gz", "has_sig": false, "md5_digest": "87dfa354c31c8feb597794fe6a2fea6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22038, "upload_time": "2009-08-04T19:15:18", "url": "https://files.pythonhosted.org/packages/21/31/c281f9cfb759e1ef0f68702af83d7242a9f89bbc1e9a40e937e0a29a8453/metamake-1.1.7.tar.gz" } ] }