Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/axelpale/tohiver
Move YYYY-MM-DD prefixed files to YYYY-based directories from macOS context menu
https://github.com/axelpale/tohiver
Last synced: about 1 month ago
JSON representation
Move YYYY-MM-DD prefixed files to YYYY-based directories from macOS context menu
- Host: GitHub
- URL: https://github.com/axelpale/tohiver
- Owner: axelpale
- License: mit
- Created: 2017-10-14T10:07:13.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-03-08T23:29:08.000Z (almost 6 years ago)
- Last Synced: 2024-11-14T21:36:26.739Z (about 2 months ago)
- Language: JavaScript
- Size: 9.77 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tohiver
Speed up your file organising. Get a service to your **macOs** context menu that moves the selected files based on few simple rules. For example you can do the following after installation: right-click a directory `2017-12-25-christmas-photos` in Finder and choose `Move to Archive`. The directory will be moved under `/Users/yourname/some/dir/2017` and a notification about the success will be displayed. Your Christmas photos are now available at `/Users/yourname/some/dir/2017/2017-12-25-christmas-photos`.
Features:
- Move files and directories that are prefixed with a 4-digit year to year-based directories.
- Move files and directories whose name contain a keyword to a given directory.Personally I use this to archive files into Dropbox systematically.
## Install
First, ensure you have Node.js installed:
$ node --version
v7.1.0
$ npm --version
3.10.9Second, install `tohiver` globally:
$ npm install tohiver -g
Third, find absolute paths to `node` and `tohiver`. We need these paths soon.
$ which node
/usr/local/bin/node
$ which tohiver
/usr/local/bin/tohiverFourth, create an **Automator** workflow by following these steps:
- open Automator. It is installed by default in macOS.
- In Automator, select from menu: File > New
- Choose a type for your document: Quick Action (called *Service* before macOS Mojave)
- Choose "Workflow receives selected **files and folders** in **Finder.app**"
- Drag **Run Shell Script** action to the workflow
- In the action, choose "Shell: **/bin/bash**" and "Pass input: **to stdin**"Now, recall the absolute paths from the third step because Run Shell Script understands only absolute paths. Write a line into the Run Shell Script action, similar to:
/usr/local/bin/node /usr/local/bin/tohiver --yyyy /Users/yourname/some/dir
This is enough to do the job. However, it is nice to have a notification about success or possible errors. To display a notification, drag a **Run JavaScript** action to the workflow and copy in the following code:
function run(input, parameters) {
var app = Application.currentApplication()app.includeStandardAdditions = true
var soundName = 'Ping'
if (input[0].substr(0,5).toLowerCase() === 'error') {
soundName = 'Basso'
}app.displayNotification(input[0], {
withTitle: 'Move to Archive',
soundName: soundName
})
}The code basically displays the first line of tohiver's output. It also detects an error message and chooses a suitable notification sound. If you like to customize, list available sounds by `$ ls /System/Library/Sounds`.
Finally, choose a name for your workflow (e.g. Move to Archive) and then File > Save. Now, when you right-click a file or directory in Finder, you should notice a new service among the last items of the context menu.
## Command Line Interface
tohiver --yyyy --tagged --tagged
## Development
Use `npm link` to install the module CLI globally. Test manually by running `tohiver`, then feed input and close with ctrl-d.
## Licence
[MIT](LICENSE)