3 releases

0.1.3 Mar 11, 2021
0.1.2 Mar 11, 2021
0.1.1 Jan 11, 2021
0.1.0 Jan 11, 2021

#2217 in Command line utilities

Custom license

45KB
1K SLoC

Oxio

crates.io

Oxio is a small snippet manager inspired by Zach Holman's boom. Quoting Zach's description of boom:

You can stash away text like URLs, canned responses, and important notes and then quickly copy them onto your clipboard, ready for pasting.

Installing

Install using cargo:

cargo install oxio

Usage

 ▲ oxio gif magic http://i.imgur.com/n5xR79B.gif
oxio: Ok, magic (in gif) is http://i.imgur.com/n5xR79B.gif

 ▲ oxio magic
oxio: http://i.imgur.com/n5xR79B.gif (from gif->magic) is now in your clipboard!

 ▲ oxio rm-item gif magic
oxio: Removed magic from gif

Manipulating Items

To add items to your local cache, invoke oxio passing three arguments; A group, the item name and the item's value. Those arguments are used to write a new file in the local cache:

▲ oxio gif magic http://i.imgur.com/n5xR79B.gif
  ------^----^-----------------^----------------
        |    |                 |
        |    |                 Value
        |    Name
        Group

To quickly copy an item to the clipboard, simply invoke oxio passing the item name in the first argument:

▲ oxio magoc
oxio: http://i.imgur.com/n5xR79B.gif (from gif->magic) is now in your clipboard!

It then copies the item to your clipboard. Notice that the command above asked for magoc instead of magic. Oxio attempts automatically fix typos. In case you need an exact item, from an exact group, invoke oxio passing the group, followed by the item's name:

▲ oxio gif magic
oxio: http://i.imgur.com/n5xR79B.gif (from gif->magic) is now in your clipboard!

To remove an item, use rm-item, again, passing the group's and item's name:

▲ oxio rm-item gif magic
oxio: Removed magic from gif

To remove a group and all its items, use rm-group:

▲ oxio rm-group gif magic
oxio: Removed group gif and all its items.

Then, to display all your items, use oxio all:

▲ oxio all
gif:
  magic: http://i.imgur.com/n5xR79B.gif

Alternatively, to edit large items using your default editor, use oxio edit, passing the group's and item's name:

▲ oxio edit gif magic
[opens your editor]
oxio: Ok, magic (in gif) is foobar

Sync

For those using multiple machines, Oxio is able to sync a repository with all local items. To start using sync, create a new remote repository, and use one of the following alternatives:

With an existing cache

In case you already have a local cache (you already added items), use oxio sync merge git-url, where git-url is a git repository:

▲ oxio sync merge git@github.com:yourusername/.oxio.git
oxio: Clonning git@github.com:yourusername/.oxio.git into /var/folders/l1/n7yv6s4d5350p7nxyn8bmtsc0000gn/T/zcl7bKG1cY0mvMcpG5Y9AGjpnICvVa
oxio: Copying items to new temporary repository...
oxio: Performing sync...
oxio: Merging changes...
oxio: Pushing changes...
oxio: Sync complete
oxio: Applying local changes...
oxio: Done! 220 item(s) in the local repository. Use oxio sync to sync changes.

Oxio will automatically update the repository and your installation.

Without an existing cache

In case you haven't added items into your local cache, or you already have a repository with Oxio items and want to download to your machine, use oxio sync init git-url:

▲ oxio sync init git@github.com:yourusername/.oxio.git
oxio: Clonning git@github.com:yourusername/.oxio.git into /Users/yourusername/.oxio.cache
oxio: Done! 219 item(s) in the local repository. Use oxio sync to sync changes.

Syncing changes to your local cache

After adding, removing or editing items or groups, simply invoke oxio sync. Remote changes will be downloaded to the local repository, and local changes will be sent to it.

▲ oxio sync
oxio: Performing sync...
oxio: Merging changes...
oxio: Pushing changes...
oxio: Sync complete

TODO

  • Add Tests

License

MIT License

Copyright (c) 2021 Victor Gama

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Dependencies

~14–25MB
~421K SLoC