Coder Social home page Coder Social logo

ryanfaerman / maid Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maid/maid

0.0 1.0 0.0 5.44 MB

Be lazy. Let Maid clean up after you, based on rules you define. Think of it as "Hazel for hackers".

Home Page: http://rubygems.org/gems/maid

License: GNU General Public License v2.0

maid's Introduction

Maid

Gem Version Build Status Dependency Status Code Climate Bitdeli Badge

Be lazy! Let Maid clean up after you, based on rules you define.

Installation | Tutorial | Example | User Community | Documentation | Change Log

Maid keeps files from sitting around too long, untouched. Many of the downloads and temporary files you collect can easily be categorized and handled appropriately by rules you define. Let the maid in your computer take care of the easy stuff, so you can spend more of your time on what matters.

Think of it like the email filters you might already have, but for files. Worried about things happening that you don't expect? Maid doesn't overwrite files and actions are logged so you can tell what happened.

Maid is inspired by the Mac OS X shareware program Hazel. Think of Maid as "Hazel for hackers".

Your rules are defined in Ruby, so simple rules are easy and difficult rules are possible. This also makes Maid a great general-purpose advanced file renaming tool.

Want to help?

This project wouldn't be where it is today without its users and contributors. Thank you! See AUTHORS and the contributors graph for more info.

For Users

Flattr this git repo

For Developers

Buzz

Hacker News Logo

Hazel for hackers - December 16th, 2012 (peaked at #2)

Ruby5 Logo

Podcast #302 (at 2:45) - August 31st, 2012

OneThingWell Logo

Maid - August 29th, 2012

More...

Installation

Maid is a gem, so just gem install maid like normal. If you're unfamiliar with Ruby, please see below for details.

Requirements

Modern Ruby versions and Unix-like operating systems should work, but only OS X and Ubuntu are tested regularly.

Offically supported:

  • OS: Mac OS X, Ubuntu
  • Ruby: 1.9.3+ (2.0.0, 2.1.0, or 2.1.1 are preferred)

Some features require OS X. See the documentation for more details.

Manual Installation

First, you need Ruby.

Consider rbenv or rvm, especially if only Ruby 1.8.7 is available (e.g. if you are using an older version of OS X).

System Ruby works fine too, though:

  • Mac OS X: Ruby 2.0.0 comes preinstalled in OS X 10.9.
  • Ubuntu: Ruby is not preinstalled. To install Ruby 1.9.3: sudo apt-get install ruby1.9.1 (sic) (Interested in a package?)

Then, you can install via RubyGems. Open a terminal and run:

gem install maid

(Use sudo if using system Ruby.)

At a later date, you can update by running:

gem update maid

If you decide you don't want Maid installed anymore, remove it:

gem uninstall maid

NOTE: This does not remove any files under ~/.maid or crontab entries. Please remove them at your convenience.

Tutorial

In a nutshell, Maid uses "rules" to define how files are handled. Once you have rules defined, you can either test what cleaning would do (maid clean -n) or actually clean (maid clean -f).

To generate a sample rules file, run:

maid sample

Maid rules are defined using Ruby, with some common operations made easier with a small DSL (Domain Specific Language).

For example, this is a rule:

Maid.rules do
  rule 'Old files downloaded while developing/testing' do
    dir('~/Downloads/*').each do |path|
      if downloaded_from(path).any? {|u| u.match 'http://localhost'} && 1.week.since?(last_accessed(path))
        trash(path)
      end
    end
  end
end

If you're new to Ruby and would prefer a more traditional for loop, you can also do this:

Maid.rules do
  rule 'My rule' do
    for path in dir('~/Downloads/*')
      # ...
    end
  end
end

Before you start running your rules, you'll likely want to be able to test them. Here's how:

# No actions are taken; you just see what would happen with your rules as defined.
maid clean --dry-run # Synonyms: -n, --noop

To run your rules on demand, you can run maid manually:

maid clean -f                 # Run the rules at ~/.maid/rules.rb, logging to ~/.maid/maid.log
maid clean -fr some_rules.rb  # Run the rules in the file 'some_rules.rb', logging to ~/.maid/maid.log

So, for example, if this is some_rules.rb:

Maid.rules do
  rule 'downloaded PDF books' do
    move(dir('~/Downloads/*.pdf'), '~/Books')
  end
end

Then, this is the command to test, as well as some sample output:

$ maid clean -nr some_rules.rb
Rule: downloaded PDF books
mv "/Users/ben/Downloads/book.pdf" "/Users/ben/Books/"
mv "/Users/ben/Downloads/issue12.pdf" "/Users/ben/Books/"
mv "/Users/ben/Downloads/spring2011newsletter.pdf" "/Users/ben/Books/"

For help with command line usage, run maid help. For more help, please see the links at the top of this README.

Automation

Once you get a hang for what you can do with Maid, let it do its stuff automatically throughout the day. You'll find your computer stays a little tidier with as you teach it how to handle your common files.

Note: Both Mac OS X and Ubuntu support callbacks when folders are changed (fsevent/inotify), and that may be a forthcoming feature in Maid. That said, I find cron to take care of most of my needs. Pull requests are welcome, however. :)

To do this, edit your crontab in your tool of choice:

crontab -e

...and have it invoke the maid clean -f command. The --silent option is provided to keep this from emailing you, if desired. A log of the actions taken is kept at ~/.maid/maid.log.

Example for every day at 1am:

# minute hour day_of_month month day_of_week command_to_execute
0 1 * * * /bin/bash -li -c "maid clean --force --silent"

Warranty

THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM β€œAS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

License

GPLv2. See LICENSE for a copy.

maid's People

Contributors

benjaminoakes avatar phoolish avatar johncolvin avatar winniethemu avatar bobthecow avatar larrylv avatar bitdeli-chef avatar bradleyd avatar jurriaan avatar lewis-od avatar markjaquith avatar blomma avatar mourner avatar johai avatar

Watchers

Ryan Faerman avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.