Merge lp:~mvo/snappy-hub/snappy-examples-config-bash into lp:~snappy-dev/snappy-hub/snappy-examples

Proposed by Michael Vogt
Status: Merged
Merged at revision: 32
Proposed branch: lp:~mvo/snappy-hub/snappy-examples-config-bash
Merge into: lp:~snappy-dev/snappy-hub/snappy-examples
Prerequisite: lp:~mvo/snappy-hub/snappy-examples-config-example
Diff against target: 638 lines (+605/-0)
6 files modified
config-example-bash/bin/hello (+24/-0)
config-example-bash/meta/hello.svg (+501/-0)
config-example-bash/meta/hooks/config (+24/-0)
config-example-bash/meta/hooks/snappy-yaml-helper (+40/-0)
config-example-bash/meta/package.yaml (+7/-0)
config-example-bash/meta/readme.md (+9/-0)
To merge this branch: bzr merge lp:~mvo/snappy-hub/snappy-examples-config-bash
Reviewer Review Type Date Requested Status
Snappy Developers Pending
Review via email: mp+249978@code.launchpad.net

Description of the change

This branch adds a config example for bash.

To post a comment you must log in.
25. By Michael Vogt

fix invocation with empty input and no message

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added directory 'config-example-bash'
=== added directory 'config-example-bash/bin'
=== added file 'config-example-bash/bin/hello'
--- config-example-bash/bin/hello 1970-01-01 00:00:00 +0000
+++ config-example-bash/bin/hello 2015-02-24 13:06:59 +0000
@@ -0,0 +1,24 @@
1#!/bin/sh
2
3if [ -e ${SNAP_APP_DATA_PATH}/message ]; then
4 cat ${SNAP_APP_DATA_PATH}/message
5else
6 cat <<EOF2
7Hello from the bash config example!
8
9You can configure this message by running:
10
11$ cat > cfg.yaml <<'EOF'
12config:
13 config-example-bash:
14 msg: |
15 Yay!
16EOF
17$ sudo snappy config config-example-bash cfg.yaml
18
19
20The message you set there is then displayed when running:
21$ hello.config-example-bash
22
23EOF2
24fi
025
=== added directory 'config-example-bash/meta'
=== added file 'config-example-bash/meta/hello.svg'
--- config-example-bash/meta/hello.svg 1970-01-01 00:00:00 +0000
+++ config-example-bash/meta/hello.svg 2015-02-24 13:06:59 +0000
@@ -0,0 +1,501 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3 "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4<svg width="256" height="256">
5 <image id="image0" width="256" height="256" x="0" y="0"
6 xlink:href="data:image/png;base64,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" />
501</svg>
0502
=== added directory 'config-example-bash/meta/hooks'
=== added file 'config-example-bash/meta/hooks/config'
--- config-example-bash/meta/hooks/config 1970-01-01 00:00:00 +0000
+++ config-example-bash/meta/hooks/config 2015-02-24 13:06:59 +0000
@@ -0,0 +1,24 @@
1#!/bin/sh
2
3set -e
4
5HELPER=$(dirname $0)/snappy-yaml-helper
6
7# read stdin with the "ypath" helper (if there is any input)
8CFG="$($HELPER /config/${SNAP_NAME}/msg 2>/dev/null || true)"
9if [ -n "$CFG" ]; then
10 printf "$CFG" > ${SNAP_APP_DATA_PATH}/message
11fi
12
13# read existing message
14if [ -e "${SNAP_APP_DATA_PATH}/message" ]; then
15 msg=$(cat ${SNAP_APP_DATA_PATH}/message)
16fi
17
18# output current ocnfig
19cat <<EOF
20config:
21 ${SNAP_NAME}:
22 msg: |
23 $msg
24EOF
025
=== added file 'config-example-bash/meta/hooks/snappy-yaml-helper'
--- config-example-bash/meta/hooks/snappy-yaml-helper 1970-01-01 00:00:00 +0000
+++ config-example-bash/meta/hooks/snappy-yaml-helper 2015-02-24 13:06:59 +0000
@@ -0,0 +1,40 @@
1#!/usr/bin/python3
2
3import sys
4import yaml
5
6
7class ParseError(Exception):
8 pass
9
10
11# maybe that name is a bit too grande ;)
12def parse_ypath(data, expr):
13 if not expr.startswith("/"):
14 raise ParseError("Only support absolute paths, got {}".format(expr))
15 path = expr[1:].split("/")
16 sub = data
17 for elm in path:
18 sub = sub[elm]
19 return sub
20
21
22if __name__ == "__main__":
23 if len(sys.argv) < 2:
24 print("""Needs a path like /config/pkgname/key
25
26Example usage:
27$ printf "config:\\n example:\\n msg: foo "| {} /config/example/msg
28 """.format(sys.argv[0]))
29 sys.exit(1)
30
31 # read stdin
32 input = sys.stdin.read()
33 data = yaml.safe_load(input)
34
35 # parse
36 term = sys.argv[1]
37 out = parse_ypath(data, term)
38
39 # and write it out
40 print(out)
041
=== added file 'config-example-bash/meta/package.yaml'
--- config-example-bash/meta/package.yaml 1970-01-01 00:00:00 +0000
+++ config-example-bash/meta/package.yaml 2015-02-24 13:06:59 +0000
@@ -0,0 +1,7 @@
1name: config-example-bash
2version: 1.0
3vendor: Michael Vogt <mvo@ubuntu.com>
4icon: meta/hello.svg
5binaries:
6 - name: bin/hello
7
08
=== added file 'config-example-bash/meta/readme.md'
--- config-example-bash/meta/readme.md 1970-01-01 00:00:00 +0000
+++ config-example-bash/meta/readme.md 2015-02-24 13:06:59 +0000
@@ -0,0 +1,9 @@
1Configuration example
2
3This is a simple example to how how to write a configure hook with bash.
4
5Run:
6
7 hello.config-example-bash
8
9for usage instructions.

Subscribers

People subscribed via source and target branches