npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

maid-cleaning-cli

v0.0.9

Published

maid will clean for you

Downloads

3

Readme

Maid - Your Lightweight CLI Utility for Keeping Directories Clean and Structured

Organizing directories can become messy over time. Maid is here to help. Define where files should go, and Maid will take care of it. Listing files, moving files, and maintaining clean directories - Maid is here for you!

Installation

npm install maid-cleaning-cli -g

Usage

Listing Contents of a Directory

To list all files and sub-directories in a certain directory, just navigate to said directory and tell maid to list:

maid list

The output will be color-coded. Blue represents files, and red represents sub-directories.

To specify what to list, list accepts two flags:

  • -f or --files to show files
  • -d or --dirs to show directories

When using the flags, a color-coded headline will be printed above the actual result. Either Directories in current directory or Files in current directory.

Cleaning a directory

To clean a directory, just simply navigate to the messy directory and tell maid to clean:

maid clean

By default maid will not start cleaining without you instructing what needs cleaing and what must not be cleaned. For the clean command to take action, a .maidrc-file is required. If no config is present, an error with instructions will be printed - so don't worry, maid won't go ahead and move your files around without you knowing what you are doing.

Example

With the following rule in my .maidrc:

---
cleanRules:
  - { pattern: '^Test', fileExtension: '.txt', dirName: 'test_txt_files' }

Every file with a name starting with "Test" and a file extention of ".txt" will be moved to a folder test_txt_files.

Cleaning globally

To add some more efficiency, maid can also execute all rules that have specified values for applyInDir with one single command:

maid clean -g

The important distinction to make here

A rule is defined as global when no values are present for applyInDir. This means a rule is applicable in every directory by using maid clean. Cleaning globally on the other hand refers to executing all defined rules that have specified directories in which the rules can be applied. In other words: only rules with a directory-safeguard will be applied when executing a global clean by using maid clean -g

Example

Given the following clean rules in .maidrc:

{
  "cleanRules": [
    {
      "fileExtension": [".txt"],
      "dirName": "Text_Documents",
      "applyInDir": [
        "/Users/<username>/Desktop/testdir",
        "/Users/<username>/Desktop/testdir2"
      ]
    },
    {
      "fileExtension": [".pdf"],
      "dirName": "PDFs",
      "applyInDir": [
        "/Users/<username>/Desktop/testdir3",
        "/Users/<username>/Desktop/testdir4"
      ]
    }
  ]
}

And the test directories testdir, testdir2, testdir4 in /Users/<username>/Desktop. Each directory contains the same test files:

A global clean called from /Desktop will show the following result:

For each rule, all directories specified in applyInDir are cleaned according to the rule.

.maidrc Configuration

To instruct Maid on what to clean, create a .maidrc configuration file on your machine. Maid will use it when running.

For now, the config file only supports one property: cleanRules.

cleanRules is an array of objects that define the rules for Maid to clean. Each object represents one rule, indicating what to clean and under which conditions.

  • pattern (String): A regular expression to describe how the filename should look (e.g. "^Test" will filter all files starting with "Test")
  • fileExtension (String-Array): A list of file extension to limit the files to be cleaned (e.g. ".png" - include the .)
  • applyInDir (String-Array): A list of paths in which the rule can be applied. If applyInDir is no present, the rule is global and applicable in every folder
  • dirName (String): When cleaning files, maid will move them to a folder, that can be specified with this string (e.g. "/screenshots/images")

pattern, fileExtension and applyInDir will be evaluated with AND-logic, so the rule

{
  "pattern": "^Testfile",
  "fileExtension": [".png"],
  "dirName": "testfiles",
  "applyInDir": ["/Users/<username>/Desktop"]
}

will only move files to a folder called testfiles, if the following conditions are all met:

  • if the filename starts with "Testfile"
  • if the file has the extension .png
  • the current directory is /Users/<username>/Desktop

If neither pattern nor fileExtension is defined, the rule will not trigger and do nothing.

git repo safeguard

As an additional safeguard to prevent accidentally messing up the structure of git repositories, maid has a build in check when running clean. If current directory is a git repository, maid will ask if you wish to continue.

Getting Information about Saved Configuration

To retrieve information about the saved .maidrc configuration, use the following command:

maid config

For specific information, use these flags:

  • p or --path: Get the path to the config file
  • r or --cleanRules: Get all saved rules from the config
  • d or --rulesForDir: Get rules specific to the current directory

Creating Configuration

If no configuration is present, maid can even initiate configuration for you, just call config with the flag -i or --init

maid config --init

This command will guide you through the process of creating a .maidrc configuration file. If the configuration file already exists, the command will let you know.

Adding a Rule to Configuration

To add a rule to the configuration, use the following command:

maid config --addRule

This command will prompt you to enter details for the rule you want to add. You will need to provide the following information:

  • Pattern (required if no fileExtension is specified): A regular expression to match filenames.
  • File Extension (required if no pattern is specified): A list of file extensions separated by commas (e.g., .txt, .jpg).
  • Apply in Directory (optional): Specify one or more directory paths where the rule should apply.
  • Directory Name (required): The name of the directory where matching files will be moved.

The addRule command allows you to define specific cleanup rules according to your needs.

Example:

Suppose you want to add a rule to move all files starting with "Report" and having the extensions .docx and .pdf to a directory called reports. You can use the following command:

maid config --addRule

Then provide the following information in the prompts:

  • Pattern: ^Report
  • File Extension: .docx, .pdf
  • Apply in Directory: (leave empty for global rule)
  • Directory Name: reports

This will create a rule that moves files matching the specified pattern and extensions to the reports directory.