{ "info": { "author": "DimiDimit", "author_email": "dmtrdmtrov@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Topic :: System :: Filesystems", "Topic :: Utilities" ], "description": "# remcmp\nExtensible program to compare local and remote directories.\n\nSince it uses the `fs` module, any extensions (such as [`fs.smbfs`](https://pypi.org/project/fs.smbfs/)) can be used simply by installing them, and [you can write your own](https://docs.pyfilesystem.org/en/latest/extension.html).\n## Installation\nYou can install it using `pip`:\n```shell script\npip3 install remcmp\n``` \nOr download it directly from [PyPI](https://pypi.org/project/remcmp/).\n## Usage\n```\n$ remcmp -h\nusage: remcmp.py [-h] [-f] [-c] [-lf LOG_FILE] [-ll LOG_LEVEL] dir1 dir2\n\nRemote compare directories.\n\npositional arguments:\n dir1 First directory to compare\n dir2 Second directory to compare\n\noptional arguments:\n -h, --help show this help message and exit\n -f, --files-only Do not recurse into folders, only compare the files\n -c, --no-color Do not output colorful text\n -lf LOG_FILE, --log-file LOG_FILE\n Log into a file. This disables colored output\n -ll LOG_LEVEL, --log-level LOG_LEVEL\n Which logging level to use. SUMMARY can be used to\n only show the summary. By default this is INFO for\n terminal and DEBUG for log file\n```\n## Exit codes\nEach stat (e.g. `Equal`, `File only exists on one side`) has a flag. If it is encountered at least once then it is OR-ed with the exit code. E.g. `Directory only exists on one side` and `File only exists on one side`: `8 | 32 = 40`.\n```\nNo stat: 0\nError: 1\nEqual: 2\nNot equal: 4\nDirectory only exists on one side: 8\nDirectory is file on the other side: 16\nFile only exists on one side: 32\nFile is directory on the other side: 64\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/DimiDimit/remcmp", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "remcmp", "package_url": "https://pypi.org/project/remcmp/", "platform": "", "project_url": "https://pypi.org/project/remcmp/", "project_urls": { "Homepage": "https://github.com/DimiDimit/remcmp" }, "release_url": "https://pypi.org/project/remcmp/2.1.0.post2/", "requires_dist": [ "colorama", "fs" ], "requires_python": ">=3.7", "summary": "Extensible program to compare local and remote directories.", "version": "2.1.0.post2" }, "last_serial": 5920470, "releases": { "1.0.post1": [ { "comment_text": "", "digests": { "md5": "c8ed2ab22bd0f5c673cedc36828d78f1", "sha256": "cee9dd164f468b34bacdc2ea0e95e79eca2ed2cc5fb761a566754e960b0ece15" }, "downloads": -1, "filename": "remcmp-1.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "c8ed2ab22bd0f5c673cedc36828d78f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7736, "upload_time": "2019-09-08T14:20:43", "url": "https://files.pythonhosted.org/packages/eb/de/4ee4c2269b5a86165c06ec3279b2a987eb4c1c7536382461e0046018f778/remcmp-1.0.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ecf9aea65667f5f2006acf811648311a", "sha256": "410ef5308cd5c6efe960c165c06112f8ff93267315b971dd590f4f8b93f8f407" }, "downloads": -1, "filename": "remcmp-1.0.post1.tar.gz", "has_sig": false, "md5_digest": "ecf9aea65667f5f2006acf811648311a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5276, "upload_time": "2019-09-08T14:23:09", "url": "https://files.pythonhosted.org/packages/35/32/3c3d9e837d2c12ffa1f9dc71c14e675ebbe59b7ee0bfdf3d9937313949f0/remcmp-1.0.post1.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "02ab7c6c266dd335fa57375671813bcb", "sha256": "495167aba8e9028bafa5c2db2c81be6e9c2d0978859cd61caadfdd078569984b" }, "downloads": -1, "filename": "remcmp-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "02ab7c6c266dd335fa57375671813bcb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3593, "upload_time": "2019-09-26T21:19:22", "url": "https://files.pythonhosted.org/packages/d2/ef/d09f0e38005e91b411d11ac429c6353a2241a13d7a4b9eb459cc43d953fc/remcmp-2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4249760ce01ba19a27304a6b9008eb6", "sha256": "80a3eb639bf0643de8113c25f8597c15a92b026a98d9a7edaa470cdbef987282" }, "downloads": -1, "filename": "remcmp-2.0.tar.gz", "has_sig": false, "md5_digest": "c4249760ce01ba19a27304a6b9008eb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3209, "upload_time": "2019-09-26T21:19:23", "url": "https://files.pythonhosted.org/packages/79/5f/b06e0efe52850e2b39953b1fe2866b1a43f8b35985b1c5c1383674db3f2f/remcmp-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "5ded5e05c63776d4a1162a635afaa729", "sha256": "6212f215b1577f7a13af3bab909f402c6d186221988becf2d2806f3d75b54ab1" }, "downloads": -1, "filename": "remcmp-2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5ded5e05c63776d4a1162a635afaa729", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4459, "upload_time": "2019-09-27T09:08:41", "url": "https://files.pythonhosted.org/packages/a6/24/6a7779ddabfc2ea8c141b4910e928b40562f72c1dff68657bd498a3c5c65/remcmp-2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "945f52060c291c7e33de1f93c9d9a6b0", "sha256": "88260d640462e55960d41cb807f2cf267312b7084b0a44173a000ee457fa09d6" }, "downloads": -1, "filename": "remcmp-2.1.tar.gz", "has_sig": false, "md5_digest": "945f52060c291c7e33de1f93c9d9a6b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3713, "upload_time": "2019-09-27T09:08:42", "url": "https://files.pythonhosted.org/packages/1e/d4/ee13090a6441d0b2f505dc0a4c03f003237aab6b35378ba4ca5360acaa73/remcmp-2.1.tar.gz" } ], "2.1.0.post1": [ { "comment_text": "", "digests": { "md5": "4f16835f86928e99b2f6c10a99ee52a0", "sha256": "1163fccddf27182788068a2e4d834f88cc6860577ac2428529003943642adcb0" }, "downloads": -1, "filename": "remcmp-2.1.0.post1-py3-none-any.whl", "has_sig": false, "md5_digest": "4f16835f86928e99b2f6c10a99ee52a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5421, "upload_time": "2019-09-27T20:18:49", "url": "https://files.pythonhosted.org/packages/73/3f/cfea99bcd6dd09f816086e2e9538f2798decec52ddccd58b7d522bf93103/remcmp-2.1.0.post1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6194e6d43ee1d7bb6f1d28f198166579", "sha256": "0c792bd3f99da065c994215785b3749bc23a581f938b5a67b1d02982a0083b99" }, "downloads": -1, "filename": "remcmp-2.1.0.post1.tar.gz", "has_sig": false, "md5_digest": "6194e6d43ee1d7bb6f1d28f198166579", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3799, "upload_time": "2019-09-27T20:18:51", "url": "https://files.pythonhosted.org/packages/40/55/29c91bfad7d203a5c8995515a4063348c4a2487450c04e2c41da8af9f6ef/remcmp-2.1.0.post1.tar.gz" } ], "2.1.0.post2": [ { "comment_text": "", "digests": { "md5": "a80b904bb35dbf37777b5bb9619371ac", "sha256": "261c3c73df5f3debb81cdcaad1a3ad62db2119429ea983514b76556ae070aef8" }, "downloads": -1, "filename": "remcmp-2.1.0.post2-py3-none-any.whl", "has_sig": false, "md5_digest": "a80b904bb35dbf37777b5bb9619371ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5433, "upload_time": "2019-10-02T20:54:09", "url": "https://files.pythonhosted.org/packages/2a/4f/e34eeff05832a4b3540ed7c5a1591b6b26b262d0001a724b0f96d6f355c4/remcmp-2.1.0.post2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36eb65338c808eca9eca8b4beb4d2380", "sha256": "e5ffac2d6d54c8c0da726faeebaed9c2bf5475fe899e39d41774e93b9597e601" }, "downloads": -1, "filename": "remcmp-2.1.0.post2.tar.gz", "has_sig": false, "md5_digest": "36eb65338c808eca9eca8b4beb4d2380", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 3831, "upload_time": "2019-10-02T20:54:10", "url": "https://files.pythonhosted.org/packages/ed/63/e93baa227a990c0a998fc2ba34596ae6ff981c1786caf533a612cb95ea40/remcmp-2.1.0.post2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a80b904bb35dbf37777b5bb9619371ac", "sha256": "261c3c73df5f3debb81cdcaad1a3ad62db2119429ea983514b76556ae070aef8" }, "downloads": -1, "filename": "remcmp-2.1.0.post2-py3-none-any.whl", "has_sig": false, "md5_digest": "a80b904bb35dbf37777b5bb9619371ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5433, "upload_time": "2019-10-02T20:54:09", "url": "https://files.pythonhosted.org/packages/2a/4f/e34eeff05832a4b3540ed7c5a1591b6b26b262d0001a724b0f96d6f355c4/remcmp-2.1.0.post2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "36eb65338c808eca9eca8b4beb4d2380", "sha256": "e5ffac2d6d54c8c0da726faeebaed9c2bf5475fe899e39d41774e93b9597e601" }, "downloads": -1, "filename": "remcmp-2.1.0.post2.tar.gz", "has_sig": false, "md5_digest": "36eb65338c808eca9eca8b4beb4d2380", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 3831, "upload_time": "2019-10-02T20:54:10", "url": "https://files.pythonhosted.org/packages/ed/63/e93baa227a990c0a998fc2ba34596ae6ff981c1786caf533a612cb95ea40/remcmp-2.1.0.post2.tar.gz" } ] }