Merge commit 'b1aadf6780bdd5d14a25d72da0df6450ede60b6a' as 'vim/bundle/hashicorp-tools'

main
Buddy Sandidge 6 years ago
commit 76a05fe6e4

@ -0,0 +1,11 @@
root = true
[*]
indent_style = space
indent_size = 2
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

@ -0,0 +1,45 @@
# Contributor Code of Conduct
As contributors and maintainers of this project, and in the interest of
fostering an open and welcoming community, we pledge to respect all people who
contribute through reporting issues, posting feature requests, updating
documentation, submitting pull requests or patches, and other activities.
We are committed to making participation in this project a harassment-free
experience for everyone, regardless of level of experience, gender, gender
identity and expression, sexual orientation, disability, personal appearance,
body size, race, ethnicity, age, religion, or nationality.
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery
- Personal attacks
- Trolling or insulting/derogatory comments
- Public or private harassment
- Publishing other's private information, such as physical or electronic
addresses, without explicit permission
- Other unethical or unprofessional conduct.
Project maintainers have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct. By adopting this Code of Conduct, project
maintainers commit themselves to fairly and consistently applying these
principles to every aspect of managing this project. Project maintainers who do
not follow or enforce the Code of Conduct may be permanently removed from the
project team.
This code of conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by opening an issue or contacting one or more of the project
maintainers.
This Code of Conduct is adapted from the [Contributor
Covenant](http://contributor-covenant.org), version 1.2.0, available at
<http://contributor-covenant.org/version/1/2/0/>

@ -0,0 +1,35 @@
# Contributing To My Vim Plugins
I'm not a Vim wizard by any means, nor am I too proud to accept
contributions that improve my code, so if you think you have a problem,
improvement, or other contribution towards the betterment of Vim-kind,
please file an issue or, where appropriate, a pull request.
Before filing an issue, please read this article by my friends and
former colleagues at Viget:
<https://viget.com/extend/tips-for-writing-better-bug-reports>
Keep in mind that I'm not paid to write Vim plugins, so I'm doing this
in my spare time, which means it might take me a while to respond. If
you're not satisfied with my response to your problem with my free (as
in beer and in speech) software, I will give you triple your $0.00 back.
When filing a pull request, please explain what you're changing and why.
Please limit your changes to the specific thing you're fixing; it's
probably easiest for both of us if you isolate your change in a topic
branch that I can merge without pulling in other stuff. Please do not
update CHANGELOG, versions, etc.; I'll take care of that. I'll also add
you to the Credits list with my thanks.
All of my Vim plugins use the ISC license. If you submit a pull request,
I'll assume you are OK with any code you add being placed under that
same ISC license. If this is not the case for any reason, please let me
know why you can't tolerate the ISC license. I am 99.99% likely to
reject your change in that case, but I'll let you have your say.
This project is intended to be a safe, welcoming space for collaboration, and
contributors are expected to adhere to the [Contributor
Covenant](http://contributor-covenant.org) code of conduct.
Thanks for contributing!

@ -0,0 +1,13 @@
Copyright (c) 2013-2015 Mark Cornick <mark@markcornick.com>
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED 'AS IS' AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.

@ -0,0 +1,48 @@
# Call For Maintainers
This plugin, along with others like it, is now maintained by the
[HashiVim](http://hashivim.github.io/) organization, which is looking for
additional maintainers and contributors. See the HashiVim home page for
further information.
# vim-hashicorp-tools
This plugin combines all of my Vim plugins supporting the various
[Hashicorp](https://hashicorp.com) tools into one plugin, for people who
are likely to use more than one or two of them and want a one-stop shop.
The individual plugins are:
- [vim-consul](https://github.com/hashivim/vim-consul)
- [vim-nomadproject](https://github.com/hashivim/vim-nomadproject)
- [vim-ottoproject](https://github.com/hashivim/vim-ottoproject)
- [vim-packer](https://github.com/hashivim/vim-packer)
- [vim-terraform](https://github.com/hashivim/vim-terraform)
- [vim-vagrant](https://github.com/hashivim/vim-vagrant)
- [vim-vaultproject](https://github.com/hashivim/vim-vaultproject)
Please see the individual repositories above for further information
on each one. This repository is created by brute-force combining the
others with the `assemble.sh` script, so please file any issues or pull
requests against the individual repos, not this one. Thanks.
## Installation
With [pathogen.vim](https://github.com/tpope/vim-pathogen) just do:
cd ~/.vim/bundle
git clone https://github.com/hashivim/vim-hashicorp-tools.git
If you prefer to use something besides pathogen, go ahead.
## Credits
See individual repositories for credits for the code contained within
them. The code to assemble them in this repo was written by Mark Cornick
<https://www.markcornick.com/>. Licensed under the ISC license.
Hashicorp is a trademark of Hashicorp. The capital of Djibouti is
Djibouti.
This project is intended to be a safe, welcoming space for collaboration, and
contributors are expected to adhere to the [Contributor
Covenant](http://contributor-covenant.org) code of conduct.

@ -0,0 +1,81 @@
if !exists('g:terraform_align')
let g:terraform_align = 0
endif
if !exists('g:terraform_remap_spacebar')
let g:terraform_remap_spacebar = 0
endif
if !exists('g:terraform_fold_sections')
let g:terraform_fold_sections = 0
endif
if g:terraform_align && exists(':Tabularize')
inoremap <buffer> <silent> = =<Esc>:call <SID>terraformalign()<CR>a
function! s:terraformalign()
let p = '^.*=[^>]*$'
if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g'))
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=\s*\zs.*'))
Tabularize/=/l1
normal! 0
call search(repeat('[^=]*=',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
endif
endfunction
endif
if g:terraform_fold_sections
function! TerraformFolds()
let thisline = getline(v:lnum)
if match(thisline, '^resource') >= 0
return ">1"
elseif match(thisline, '^provider') >= 0
return ">1"
elseif match(thisline, '^module') >= 0
return ">1"
elseif match(thisline, '^variable') >= 0
return ">1"
elseif match(thisline, '^output') >= 0
return ">1"
elseif match(thisline, '^data') >= 0
return ">1"
elseif match(thisline, '^terraform') >= 0
return ">1"
elseif match(thisline, '^locals') >= 0
return ">1"
else
return "="
endif
endfunction
setlocal foldmethod=expr
setlocal foldexpr=TerraformFolds()
setlocal foldlevel=1
function! TerraformFoldText()
let foldsize = (v:foldend-v:foldstart)
return getline(v:foldstart).' ('.foldsize.' lines)'
endfunction
setlocal foldtext=TerraformFoldText()
endif
" Re-map the space bar to fold and unfold
if get(g:, "terraform_remap_spacebar", 1)
"inoremap <space> <C-O>za
nnoremap <space> za
onoremap <space> <C-C>za
vnoremap <space> zf
endif
" Match the identation put in place by Hashicorp and :TerraformFmt, https://github.com/hashivim/vim-terraform/issues/21
if get(g:, "terraform_align", 1)
setlocal tabstop=2
setlocal softtabstop=2
setlocal shiftwidth=2
endif
" Set the commentstring
if exists('g:terraform_commentstring')
let &l:commentstring=g:terraform_commentstring
else
setlocal commentstring=#%s
endif

@ -0,0 +1,41 @@
#!/bin/sh
# WHAT: This script assembles the vim-hashicorp-tools plugin from git checkouts
# of the constituent plugins, which are assumed to exist in the same
# directory as vim-hashicorp-tools.
BLD=$(tput bold)
RST=$(tput sgr0)
for REPO in consul nomadproject ottoproject packer terraform vagrant vaultproject; do
# Clone all the repositories just incase we didn't have them
if [ ! -d "../vim-${REPO}" ]; then
echo "${BLD}INFO: Cloning vim-${REPO}${RST}"
git clone git@github.com:hashivim/vim-${REPO} ../vim-${REPO}
fi
# We only want to assemble off of master
if [ $(cd ../vim-${REPO} && git rev-parse --abbrev-ref HEAD) != "master" ]; then
echo "${BLD}WARN: Repository vim-${REPO} did not have the master branch checked out. To get that branchs changes back, run \`stash pop\`.${RST}"
git stash
git checkout master
git pull
fi
# Hashicorp tools ASSEMBLE!
echo "${BLD}INFO: Assembling ../vim-${REPO} into this repository.${RST}"
rsync --archive \
--exclude=.git \
--exclude=*.md \
--exclude=LICENSE \
--exclude=*.rb \
--exclude=*.sh \
--exclude=.travis.yml \
--exclude=Makefile \
--exclude=test/ \
--exclude=vader.vim/ \
--exclude=terraform-providers/ \
../vim-${REPO}/ .
done
echo "${BLD}INFO: Done!${RST}"
git status

@ -0,0 +1,14 @@
*consul.txt* basic vim/consul integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-consul
COMMANDS *consul*
This command is only available if consul is in your PATH.
*consul-:consul*
:Consul [args] Invoke an arbitrary consul command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,14 @@
*nomadproject.txt* basic vim/nomad integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-nomadproject
COMMANDS *nomadproject*
This command is only available if nomad is in your PATH.
*nomadproject-:nomad
:Nomad [args] Invoke an arbitrary nomad command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,14 @@
*ottoproject.txt* basic vim/otto integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-ottoproject
COMMANDS *ottoproject*
This command is only available if otto is in your PATH.
*ottoproject-:otto
:Otto [args] Invoke an arbitrary otto command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,14 @@
*packer.txt* basic vim/packer integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-packer
COMMANDS *packer*
This command is only available if packer is in your PATH.
*packer-:packer*
:Packer [args] Invoke an arbitrary packer command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,14 @@
*terraform.txt* basic vim/terraform integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-terraform
COMMANDS *terraform*
This command is only available if terraform is in your PATH.
*terraform-:terraform*
:Terraform [args] Invoke an arbitrary terraform command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,14 @@
*vagrant.txt* basic vim/vagrant integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-vagrant
COMMANDS *vagrant*
This command is only available if vagrant is in your PATH.
*vagrant-:Vagrant*
:Vagrant [args] Invoke an arbitrary vagrant command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,14 @@
*vaultproject.txt* basic vim/vault integration
Author: HashiVim <https://github.com/hashivim>
License: ISC license
Repo: https://github.com/hashivim/vim-vaultproject
COMMANDS *vaultproject*
This command is only available if vault is in your PATH.
*vaultproject-:vault
:Vault [args] Invoke an arbitrary vault command.
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,4 @@
au BufRead,BufNewFile *.tf setlocal filetype=terraform
au BufRead,BufNewFile *.tfvars setlocal filetype=terraform
au BufRead,BufNewFile *.tfstate setlocal filetype=json
au BufRead,BufNewFile *.tfstate.backup setlocal filetype=json

@ -0,0 +1 @@
au BufRead,BufNewFile Vagrantfile set filetype=ruby

@ -0,0 +1,69 @@
" terraform.vim - basic vim/terraform integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_terraform") || v:version < 700 || &cp || !executable('terraform')
finish
endif
let g:loaded_terraform = 1
if !exists("g:terraform_fmt_on_save")
let g:terraform_fmt_on_save = 0
endif
function! s:commands(A, L, P)
return join([
\ "apply",
\ "console",
\ "destroy",
\ "env",
\ "fmt",
\ "get",
\ "graph",
\ "import",
\ "init",
\ "output",
\ "plan",
\ "providers",
\ "push",
\ "refresh",
\ "show",
\ "taint",
\ "untaint",
\ "validate",
\ "version",
\ "workspace",
\ "debug",
\ "force-unlock",
\ "state"
\ ], "\n")
endfunction
" Adapted from vim-hclfmt:
" https://github.com/fatih/vim-hclfmt/blob/master/autoload/fmt.vim
function! terraform#fmt()
let l:curw = winsaveview()
let l:tmpfile = tempname()
call writefile(getline(1, "$"), l:tmpfile)
let output = system("terraform fmt -write " . l:tmpfile)
if v:shell_error == 0
try | silent undojoin | catch | endtry
call rename(l:tmpfile, resolve(expand("%")))
silent edit!
let &syntax = &syntax
else
echo output
call delete(l:tmpfile)
endif
call winrestview(l:curw)
endfunction
augroup terraform
autocmd!
autocmd BufEnter *
\ command! -nargs=+ -complete=custom,s:commands Terraform execute '!terraform '.<q-args>. ' -no-color'
autocmd BufEnter * command! -nargs=0 TerraformFmt call terraform#fmt()
if get(g:, "terraform_fmt_on_save", 1)
autocmd BufWritePre *.tf call terraform#fmt()
autocmd BufWritePre *.tfvars call terraform#fmt()
endif
augroup END

@ -0,0 +1,45 @@
" Only load this file if no other indent file was loaded
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal nolisp
setlocal autoindent sw=2 ts=2
setlocal indentexpr=TerraformIndent(v:lnum)
setlocal indentkeys+=<:>,0=},0=)
if exists("*TerraformIndent")
finish
endif
function! TerraformIndent(lnum)
" Beginning of the file should have no indent
if a:lnum == 0
return 0
endif
" Previous non-blank line should continue the indent level
let prevlnum = prevnonblank(a:lnum-1)
" Previous line without comments should continue the indent level
let prevline = substitute(getline(prevlnum), '//.*$', '', '')
let previndent = indent(prevlnum)
let thisindent = previndent
" Config block starting with [ { ( should increase the indent level
if prevline =~ '[\[{\(]\s*$'
let thisindent += &sw
endif
" Current line without comments should continue the indent level
let thisline = substitute(getline(a:lnum), '//.*$', '', '')
" Config block ending with ) } ] should get the indentation
" level from the initial config block
if thisline =~ '^\s*[\)}\]]'
let thisindent -= &sw
endif
return thisindent
endfunction

@ -0,0 +1,45 @@
" consul.vim - basic vim/consul integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_consul") || v:version < 700 || &cp || !executable('consul')
finish
endif
let g:loaded_consul = 1
function! s:commands(A, L, P)
return join([
\ "agent",
\ "catalog",
\ "connect",
\ "event",
\ "exec",
\ "force-leave",
\ "info",
\ "intention",
\ "join",
\ "keygen",
\ "keyring",
\ "kv",
\ "leave",
\ "lock",
\ "maint",
\ "members",
\ "monitor",
\ "operator",
\ "reload",
\ "rtt",
\ "services",
\ "snapshot",
\ "validate",
\ "version",
\ "watch"
\ ], "\n")
endfunction
augroup consul
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Consul execute '!consul '.<q-args>
augroup END
" vim:set et sw=2:

@ -0,0 +1,38 @@
" nomadproject.vim - basic vim/nomad integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_nomadproject") || v:version < 700 || &cp || !executable('nomad')
finish
endif
let g:loaded_nomadproject = 1
function! s:commands(A, L, P)
return join([
\ "run",
\ "stop",
\ "status",
\ "alloc",
\ "job",
\ "node",
\ "agent",
\ "acl",
\ "agent-info",
\ "deployment",
\ "eval",
\ "namespace",
\ "operator",
\ "quota",
\ "sentinel",
\ "server",
\ "ui",
\ "version"
\ ], "\n")
endfunction
augroup nomadproject
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Nomad execute '!nomad '.<q-args>
augroup END
" vim:set et sw=2:

@ -0,0 +1,27 @@
" ottoproject.vim - basic vim/otto integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_ottoproject") || v:version < 700 || &cp || !executable('otto')
finish
endif
let g:loaded_ottoproject = 1
function! s:commands(A, L, P)
return join([
\ "build",
\ "compile",
\ "deploy",
\ "dev",
\ "infra",
\ "status",
\ "version"
\ ], "\n")
endfunction
augroup ottoproject
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Otto execute '!otto '.<q-args>
augroup END
" vim:set et sw=2:

@ -0,0 +1,25 @@
" packer.vim - basic vim/packer integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_packer") || v:version < 700 || &cp || !executable('packer')
finish
endif
let g:loaded_packer = 1
function! s:commands(A, L, P)
return join([
\ "build",
\ "fix",
\ "inspect",
\ "validate",
\ "version"
\ ], "\n")
endfunction
augroup packer
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Packer execute '!packer '.<q-args>
augroup END
" vim:set et sw=2:

@ -0,0 +1,69 @@
" terraform.vim - basic vim/terraform integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_terraform") || v:version < 700 || &cp || !executable('terraform')
finish
endif
let g:loaded_terraform = 1
if !exists("g:terraform_fmt_on_save")
let g:terraform_fmt_on_save = 0
endif
function! s:commands(A, L, P)
return join([
\ "apply",
\ "console",
\ "destroy",
\ "env",
\ "fmt",
\ "get",
\ "graph",
\ "import",
\ "init",
\ "output",
\ "plan",
\ "providers",
\ "push",
\ "refresh",
\ "show",
\ "taint",
\ "untaint",
\ "validate",
\ "version",
\ "workspace",
\ "debug",
\ "force-unlock",
\ "state"
\ ], "\n")
endfunction
" Adapted from vim-hclfmt:
" https://github.com/fatih/vim-hclfmt/blob/master/autoload/fmt.vim
function! terraform#fmt()
let l:curw = winsaveview()
let l:tmpfile = tempname()
call writefile(getline(1, "$"), l:tmpfile)
let output = system("terraform fmt -write " . l:tmpfile)
if v:shell_error == 0
try | silent undojoin | catch | endtry
call rename(l:tmpfile, resolve(expand("%")))
silent edit!
let &syntax = &syntax
else
echo output
call delete(l:tmpfile)
endif
call winrestview(l:curw)
endfunction
augroup terraform
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Terraform execute '!terraform '.<q-args>. ' -no-color'
autocmd VimEnter * command! -nargs=0 TerraformFmt call terraform#fmt()
if get(g:, "terraform_fmt_on_save", 1)
autocmd BufWritePre *.tf call terraform#fmt()
autocmd BufWritePre *.tfvars call terraform#fmt()
endif
augroup END

@ -0,0 +1,57 @@
" vagrant.vim - basic vim/vagrant integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_vagrant") || v:version < 700 || &cp || !executable('vagrant')
finish
endif
let g:loaded_vagrant = 1
function! s:commands(A, L, P)
return join([
\ "box",
\ "cap",
\ "cloud",
\ "destroy",
\ "docker-exec",
\ "docker-logs",
\ "docker-run",
\ "global-status",
\ "halt",
\ "help",
\ "hostmanager",
\ "init",
\ "list-commands",
\ "login",
\ "package",
\ "plugin",
\ "port",
\ "powershell",
\ "provider",
\ "provision",
\ "push",
\ "rdp",
\ "reload",
\ "resume",
\ "rsync",
\ "rsync-auto",
\ "snapshot",
\ "ssh",
\ "ssh-config",
\ "status",
\ "suspend",
\ "up",
\ "upload",
\ "validate",
\ "version",
\ "winrm",
\ "winrm-config"
\ ], "\n")
endfunction
augroup vagrant
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Vagrant execute '!vagrant '.<q-args>
augroup END
" vim:set et sw=2:

@ -0,0 +1,41 @@
" vaultproject.vim - basic vim/vault integration
" Maintainer: HashiVim <https://github.com/hashivim>
if exists("g:loaded_vaultproject") || v:version < 700 || &cp || !executable('vault')
finish
endif
let g:loaded_vaultproject = 1
function! s:commands(A, L, P)
return join([
\ "read",
\ "write",
\ "delete",
\ "list",
\ "login",
\ "agent",
\ "server",
\ "status",
\ "unwrap",
\ "audit",
\ "auth",
\ "kv",
\ "lease",
\ "namespace",
\ "operator",
\ "path-help",
\ "plugin",
\ "policy",
\ "secrets",
\ "ssh",
\ "token"
\ ], "\n")
endfunction
augroup vaultproject
autocmd!
autocmd VimEnter *
\ command! -nargs=+ -complete=custom,s:commands Vault execute '!vault '.<q-args>
augroup END
" vim:set et sw=2:

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save