Table of Contents
yaml-path
reads given yaml on stdin and output a sort of 'path' corresponding to given line
and
column
in the file.
Generated path is compilant with BOSH ops-file
syntax.
Working with BOSH often require to writes so-called ops-file
which
are kind of patches for yaml files. Writing the path of the object to modify is a real burden in large
yaml files.
This tool is meant to be easily integrated in editor such as emacs.
usage: yaml-path [<flags>]
Flags:
-h, --help Show context-sensitive help (also try --help-long and --help-man).
--line=0 Cursor line
--col=0 Cursor column
--sep="/" Set path separator
--name="name" Set attribut name, empty to disable
--path="" Set filepath, empty means stdin
--version Show application version.
Given the following yaml file:
top:
first:
- name: myname
attr1: val1
attr2: val2
# ^
- value2
- value3
second:
child1: value1
child1: value2
child3: value3
cat test.yaml | ./yaml-path --line 5 --col 14
Outputs:
/top/first/name=myname/attr2
Get a local copy of this repo :
git clone https://github.com/psycofdj/yaml-path.git
Install emacs yaml-path
package:
cd emacs && make install
Provided functions:
yaml-path-at-point
: (interactive) display in minibuffer and store to kill ring yaml path for token under cursoryaml-path-get-path-at-point(&optional line col)
: return yaml path for token in current buffer at given line and columnyaml-path-which-func
: integratesyaml-path-get-path-at-point
with which-function-mode
Demo:
Install vim script (see the README):
cat ./plugin/yaml-path.vim >> ~/.vimrc
Demo:
- Go to preference -> tools -> external tools
- Add a new one with this configuration
The current implementation relies on a very savage hack of golang yaml library vendored in this project.