{ "info": { "author": "Dakota St. Laurent", "author_email": "d.h.stlaurent@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# Boxley\nBoxley is a git-like CLI for syncing files with Dropbox.\n\n\n## About\nBoxley allows you to add any file to a list of files (`paths.json`) that can then be synchronized with Dropbox. When adding a file to this list, the directory in Dropbox that the file will be synced to can be specified. Files can also be organized into \"groups\", so that you don't have to push individual files or all of your files at once.\n\n\n## Installation\nInstallation of Boxley, unfortunately, requires you to create your own Dropbox app. The reason for this is Boxley requires full read/write permissions to your Dropbox, so if I were to distribute the API key with the app, it would pose a security risk, I think.\n\nSee [INSTALL.md](./INSTALL.md) for full instructions.\n\n\n## Settings\nThe default settings are as follows (found in `~/.boxley/boxley.conf`):\n\n```\naccess_token=YOUR_ACCESS_TOKEN\ndb_dir=/Boxley/\nrelative_to_home=true\noverwrite=true\nautopush=false\nautopush_time=---\npush_on_startup=false\nautopull=false\nautopull_time=---\npull_on_startup=false\n```\n\n- **access_token**: A user-specific Dropbox access token. Don't alter this! It is created with `init`.\n- **db_dir**: The default directory to sync with. Make sure to have a trailing `/` at the end, regardless of your OS.\n- **relative_to_home**: Tells Boxley to include the path to your home directory in the Dropbox file paths.\n- **overwrite**: Tells Dropbox to overwrite the files that are pushed, instead of duplicating them.\n\nOther settings not yet implemented. Sorry :(\n\n\n## Usage\nA simple example:\n\n```bash\necho Hellogoodbye > my_file.txt\nboxley add my_file.txt\nboxley push my_file.txt\n```\n\n## Commands\nI like examples, so I'll put a lot here. My notation for displaying the mapping between the local file path and the Dropbox file path is as such:\n\n```\n/home/you/some/path/file.txt --> /Boxley/some/path/file.txt\n```\n\nThese commands assume the default settings are used. See above.\n\n\n### `add [options] [files]`\nAdds file paths to `paths.json`, which can then be pushed. If a group is specified (see `-g` below), then the path is added to a group file instead. The Dropbox file path defaults to the local file path. Multiple files can be specified, and *should* work with any option.\n\nExample:\n\n```bash\nboxley add file.txt\n# /home/you/some/path/file.txt --> /Boxley/some/path/file.txt\n\nboxley add fileA.txt fileB.txt\n# /home/you/some/path/fileA.txt --> /Boxley/some/path/fileA.txt\n# /home/you/some/path/fileB.txt --> /Boxley/some/path/fileB.txt\n```\n\nIf `RELATIVE_TO_HOME` is `false`, then:\n\n```bash\nboxley add file.txt\n# /home/you/some/path/file.txt --> /Boxley/home/you/some/path/file.txt\n```\n\n#### Options\n##### `-g`\nAdds the file path(s) to the group file specified by its name. Group filenames are of the form `group-GROUPNAME.json`. If the group does not already exist, it is created.\n\n```bash\nboxley add -g mygroup file.txt\n# /home/you/some/path/file.txt --> /Boxley/some/path/file.txt\n# this is found in ~/.boxley/group-mygroup.json\n```\n\n##### `-root`\nIgnores the default directory in `boxley.json`. Can be used in conjunction with `-d`.\n\n```bash\nboxley add -root file.txt\n# /home/you/some/path/file.txt --> /some/path/file.txt\n```\n\nIf `RELATIVE_TO_HOME` is `false`, then:\n\n```bash\nboxley add -root file.txt\n# /home/you/some/path/file.txt --> /home/you/some/path/file.txt\n```\n\n##### `-d`\nSpecifies which Dropbox directory the file will be synced to. Can be used in conjunction with `-root`.\n\nThe following example will hold regardless of `RELATIVE_TO_HOME`'s value.\n\n```bash\nboxley add -d MyDirectory file.txt\n# /home/you/some/path/file.txt --> /Boxley/MyDirectory/file.txt\n\nboxley add -root -d MyDirectory file.txt\n# /home/you/some/path/file.txt --> /MyDirectory/file.txt\n```\n\n\n### `del [options] [files]`\nDeletes file paths from `paths.json`. If a group is specified (see `-g` below), then the file path is deleted from the group file instead. If a file path cannot be found in the corresponding `.json` file, it is skipped.\n\nExample:\n\n```bash\nboxley add file.txt\n# /home/you/some/path/file.txt --> /Boxley/some/path/file.txt\n\nboxley add fileA.txt fileB.txt\n# /home/you/some/path/fileA.txt --> /Boxley/some/path/fileA.txt\n# /home/you/some/path/fileB.txt --> /Boxley/some/path/fileB.txt\n```\n\nIf `RELATIVE_TO_HOME` is `false`, then:\n\n```bash\nboxley del file.txt\n```\n\n#### Options\n##### `-g`\nDeletes the file path(s) from the group file specified by its name. If the group does not exist, the process is aborted.\n\n```bash\nboxley del -g mygroup file.txt\n```\n\n\n### `ls [options] [groupnames]`\nList all files in each group given. The absolute path of every file is printed by default. If the `--home` flag is set, then the paths will be relative to the home directory instead of the root, if applicable. If the `-v` flag is set, then each file's corresponding Dropbox directory is printed too.\n\n```bash\nboxley add -g somegroup file.txt # assume the path is /home/user/Documents/file.txt\n\nboxley ls somegroup\n\nFiles in 'somegroup':\n /home/user/Documents/file.txt\n```\n\n#### Options\n##### `--home`\nPrints each file path relative to home instead of the root.\n\n```bash\nboxley ls --home somegroup\n\nFiles in 'somegroup':\n ~/Documents/file.txt\n```\n\n##### `-v`\nPrints each file's corresponding Dropbox path.\n\n```bash\nboxley ls -v somegroup\n\nFiles in 'somegroup':\n /home/user/Documents/file.txt --> /Boxley/Documents/file.txt\n```\n\n\n### `mkgroup [groupnames]`\nCreates a group file. Multiple group files can be created at once.\n\n```bash\nboxley mkgroup awesomestuff # creates ~/.boxley/group-awesomestuff.json\nboxley mkgroup groupA groupB # multiple groups!\n```\n\n\n### `pull [options] [file(s)]`\nPulls specified files from Dropbox. If a file belongs to a group, its group name MUST be specified, unless it belongs to both `paths.json` and a group, in which case, either one can be specified. Files of different groups CANNOT be pulled at the same time; only files of one group can be. If a file specified does not exist in the `*.json` file it *should* belong to, then it will be skipped.\n\n```bash\nboxley pull myfile.txt\nboxley pull file_A.txt file_B.txt\n\n# if file_C.txt and file_D.txt are in the group \"hello\"\nboxley push -g hello file_C.txt file_D.txt\n```\n\n#### Options\n##### `-g`\nGroup that the file(s) belong to. Multiple groups cannot be specified. If a file belongs to a group, its group must be specified.\n\n##### `-v`\nVerbose output; prints a message for every file that is pulled.\n\n\n### `pullall [options]`\nPulls ALL files (those specified in `paths.json` and all `group-*.json` files) from Dropbox. If a file in the `*.json` file cannot be found, it is skipped.\n\n```bash\nboxley pullall\n```\n\n#### Options\n##### `-v`\nVerbose output; prints a message for every file that is pushed.\n\n\n### `pullgroup [options] [groupname(s)]`\nPulls files in specified group(s) from Dropbox. If a file in the `group-*.json` file cannot be found, it is skipped.\n\n```bash\nboxley pullgroup awesomestuff # a single group\nboxley pullgroup assets sprites # multiple groups!\n```\n\n#### Options\n##### `-v`\nVerbose output; prints a message for every file that is pulled.\n\n\n### `push [options] [file(s)]`\nPushes specified files to Dropbox. If a file belongs to a group, its group name MUST be specified, unless it belongs to both `paths.json` and a group, in which case, either one can be specified. Files of different groups CANNOT be added at the same time; only files of one group can be. If a file specified does not exist in the `*.json` file it *should* belong to, then it will be skipped.\n\n```bash\nboxley push myfile.txt\nboxley push file_A.txt file_B.txt\n\nboxley push --dup myfile.txt # duplicate file instead of overwriting\n\n# if file_C.txt and file_D.txt are in the group \"hello\"\nboxley push -g hello file_C.txt file_D.txt\n```\n\n#### Options\n##### `--dup`\nDuplicate; if the file being pushed already exists on Dropbox, then this file will have a duplicate name. Equivalent to having the `paths.json` overwrite setting set to false.\n\n##### `-g`\nGroup that the file(s) belong to. Multiple groups cannot be specified. If a file belongs to a group, its group must be specified.\n\n##### `--ov`\nOverwrite; if the file being pushed already exists on Dropbox, then this file will overwrite the existing version. Equivalent to having the `paths.json` overwrite setting set to true.\n\n##### `-v`\nVerbose output; prints a message for every file that is pushed.\n\n\n### `pushall [options]`\nPushes ALL paths (those specified in `paths.json` and all `group-*.json` files) to Dropbox. If a file in the `*.json` file cannot be found, it is skipped.\n\n```bash\nboxley pushall\n```\n\n#### Options\n##### `--dup`\nDuplicate; if the file being pushed already exists on Dropbox, then this file will have a duplicate name. Equivalent to having the `paths.json` overwrite setting set to false.\n\n##### `--ov`\nOverwrite; if the file being pushed already exists on Dropbox, then this file will overwrite the existing version. Equivalent to having the `paths.json` overwrite setting set to true.\n\n##### `-v`\nVerbose output; prints a message for every file that is pushed.\n\n\n### `pushgroup [options] [groupname(s)]`\nPushes specified group(s) to Dropbox. If a file in the `group-*.json` file cannot be found, it is skipped.\n\n```bash\nboxley pushgroup awesomestuff # a single group\n\nboxley pushgroup -d sprites models # push multiple groups, and duplicate files instead of overwriting\n```\n\n#### Options\n##### `--dup`\nDuplicate; if the group files being pushed already exist on Dropbox, then these files will have duplicate names. Equivalent to having the `paths.json` overwrite setting set to false.\n\n##### `--ov`\nOverwrite; if the group files being pushed already exist on Dropbox, then these files will overwrite the existing versions. Equivalent to having the `paths.json` overwrite setting set to true.\n\n##### `-v`\nVerbose output; prints a message for every file that is pushed.\n\n## Testing\npy.test is required for running Boxley's tests. Tests **must** be run inside the `test/` directory due to a relative import. The tests can be run by simply running `py.test` inside the directory.\n\n\n## Contributing\nBoxley, like all of us, has a few issues. These issues are put here on GitHub. If you feel as if you can fix any of those issues, feel free to submit a pull request!\n\n\n## License\nGPL\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "Boxley", "package_url": "https://pypi.org/project/Boxley/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Boxley/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/Boxley/0.1.5/", "requires_dist": null, "requires_python": null, "summary": "Sync files to Dropbox using a git-like CLI.", "version": "0.1.5" }, "last_serial": 1670752, "releases": { "0.1.4": [ { "comment_text": "", "digests": { "md5": "116320726954609e09be0939b50ae18e", "sha256": "cb479d3722a6401395c66b32a8f3a91fa5881445cd02897b6b39432a1830bf98" }, "downloads": -1, "filename": "Boxley-0.1.4.tar.gz", "has_sig": false, "md5_digest": "116320726954609e09be0939b50ae18e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7009, "upload_time": "2015-08-02T02:44:45", "url": "https://files.pythonhosted.org/packages/66/49/5cfdedfa90662c1a8f358c0136a5abcff7e2092b905e271627a142133bc9/Boxley-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "1c8d2bf5623991c115c95156a760dfa2", "sha256": "001229583243a13394844f12363765477d2b1c739ddfd7e82480ab8c4caf38a6" }, "downloads": -1, "filename": "Boxley-0.1.5.tar.gz", "has_sig": false, "md5_digest": "1c8d2bf5623991c115c95156a760dfa2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10322, "upload_time": "2015-08-10T00:43:52", "url": "https://files.pythonhosted.org/packages/c7/23/d47a37611b77cd7e813db43e683a629f68aaeb084614dd66076afb09036b/Boxley-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1c8d2bf5623991c115c95156a760dfa2", "sha256": "001229583243a13394844f12363765477d2b1c739ddfd7e82480ab8c4caf38a6" }, "downloads": -1, "filename": "Boxley-0.1.5.tar.gz", "has_sig": false, "md5_digest": "1c8d2bf5623991c115c95156a760dfa2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10322, "upload_time": "2015-08-10T00:43:52", "url": "https://files.pythonhosted.org/packages/c7/23/d47a37611b77cd7e813db43e683a629f68aaeb084614dd66076afb09036b/Boxley-0.1.5.tar.gz" } ] }