charmkit 0.5.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -0
  3. data/README.md +46 -94
  4. data/charmkit.gemspec +3 -3
  5. data/examples/Charmkitfile +66 -0
  6. data/examples/basic.rb +6 -0
  7. data/examples/demo/Gemfile +10 -0
  8. data/examples/demo/Gemfile.lock +64 -0
  9. data/examples/demo/README.md +27 -0
  10. data/examples/demo/Rakefile +9 -0
  11. data/examples/demo/config.yaml +2 -0
  12. data/examples/demo/hooks/config-changed +3 -0
  13. data/examples/{my-demo-charm → demo}/hooks/install +3 -5
  14. data/examples/demo/hooks/leader-elected +3 -0
  15. data/examples/demo/hooks/leader-settings-changed +3 -0
  16. data/examples/demo/hooks/start +3 -0
  17. data/examples/demo/hooks/stop +3 -0
  18. data/examples/demo/hooks/update-status +3 -0
  19. data/examples/demo/hooks/upgrade-charm +3 -0
  20. data/examples/demo/metadata.yaml +9 -0
  21. data/examples/load-charmkit-file.rb +2 -0
  22. data/examples/plugin_loader.rb +9 -0
  23. data/examples/template.rb +6 -0
  24. data/examples/templates/user_auth.txt +1 -0
  25. data/exe/charmkit +5 -0
  26. data/lib/charmkit.rb +6 -7
  27. data/lib/charmkit/cli.rb +124 -0
  28. data/lib/charmkit/dependencies.rb +26 -0
  29. data/lib/charmkit/helpers.rb +5 -0
  30. data/lib/charmkit/helpers/crypt.rb +8 -6
  31. data/lib/charmkit/helpers/fs.rb +0 -15
  32. data/lib/charmkit/helpers/hookenv.rb +10 -0
  33. data/lib/charmkit/helpers/runner.rb +2 -1
  34. data/lib/charmkit/helpers/template.rb +1 -0
  35. data/lib/charmkit/hook.rb +47 -0
  36. data/lib/charmkit/scroll.rb +15 -0
  37. metadata +48 -29
  38. data/examples/my-demo-charm/Gemfile +0 -5
  39. data/examples/my-demo-charm/Gemfile.lock +0 -15
  40. data/examples/my-demo-charm/README.md +0 -45
  41. data/examples/my-demo-charm/Rakefile +0 -63
  42. data/examples/my-demo-charm/config.yaml +0 -21
  43. data/examples/my-demo-charm/copyright +0 -21
  44. data/examples/my-demo-charm/hooks/config-changed +0 -3
  45. data/examples/my-demo-charm/hooks/upgrade-charm +0 -3
  46. data/examples/my-demo-charm/icon.svg +0 -322
  47. data/examples/my-demo-charm/metadata.yaml +0 -18
  48. data/examples/my-demo-charm/readme +0 -1
  49. data/examples/my-demo-charm/tasks/vim.rb +0 -8
  50. data/examples/my-demo-charm/templates/acl.auth.php +0 -10
  51. data/examples/my-demo-charm/templates/local.php +0 -15
  52. data/examples/my-demo-charm/templates/plugins.local.php +0 -12
  53. data/examples/my-demo-charm/templates/users.auth.php +0 -11
  54. data/examples/my-demo-charm/templates/vhost.conf +0 -42
  55. data/examples/render_inline.rb +0 -59
  56. data/lib/charmkit/extend/string_tools.rb +0 -14
  57. data/lib/charmkit/plugins/nginx.rb +0 -8
  58. data/lib/charmkit/plugins/php.rb +0 -19
  59. data/lib/charmkit/version.rb +0 -14
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
- source "https://rubygems.org"
3
-
4
- gem "rake"
5
- gem "charmkit", "~> 0.4.0"
@@ -1,15 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- charmkit (0.4.1)
5
- rake (11.3.0)
6
-
7
- PLATFORMS
8
- ruby
9
-
10
- DEPENDENCIES
11
- charmkit (~> 0.4.0)
12
- rake
13
-
14
- BUNDLED WITH
15
- 1.13.6
@@ -1,45 +0,0 @@
1
- # Overview
2
-
3
- DokuWiki is a simple to use and highly versatile Open Source wiki software that
4
- doesn't require a database. It is loved by users for its clean and readable
5
- syntax. The ease of maintenance, backup and integration makes it an
6
- administrator's favorite. Built in access controls and authentication connectors
7
- make DokuWiki especially useful in the enterprise context and the large number
8
- of plugins contributed by its vibrant community allow for a broad range of use
9
- cases beyond a traditional wiki.
10
-
11
- # Usage
12
-
13
- $ juju deploy cs:~adam-stokes/dokuwiki
14
-
15
- ## Login
16
-
17
- Initial login and password are
18
-
19
- username: admin
20
- password: password
21
-
22
- # Developing
23
-
24
- ## Setting up
25
-
26
- As long as you have ruby and bundler installed you can do the following:
27
-
28
- ```
29
- bundle install
30
- bundle exec rake -T
31
- ```
32
-
33
- All tasks are kept in **Rakefile** and are called via **hooks/{hook-name}**.
34
-
35
- # Author
36
-
37
- Adam Stokes <adam.stokes@ubuntu.com>
38
-
39
- # Copyright
40
-
41
- 2016 Adam Stokes
42
-
43
- # License
44
-
45
- MIT
@@ -1,63 +0,0 @@
1
- # The below requires will pull in charmkit and its nginx and php plugins
2
- # which are provided with the library.
3
- require 'charmkit'
4
- require 'charmkit/plugins/nginx'
5
- require 'charmkit/plugins/php'
6
-
7
- # The below require_relative will load a local task from tasks/vim.rb
8
- require_relative "tasks/vim.rb"
9
-
10
-
11
-
12
- app_path = path(config('app_path'))
13
-
14
- namespace :dokuwiki do
15
-
16
- desc "Install Dokuwiki"
17
- # Notice that I set task dependencies on nginx, php, AND vim
18
- # so that they get installed prior to installing dokuwiki
19
- task :install => ["nginx:install", "php:install", "vim:install"] do
20
- resource_path = `resource-get stable-release`.chomp
21
-
22
- mkdir_p app_path unless app_path.directory?
23
-
24
- run "tar", "xf", resource_path, "-C", app_path, "--strip-components=1"
25
-
26
- cp "#{hook_path}/templates/acl.auth.php", "#{app_path}/conf/acl.auth.php"
27
- cp "#{hook_path}/templates/local.php", "#{app_path}/conf/local.php"
28
- cp "#{hook_path}/templates/plugins.local.php", "#{app_path}/conf/plugin.local.php"
29
-
30
- version = File.read "#{app_path}/VERSION"
31
- run "application-version-set", version.chomp
32
- run "status-set", "active", "Dokuwiki Install finished."
33
- end
34
-
35
- desc "Configure Dokuwiki"
36
- task :config_changed do
37
-
38
- admin_user = `config-get admin_user`.chomp
39
- admin_password = `config-get admin_password`.chomp
40
- admin_name = `config-get admin_name`.chomp
41
- admin_email = `config-get admin_email`.chomp
42
- template "#{hook_path}/templates/users.auth.php",
43
- "#{app_path}/conf/users.auth.php",
44
- admin_user: admin_user,
45
- admin_password: admin_password,
46
- admin_name: admin_name,
47
- admin_email: admin_email
48
-
49
- public_address = `unit-get public-address`.chomp
50
- template "#{hook_path}/templates/vhost.conf",
51
- "/etc/nginx/sites-enabled/default",
52
- public_address: public_address,
53
- app_path: app_path
54
-
55
- chown_R 'www-data', 'www-data', app_path
56
-
57
- `systemctl restart php7.0-fpm`
58
- `systemctl restart nginx`
59
- `status-set active "Ready"`
60
- end
61
- end
62
-
63
- task :default => 'dokuwiki:install'
@@ -1,21 +0,0 @@
1
- options:
2
- app_path:
3
- type: string
4
- default: "/srv/app"
5
- description: "Where Dokuwiki will be installed"
6
- admin_user:
7
- type: string
8
- default: admin
9
- description: "Admin username (default: admin)"
10
- admin_password:
11
- type: string
12
- default: "5f4dcc3b5aa765d61d8327deb882cf99"
13
- description: "Admin password md5 hash format (default password: password)"
14
- admin_name:
15
- type: string
16
- default: "The Admin"
17
- description: Admin name
18
- admin_email:
19
- type: string
20
- default: "admin@example.com"
21
- description: Admin email
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2016 Adam Stokes <adam.stokes@ubuntu.com>
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- bundle exec rake dokuwiki:config_changed
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- ./hooks/install
@@ -1,322 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
-
4
- <svg
5
- xmlns:dc="http://purl.org/dc/elements/1.1/"
6
- xmlns:cc="http://creativecommons.org/ns#"
7
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
- xmlns:svg="http://www.w3.org/2000/svg"
9
- xmlns="http://www.w3.org/2000/svg"
10
- xmlns:xlink="http://www.w3.org/1999/xlink"
11
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
- width="96"
14
- height="96"
15
- id="svg6517"
16
- version="1.1"
17
- inkscape:version="0.91 r13725"
18
- sodipodi:docname="icon.svg">
19
- <defs
20
- id="defs6519">
21
- <linearGradient
22
- id="Background">
23
- <stop
24
- id="stop4178"
25
- offset="0"
26
- style="stop-color:#b8b8b8;stop-opacity:1" />
27
- <stop
28
- id="stop4180"
29
- offset="1"
30
- style="stop-color:#c9c9c9;stop-opacity:1" />
31
- </linearGradient>
32
- <filter
33
- style="color-interpolation-filters:sRGB;"
34
- inkscape:label="Inner Shadow"
35
- id="filter1121">
36
- <feFlood
37
- flood-opacity="0.59999999999999998"
38
- flood-color="rgb(0,0,0)"
39
- result="flood"
40
- id="feFlood1123" />
41
- <feComposite
42
- in="flood"
43
- in2="SourceGraphic"
44
- operator="out"
45
- result="composite1"
46
- id="feComposite1125" />
47
- <feGaussianBlur
48
- in="composite1"
49
- stdDeviation="1"
50
- result="blur"
51
- id="feGaussianBlur1127" />
52
- <feOffset
53
- dx="0"
54
- dy="2"
55
- result="offset"
56
- id="feOffset1129" />
57
- <feComposite
58
- in="offset"
59
- in2="SourceGraphic"
60
- operator="atop"
61
- result="composite2"
62
- id="feComposite1131" />
63
- </filter>
64
- <filter
65
- style="color-interpolation-filters:sRGB;"
66
- inkscape:label="Drop Shadow"
67
- id="filter950">
68
- <feFlood
69
- flood-opacity="0.25"
70
- flood-color="rgb(0,0,0)"
71
- result="flood"
72
- id="feFlood952" />
73
- <feComposite
74
- in="flood"
75
- in2="SourceGraphic"
76
- operator="in"
77
- result="composite1"
78
- id="feComposite954" />
79
- <feGaussianBlur
80
- in="composite1"
81
- stdDeviation="1"
82
- result="blur"
83
- id="feGaussianBlur956" />
84
- <feOffset
85
- dx="0"
86
- dy="1"
87
- result="offset"
88
- id="feOffset958" />
89
- <feComposite
90
- in="SourceGraphic"
91
- in2="offset"
92
- operator="over"
93
- result="composite2"
94
- id="feComposite960" />
95
- </filter>
96
- <clipPath
97
- clipPathUnits="userSpaceOnUse"
98
- id="clipPath873">
99
- <g
100
- transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
101
- id="g875"
102
- inkscape:label="Layer 1"
103
- style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
104
- <path
105
- style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
106
- d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
107
- id="path877"
108
- inkscape:connector-curvature="0"
109
- sodipodi:nodetypes="sssssssss" />
110
- </g>
111
- </clipPath>
112
- <filter
113
- inkscape:collect="always"
114
- id="filter891"
115
- inkscape:label="Badge Shadow">
116
- <feGaussianBlur
117
- inkscape:collect="always"
118
- stdDeviation="0.71999962"
119
- id="feGaussianBlur893" />
120
- </filter>
121
- </defs>
122
- <sodipodi:namedview
123
- id="base"
124
- pagecolor="#ffffff"
125
- bordercolor="#666666"
126
- borderopacity="1.0"
127
- inkscape:pageopacity="0.0"
128
- inkscape:pageshadow="2"
129
- inkscape:zoom="1"
130
- inkscape:cx="39.339828"
131
- inkscape:cy="216.87971"
132
- inkscape:document-units="px"
133
- inkscape:current-layer="layer1"
134
- showgrid="false"
135
- fit-margin-top="0"
136
- fit-margin-left="0"
137
- fit-margin-right="0"
138
- fit-margin-bottom="0"
139
- inkscape:window-width="1920"
140
- inkscape:window-height="1043"
141
- inkscape:window-x="1914"
142
- inkscape:window-y="0"
143
- inkscape:window-maximized="1"
144
- showborder="true"
145
- showguides="false"
146
- inkscape:guide-bbox="true"
147
- inkscape:showpageshadow="false"
148
- inkscape:snap-bbox="true">
149
- <inkscape:grid
150
- type="xygrid"
151
- id="grid821"
152
- empspacing="5"
153
- visible="true"
154
- enabled="true"
155
- snapvisiblegridlinesonly="true" />
156
- <sodipodi:guide
157
- orientation="1,0"
158
- position="16,48"
159
- id="guide823" />
160
- <sodipodi:guide
161
- orientation="0,1"
162
- position="64,80"
163
- id="guide825" />
164
- <sodipodi:guide
165
- orientation="1,0"
166
- position="80,40"
167
- id="guide827" />
168
- <sodipodi:guide
169
- orientation="0,1"
170
- position="64,16"
171
- id="guide829" />
172
- </sodipodi:namedview>
173
- <metadata
174
- id="metadata6522">
175
- <rdf:RDF>
176
- <cc:Work
177
- rdf:about="">
178
- <dc:format>image/svg+xml</dc:format>
179
- <dc:type
180
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
181
- <dc:title />
182
- </cc:Work>
183
- </rdf:RDF>
184
- </metadata>
185
- <g
186
- inkscape:label="BACKGROUND"
187
- inkscape:groupmode="layer"
188
- id="layer1"
189
- transform="translate(268,-635.29076)"
190
- style="display:inline">
191
- <path
192
- style="fill:#262a2d;fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
193
- d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
194
- id="path6455"
195
- inkscape:connector-curvature="0"
196
- sodipodi:nodetypes="sssssssss" />
197
- <g
198
- style="opacity:0.7"
199
- id="g11"
200
- transform="matrix(0.62044056,0,0,0.62044056,-314.18126,593.62097)">
201
- <rect
202
- style="fill:#dcf0f0"
203
- x="112.197"
204
- y="168.302"
205
- width="31.702999"
206
- height="15.852"
207
- id="rect13" />
208
- <rect
209
- style="fill:#dcf0f0"
210
- x="159.75"
211
- y="168.302"
212
- width="31.683001"
213
- height="15.852"
214
- id="rect15" />
215
- <rect
216
- style="fill:#dcf0f0"
217
- x="112.173"
218
- y="136.599"
219
- width="79.269997"
220
- height="15.852"
221
- id="rect17" />
222
- <rect
223
- style="fill:#dcf0f0"
224
- x="112.197"
225
- y="104.898"
226
- width="47.558998"
227
- height="15.851"
228
- id="rect19" />
229
- <rect
230
- style="fill:#dcf0f0"
231
- x="175.60201"
232
- y="104.898"
233
- width="15.851"
234
- height="15.851"
235
- id="rect21" />
236
- </g>
237
- <image
238
- width="70"
239
- height="70"
240
- preserveAspectRatio="none"
241
- xlink:href="data:image/png;base64,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 "
242
- id="image3437"
243
- x="-254"
244
- y="648.29077" />
245
- </g>
246
- <g
247
- inkscape:groupmode="layer"
248
- id="layer3"
249
- inkscape:label="PLACE YOUR PICTOGRAM HERE"
250
- style="display:inline" />
251
- <g
252
- inkscape:groupmode="layer"
253
- id="layer2"
254
- inkscape:label="BADGE"
255
- style="display:none"
256
- sodipodi:insensitive="true">
257
- <g
258
- style="display:inline"
259
- transform="translate(-340.00001,-581)"
260
- id="g4394"
261
- clip-path="none">
262
- <g
263
- id="g855">
264
- <g
265
- inkscape:groupmode="maskhelper"
266
- id="g870"
267
- clip-path="url(#clipPath873)"
268
- style="opacity:0.6;filter:url(#filter891)">
269
- <path
270
- transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
271
- d="m 264,552.36218 a 12,12 0 0 1 -12,12 12,12 0 0 1 -12,-12 12,12 0 0 1 12,-12 12,12 0 0 1 12,12 z"
272
- sodipodi:ry="12"
273
- sodipodi:rx="12"
274
- sodipodi:cy="552.36218"
275
- sodipodi:cx="252"
276
- id="path844"
277
- style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
278
- sodipodi:type="arc" />
279
- </g>
280
- <g
281
- id="g862">
282
- <path
283
- sodipodi:type="arc"
284
- style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
285
- id="path4398"
286
- sodipodi:cx="252"
287
- sodipodi:cy="552.36218"
288
- sodipodi:rx="12"
289
- sodipodi:ry="12"
290
- d="m 264,552.36218 a 12,12 0 0 1 -12,12 12,12 0 0 1 -12,-12 12,12 0 0 1 12,-12 12,12 0 0 1 12,12 z"
291
- transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
292
- <path
293
- transform="matrix(1.25,0,0,1.25,33,-100.45273)"
294
- d="m 264,552.36218 a 12,12 0 0 1 -12,12 12,12 0 0 1 -12,-12 12,12 0 0 1 12,-12 12,12 0 0 1 12,12 z"
295
- sodipodi:ry="12"
296
- sodipodi:rx="12"
297
- sodipodi:cy="552.36218"
298
- sodipodi:cx="252"
299
- id="path4400"
300
- style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
301
- sodipodi:type="arc" />
302
- <path
303
- sodipodi:type="star"
304
- style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
305
- id="path4459"
306
- sodipodi:sides="5"
307
- sodipodi:cx="666.19574"
308
- sodipodi:cy="589.50385"
309
- sodipodi:r1="7.2431178"
310
- sodipodi:r2="4.3458705"
311
- sodipodi:arg1="1.0471976"
312
- sodipodi:arg2="1.6755161"
313
- inkscape:flatsided="false"
314
- inkscape:rounded="0.1"
315
- inkscape:randomized="0"
316
- d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
317
- transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
318
- </g>
319
- </g>
320
- </g>
321
- </g>
322
- </svg>