Convert Figma logo to code with AI

karan logojoe

:running: A .gitignore magician in your command line

2,877
210
2,877
34

Top Related Projects

Master the command line, in one page

A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php.

📖 A collection of pure bash alternatives to external processes.

50,319

📚 Collaborative cheatsheets for console commands

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.

Quick Overview

Joe is a simple and lightweight command-line tool for generating .gitignore files. It allows users to quickly create .gitignore files for their projects by specifying programming languages, IDEs, or operating systems. Joe simplifies the process of setting up version control for various development environments.

Pros

  • Easy to use with a simple command-line interface
  • Supports a wide range of programming languages and development tools
  • Regularly updated with new .gitignore templates
  • Lightweight and fast, with no external dependencies

Cons

  • Limited customization options for advanced users
  • Requires manual installation and updates
  • No graphical user interface for non-technical users
  • May not cover all possible project configurations

Code Examples

# Generate a .gitignore file for a Python project
joe py

# Generate a .gitignore file for a Node.js project using npm
joe node

# Generate a .gitignore file for multiple languages/tools
joe java,intellij,macos

Getting Started

  1. Install Joe using npm:

    npm install -g joe-gitignore
    
  2. Generate a .gitignore file for your project:

    joe <language or tool>
    
  3. Joe will create a .gitignore file in your current directory with the appropriate rules for the specified language or tool.

Competitor Comparisons

Master the command line, in one page

Pros of The Art of Command Line

  • Comprehensive guide covering a wide range of command-line topics
  • Well-organized with clear sections and subsections
  • Regularly updated with contributions from the community

Cons of The Art of Command Line

  • May be overwhelming for beginners due to its extensive content
  • Lacks interactive elements or exercises for hands-on learning

Code Comparison

The Art of Command Line:

# Find files with names that contain "foo":
find . -name '*foo*'

# Find files that have been modified in the last day:
find . -mtime -1

Joe:

# Example of a simple Python function in Joe
def greet(name):
    return f"Hello, {name}!"

print(greet("World"))

Summary

The Art of Command Line is a comprehensive resource for learning command-line skills, offering a wide range of topics and regular updates. However, it may be challenging for beginners and lacks interactive elements. Joe, on the other hand, is a project focused on Python programming examples, providing a different learning experience with more hands-on code snippets. The choice between the two depends on whether you're looking to improve command-line skills or learn Python programming.

A curated list of awesome command-line frameworks, toolkits, guides and gizmos. Inspired by awesome-php.

Pros of awesome-shell

  • More comprehensive collection of shell-related tools and resources
  • Regularly updated with new contributions from the community
  • Organized into clear categories for easier navigation

Cons of awesome-shell

  • Less focused on a specific use case or skill level
  • May be overwhelming for beginners due to the large number of options
  • Lacks detailed descriptions or usage examples for each tool

Code comparison

Not applicable, as both repositories are curated lists without significant code content.

Summary

awesome-shell is a more extensive collection of shell-related tools and resources, offering a wide range of options for users of all skill levels. It benefits from regular community updates and clear categorization. However, its breadth may be overwhelming for beginners, and it lacks detailed descriptions or usage examples.

joe, on the other hand, is a more focused collection of command-line tools and utilities. It may be more approachable for beginners or those looking for a curated selection of essential tools. However, it may not offer the same depth of resources as awesome-shell and may not be updated as frequently.

Both repositories serve as valuable resources for shell users, with awesome-shell catering to a broader audience and joe potentially being more suitable for those seeking a concise list of recommended tools.

📖 A collection of pure bash alternatives to external processes.

Pros of pure-bash-bible

  • Focuses specifically on Bash scripting techniques and best practices
  • Provides in-depth explanations and examples for various Bash operations
  • Regularly updated with new content and improvements

Cons of pure-bash-bible

  • Limited to Bash scripting, not covering other programming languages or tools
  • May be overwhelming for beginners due to its comprehensive nature
  • Lacks a structured learning path or curriculum

Code Comparison

pure-bash-bible example (String manipulation):

