README now links to doco

This commit is contained in:
Mike Farah 2017-04-13 15:44:31 +10:00
parent fb73a793bd
commit 124c57f9d9

183
README.md
View File

@ -21,12 +21,15 @@ go get github.com/mikefarah/yaml
- Convert from yaml to json - Convert from yaml to json
- Pipe data in by using '-' - Pipe data in by using '-'
## Read examples ## [Usage](http://mikefarah.github.io/yaml/)
Check out the [documentation](http://mikefarah.github.io/yaml/) for more detailed and advanced usage.
### Read
``` ```
yaml r <yaml file> <path> yaml r <yaml file> <path>
``` ```
### Basic
Given a sample.yaml file of: Given a sample.yaml file of:
```yaml ```yaml
b: b:
@ -38,86 +41,10 @@ yaml r sample.yaml b.c
``` ```
will output the value of '2'. will output the value of '2'.
### Reading from STDIN
Given a sample.yaml file of:
```bash
cat sample.yaml | yaml r - b.c
```
will output the value of '2'.
### Splat ## Update
Given a sample.yaml file of:
```yaml
---
bob:
item1:
cats: bananas
item2:
cats: apples
```
then
```bash
yaml r sample.yaml bob.*.cats
```
will output
```yaml
- bananas
- apples
```
### Handling '.' in the yaml key
Given a sample.yaml file of:
```yaml
b.x:
c: 2
```
then
```bash
yaml r sample.yaml \"b.x\".c
```
will output the value of '2'.
### Arrays
You can give an index to access a specific element:
e.g.: given a sample file of
```yaml
b:
e:
- name: fred
value: 3
- name: sam
value: 4
```
then
```
yaml r sample.yaml b.e[1].name
```
will output 'sam'
### Array Splat
e.g.: given a sample file of
```yaml
b:
e:
- name: fred
value: 3
- name: sam
value: 4
```
then
```
yaml r sample.yaml b.e[*].name
```
will output:
```
- fred
- sam
```
## Update examples
Existing yaml files can be updated via the write command Existing yaml files can be updated via the write command
### Update to stdout
Given a sample.yaml file of: Given a sample.yaml file of:
```yaml ```yaml
b: b:
@ -133,76 +60,7 @@ b:
c: cat c: cat
``` ```
### Update from STDIN ## Create
```bash
cat sample.yaml | yaml w - b.c blah
```
### Adding new fields
Any missing fields in the path will be created on the fly.
Given a sample.yaml file of:
```yaml
b:
c: 2
```
then
```bash
yaml w sample.yaml b.d[0] "new thing"
```
will output:
```yaml
b:
c: cat
d:
- new thing
```
### Updating yaml in-place
Given a sample.yaml file of:
```yaml
b:
c: 2
```
then
```bash
yaml w -i sample.yaml b.c cat
```
will update the sample.yaml file so that the value of 'c' is cat.
### Updating multiple values with a script
Given a sample.yaml file of:
```yaml
b:
c: 2
e:
- name: Billy Bob
```
and a script update_instructions.yaml of:
```yaml
b.c: 3
b.e[0].name: Howdy Partner
```
then
```bash
yaml w -s update_instructions.yaml sample.yaml
```
will output:
```yaml
b:
c: 3
e:
- name: Howdy Partner
```
And, of course, you can pipe the instructions in using '-':
```bash
cat update_instructions.yaml | yaml w -s - sample.yaml
```
## New Examples
Yaml files can be created using the 'new' command. This works in the same way as the write command, but you don't pass in an existing Yaml file. Yaml files can be created using the 'new' command. This works in the same way as the write command, but you don't pass in an existing Yaml file.
### Creating a simple yaml file ### Creating a simple yaml file
@ -215,33 +73,6 @@ b:
c: cat c: cat
``` ```
### Creating using a create script
Create scripts follow the same format as the update scripts.
Given a script create_instructions.yaml of:
```yaml
b.c: 3
b.e[0].name: Howdy Partner
```
then
```bash
yaml n -s create_instructions.yaml
```
will output:
```yaml
b:
c: 3
e:
- name: Howdy Partner
```
You can also pipe the instructions in:
```bash
cat create_instructions.yaml | yaml n -s -
```
## Converting to and from json ## Converting to and from json
### Yaml2json ### Yaml2json