# Go vendor
/vendor
/github.com

# Binary files
/kamel
/kamel.*
/license-check
/**/platform-check

# Config files
/kamel-config.yaml
/.kamel/kamel-config.yaml

# Released Packages
*.tar.gz

# Release Notes
/release-notes.md

# Unuseful file
/resources/operator.yaml

# Bundle directory
/bundle

# Bundle Index directory
/index
index.Dockerfile

# IDEs
.idea
*.iml
.project
.metadata
.gopath

# Temporary Build Files
build/_output
build/_test
build/_maven_output
build/_maven_overlay
build/_kamelets
build/_maven_overlay/
build/maven/target/
build/maven
build/m2
/api_*

# envrc
.envrc

# eclipse / vscode
.settings
.classpath
.factorypath

# Created by https://www.gitignore.io/api/go,vim,emacs,visualstudiocode

### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# Org-mode
.org-id-locations
*_archive

# flymake-mode
*_flymake.*

# eshell files
/eshell/history
/eshell/lastdir

# elpa packages
/elpa/

# reftex files
*.rel

# AUCTeX auto folder
/auto/

# cask packages
.cask/
dist/

# Flycheck
flycheck_*.el

# server auth directory
/server/

# projectiles files
.projectile
projectile-bookmarks.eld

# directory configuration
.dir-locals.el

# saveplace
places

# url cache
url/cache/

# cedet
ede-projects.el

# smex
smex-items

# company-statistics
company-statistics-cache.el

# anaconda-mode
anaconda-mode/

### Go ###
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, build with 'go test -c'
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

### Vim ###
# swap
.sw[a-p]
.*.sw[a-p]
# session
Session.vim
# temporary
.netrwhist
# auto-generated tag files
tags

### VisualStudioCode ###
.vscode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

# Unix line endings for the Maven wrapper script
mvnw text eol=lf
.history

# End of https://www.gitignore.io/api/go,vim,emacs,visualstudiocode

### config kustomize ###
config/**/*.gen.tmpl
config/**/*.gen.yaml
config/**/*.gen.json

*-installer*

# Fabric8 CRDs
java/target