Skip to content

Latest commit

 

History

History
165 lines (113 loc) · 5.16 KB

README.md

File metadata and controls

165 lines (113 loc) · 5.16 KB

joe

A .gitignore magician in your command line. Joe generates .gitignore files from the command line for you.

Features

  • Written in uncomplicated Go (Golang)
  • No installation necessary - just use the binary.
  • Stupidly easy to use
  • Supports all Github-supported .gitignore files
  • Works on Mac, Linux and (maybe) Windows
  • Supports other version control systems (.hgignore)

Installation

After install, make sure to run joe u. This will download all .gitignore files in ~/.joe-data/ folder.

Option 1: Binary

joe is available for OSX (macOS), Linux and Windows.

Download the latest binary from the Releases page. It's the easiest way to get started with joe.

Make sure to add the location of the binary to your $PATH.

Option 2: From source (w/ GoMod Support)

git clone git@github.com:kendfss/joe.git
cd joe
go install
joe u

Option 3: From source (w/o GoMod Support)

This is the original installer from Karan's repo. I've updated it, but it's obsolete now that go uses Modules for package management.

git clone git@github.com:kendfss/joe.git
cd joe/
chmod +x tool.sh
./tool.sh build

Usage

Commands:

ls | list       list all available files
u | update      update all available gitignore files
g | generate    generate gitignore files
s | search      search for gitignore files with matching names

Basic usage

joe g java    # outputs .gitignore file for java to stdout

To update your .gitignore files at any time, simply run:

joe u

Overwrite existing .gitignore file

joe g java > .gitignore    # saves a new .gitignore file for java

Append to existing .gitignore file

joe g java >> .gitignore    # appends to an existing .gitignore file

Multiple languages

joe g java,node,osx > .gitignore    # saves a new .gitignore file for multiple languages

Create and append to a global .gitignore file

You can also use joe to append to a global .gitignore. These can be helpful when you want to ignore files generated by an IDE, OS, or otherwise.

git config --global core.excludesfile ~/.gitignore # Optional if you have not yet created a global .gitignore
joe g OSX,SublimeText >> ~/.gitignore

List all available files

joe ls    # OR `joe list`

joe s py # or `joe search`
# prints all languages whose names contain "py"
joe s "^py" 
# prints all languages whose names start with "py"
joe s py$ 
# prints all languages whose names end with "py"

Output:

actionscript, ada, agda, android, anjuta, appceleratortitanium, archives, archlinuxpackages, autotools, bricxcc, c, c++, cakephp, cfwheels, chefcookbook, clojure, cloud9, cmake, codeigniter, codekit, commonlisp, composer, concrete5, coq, craftcms, cvs, dart, darteditor, delphi, dm, dreamweaver, drupal, eagle, eclipse, eiffelstudio, elisp, elixir, emacs, ensime, episerver, erlang, espresso, expressionengine, extjs, fancy, finale, flexbuilder, forcedotcom, fortran, fuelphp, gcov, gitbook, go, gradle, grails, gwt, haskell, idris, igorpro, ipythonnotebook, java, jboss, jdeveloper, jekyll, jetbrains, joomla, jython, kate, kdevelop4, kohana, labview, laravel, lazarus, leiningen, lemonstand, libreoffice, lilypond, linux, lithium, lua, lyx, magento, matlab, maven, mercurial, mercury, metaprogrammingsystem, meteor, microsoftoffice, modelsim, momentics, monodevelop, nanoc, netbeans, nim, ninja, node, notepadpp, objective-c, ocaml, opa, opencart, oracleforms, osx, packer, perl, phalcon, playframework, plone, prestashop, processing, python, qooxdoo, qt, r, rails, redcar, redis, rhodesrhomobile, ros, ruby, rust, sass, sbt, scala, scons, scrivener, sdcc, seamgen, sketchup, slickedit, stella, sublimetext, sugarcrm, svn, swift, symfony, symphonycms, tags, tex, textmate, textpattern, tortoisegit, turbogears2, typo3, umbraco, unity, vagrant, vim, virtualenv, visualstudio, vvvv, waf, webmethods, windows, wordpress, xcode, xilinxise, xojo, yeoman, yii, zendframework, zephir

BONUS ROUND: Alternate version control software

Joe isn't just a generator for .gitignore files. You can use it and its output wherever a SCM is used.

joe g java > .hgignore

Contributing

Bug Reports & Feature Requests

Please use the issue tracker to report any bugs or file feature requests.

Developing

PRs are welcome. To begin developing, do this:

git clone git@github.com:karan/joe.git
cd joe/
go run *.go

tool.sh

This is a handy script that automates a lot of developing steps.

USAGE:
    $ $tool [-h|--help] COMMAND

  EXAMPLES:
    $ $tool deps      Install dependencies for joe
    $ $tool build     Build a binary
    $ $tool run       Build and run the binary

TODO

Avoid writing duplicates to output add an o option for writing output directly file

  • new structure
    • reading
    • writing
    • updating