# Trim leading and trailing whitespace from a string
trim() {
    : "${1#"${1%%[![:space:]]*}"}"
    : "${_%"${_##*[![:space:]]}"}"
    printf '%s\n' "$_"
}

joe example (Python implementation):

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

Summary

pure-bash-bible is a comprehensive resource for Bash scripting, offering detailed explanations and examples. It's ideal for those looking to master Bash but may be too focused for general programming needs. joe, on the other hand, provides a broader range of programming concepts and algorithms across multiple languages, making it more suitable for general-purpose learning and interview preparation.

50,319

📚 Collaborative cheatsheets for console commands

Pros of tldr

  • Larger community with more contributors and users
  • More comprehensive coverage of commands across various operating systems
  • Regularly updated with new commands and improvements

Cons of tldr

  • May be overwhelming for beginners due to the large number of commands
  • Less focus on customization and personal command collections

Code comparison

tldr:

# ls

List directory contents.

- List files one per line:
  ls -1

- List all files, including hidden files:
  ls -a

- List all files, with trailing / added to directory names:
  ls -F

joe:

# List all files in the current directory
ls -la

# Show hidden files
ls -a

# List files with details
ls -l

Summary

tldr is a community-driven project aimed at simplifying man pages with practical examples. It offers a wide range of commands for multiple operating systems and is regularly updated. Joe, on the other hand, is a smaller project focused on providing a personal collection of commands and shortcuts.

tldr's strength lies in its comprehensive coverage and active community, making it an excellent resource for both beginners and experienced users. However, its vast collection might be overwhelming for some users.

Joe offers a more curated and personalized approach, which can be beneficial for users looking for a smaller set of commonly used commands. It may be easier for beginners to navigate but lacks the extensive coverage and regular updates of tldr.

Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

Pros of system-design-primer

  • Comprehensive coverage of system design concepts and principles
  • Includes diagrams, real-world examples, and interview preparation materials
  • Regularly updated with contributions from the community

Cons of system-design-primer

  • More complex and time-consuming to navigate due to its extensive content
  • Primarily focused on theoretical concepts rather than practical implementation
  • May be overwhelming for beginners or those seeking quick reference

Code comparison

While joe is a command-line tool written in Go, system-design-primer doesn't contain specific code implementations. Instead, it provides pseudocode and high-level explanations. Here's a brief comparison:

joe (Go):

func main() {
    app := cli.NewApp()
    app.Name = "joe"
    app.Usage = "Generate .gitignore files"
    app.Version = "0.1.0"
    // ...
}

system-design-primer (Pseudocode):

class Cache:
    def __init__(self, max_size):
        self.max_size = max_size
        self.size = 0
        self.lookup = {}
        self.linked_list = LinkedList()

    def get(self, key):
        # ...

The code comparison highlights the different focus of each repository: joe provides a practical tool, while system-design-primer offers conceptual explanations and examples.

A collection of inspiring lists, manuals, cheatsheets, blogs, hacks, one-liners, cli/web tools and more.

Pros of the-book-of-secret-knowledge

  • Comprehensive collection of various IT-related resources and tools
  • Regularly updated with new content and contributions from the community
  • Well-organized structure with clear categories for easy navigation

Cons of the-book-of-secret-knowledge

  • May be overwhelming for beginners due to the vast amount of information
  • Lacks specific code examples or implementations
  • Some links may become outdated over time

Code Comparison

As the-book-of-secret-knowledge is primarily a curated list of resources and joe is a .gitignore file generator, a direct code comparison is not applicable. However, here's a brief example of how they differ in content:

the-book-of-secret-knowledge (example entry):

- [explainshell.com](https://explainshell.com/) - Write down a command-line to see the help text that matches each argument.

joe (example usage):

$ joe python
    # Creates a .gitignore file for Python projects

Summary

the-book-of-secret-knowledge is a comprehensive resource for IT professionals, offering a wide range of tools and knowledge across various domains. Joe, on the other hand, is a focused tool for generating .gitignore files for different programming languages and frameworks. While the-book-of-secret-knowledge provides breadth, joe offers specific functionality for a common development task.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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

$ git clone git@github.com:karan/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

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`

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