Skip to content
/ joe Public
forked from kendfss/joe

🏃 A .gitignore magician in your command line

License

Notifications You must be signed in to change notification settings

omata/joe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:omata/joe.git
cd joe
go install
joe u

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

It uses the tool TaskFile, so you must to install it before take this aproach.

git clone git@github.com:omata/joe.git
cd joe/
task build:[os]:[arch]

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:

250 supported .gitignore files:
actionscript
ada
agda
al
altiumdesigner
android
anjuta
ansible
appceleratortitanium
appengine
archives
archlinuxpackages
atmelstudio
autoit
autotools
b4x
backup
bazaar
bazel
beef
bitrix
bricxcc
c
c++
cakephp
calabash
cdk
cfwheels
chefcookbook
clojure
cloud9
cmake
codeigniter
codekit
codesniffer
commonlisp
composer
concrete5
coq
cordova
core
craftcms
cuda
cvs
d
dart
darteditor
delphi
diff
dm
dreamweaver
dropbox
drupal
drupal7
eagle
eclipse
eiffelstudio
elisp
elixir
elm
emacs
ensime
episerver
erlang
esp-idf
espresso
exercism
expressionengine
extjs
fancy
finale
flaxengine
flexbuilder
forcedotcom
fortran
fuelphp
gcov
gitbook
gnomeshellextension
go
go.allowlist
godot
gpg
gradle
grails
gretl
gwt
haskell
hugo
iar_ewarm
idris
igorpro
images
inforcms
java
jboss
jboss4
jboss6
jdeveloper
jekyll
jenkins_home
jenv
jetbrains
jigsaw
joomla
julia
jupyternotebooks
kate
kdevelop4
kentico
kicad
kohana
kotlin
labview
laravel
lazarus
leiningen
lemonstand
lensstudio
libreoffice
lilypond
linux
lithium
logtalk
lua
lyx
macos
magento
magento1
magento2
matlab
maven
mercurial
mercury
metals
metaprogrammingsystem
meteor
microsoftoffice
modelsim
momentics
monodevelop
nanoc
nasaspecsintact
netbeans
nikola
nim
ninja
nix
node
notepadpp
nwjs
objective-c
ocaml
octave
opa
opencart
openssl
oracleforms
otto
packer
patch
perl
phalcon
phoenix
pimcore
playframework
plone
prestashop
processing
psoccreator
puppet
purescript
putty
python
qooxdoo
qt
r
racket
rails
raku
red
redcar
redis
rhodesrhomobile
ros
ros2
ruby
rust
sam
sass
sbt
scala
scheme
scons
scrivener
sdcc
seamgen
sketchup
slickedit
smalltalk
snap
spfx
splunk
stata
stella
strapi
sublimetext
sugarcrm
svn
swift
symfony
symphonycms
syncthing
synopsysvcs
tags
terraform
tex
textmate
textpattern
thinkphp
toit
tortoisegit
turbogears2
twincat3
typo3
umbraco
unity
unrealengine
uvision
v
vagrant
vim
virtualenv
virtuoso
visualstudio
visualstudiocode
vue
vvvv
waf
webmethods
windows
wordpress
xcode
xilinx
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:omata/joe.git
cd joe/
go run *.go

TODO

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

  • new structure
    • reading
    • writing
    • updating