charmkit 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 203289a3aae8632c1d17184802978a559efba7c1
4
- data.tar.gz: 8d69c49efde5af1203d7414663abd5c8c2ae9a7e
3
+ metadata.gz: d00fbd867145c222acc4d9352a4969d0aa405257
4
+ data.tar.gz: 1e6a86849fe915d2b18ee28136d1eff6a9f27995
5
5
  SHA512:
6
- metadata.gz: 54d8fa719cafe769644e60412dbc8c046729f1e793dd436de91534464238b2350404ec1126987d1d7839721ba76b720dfa740de693e7a09d0df97830cc7637ef
7
- data.tar.gz: cc4ae72da3dc9f4e15e18341157c90e2c0a6b4d92fcb9c1b34ab4eda95e23e38bcc9712520ad7ff78f93244b96315db8d521524f4e5241b72a1919593a2d4afc
6
+ metadata.gz: e7d99c2a2dbba161818f949b1e739787e03a322018ff645255cf1a226189360d91f7df3fc403f2d4e3e7f54d3406f65d7c20e622ec9b013b1d59517cf3739c29
7
+ data.tar.gz: 5f13cbc2404d7789de62bee4d23c59fc966b5b0c9180e853c5c7e19da8a44c1c4062c6b890a78c2ea962be12ee8a72cc5dfe2faf4669a5e387bb914a516be417
data/README.md CHANGED
@@ -28,16 +28,15 @@ In **hooks/install**:
28
28
  #!/bin/sh
29
29
 
30
30
  apt-get update
31
- apt-get install -qyf ruby --no-install-recommends
32
- gem install bundler
31
+ apt-get install -qyf ruby bundler --no-install-recommends
33
32
 
34
33
  bundle install --local --quiet
35
34
 
36
- # Runs the lib/install.rb hook
37
35
  bundle exec rake dokuwiki:install
38
36
  ```
39
37
 
40
- In other hooks call *charmkit* with the execing hook (eg. **hooks/config-changed**)
38
+ In other hooks call the relevant rake tasks, for example, in
39
+ **hooks/config-changed**:
41
40
 
42
41
  ```
43
42
  #!/bin/sh
@@ -51,8 +50,6 @@ Same for **hooks/upgrade-charm**
51
50
  #!/bin/sh
52
51
 
53
52
  bundle exec rake dokuwiki:install
54
- bundle exec rake dokuwiki:config_changed
55
-
56
53
  ```
57
54
 
58
55
  ## Writing Charmkit style hooks
@@ -63,21 +60,13 @@ All Charmkit hooks will reside in a normal **Rakefile**.
63
60
 
64
61
  ```ruby
65
62
  require 'charmkit'
63
+ require 'charmkit/plugins/nginx'
64
+ require 'charmkit/plugins/php'
66
65
 
67
66
  namespace :dokuwiki do
68
67
 
69
- desc "Install required apt packages"
70
- task :install_deps do
71
- pkgs = [
72
- 'nginx-full', 'php-fpm', 'php-cgi', 'php-curl', 'php-gd', 'php-json',
73
- 'php-mcrypt', 'php-readline', 'php-mbstring', 'php-xml'
74
- ]
75
- `apt-get update`
76
- `apt-get install -qyf #{pkgs.join(' ')}`
77
- end
78
-
79
68
  desc "Install Dokuwiki"
80
- task :install => [:install_deps] do
69
+ task :install => ["nginx:install", "php:install"] do
81
70
  app_path = `config-get app_path`
82
71
  resource_path = `resource-get stable-release`
83
72
  hook_path = ENV['JUJU_CHARM_DIR']
@@ -130,6 +119,41 @@ end
130
119
  The core of Charmkit contains a few helpers such as template rendering but
131
120
  otherwise kept relatively small.
132
121
 
122
+ **Charmkit** does have a sense of "plugins" which are really **rake** tasks that
123
+ reside in *charmkit/plugin/{name}* as seen in the example syntax above.
124
+
125
+ ## Using local plugins
126
+
127
+ In addition to the plugins(read: rake tasks) you can add your own to the charm
128
+ itself. To add a task either create a directory inside your charm (eg.
129
+ **tasks**) and name the file something relvant. For example, to create a plugin
130
+ that will install **vim** you would do the following inside your charm directory:
131
+
132
+ Create a file **tasks/vim.rb** with the below syntax:
133
+
134
+ ```ruby
135
+ namespace :vim do
136
+ desc "install vim"
137
+ task :install do
138
+ system("apt-get install -qyf vim")
139
+ end
140
+ end
141
+ ```
142
+
143
+ And in your **Rakefile** include it in using the **require_relative** syntax:
144
+
145
+ ```ruby
146
+ require 'charmkit'
147
+ require_relative 'tasks/vim'
148
+ ```
149
+
150
+ Now you can install **vim** with the rake command or utilize the tasks inside
151
+ your **Rakefile**:
152
+
153
+ ```
154
+ bundle exec rake vim:install
155
+ ```
156
+
133
157
  ## Packaging the Charm
134
158
 
135
159
  You'll want to make sure that any Ruby gems used are packaged with your charm so
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ source "https://rubygems.org"
3
+
4
+ gem "rake"
5
+ gem "charmkit", "~> 0.4.0"
@@ -0,0 +1,15 @@
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
@@ -0,0 +1,45 @@
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
@@ -0,0 +1,62 @@
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
+ namespace :dokuwiki do
11
+
12
+ desc "Install Dokuwiki"
13
+ # Notice that I set task dependencies on nginx, php, AND vim
14
+ # so that they get installed prior to installing dokuwiki
15
+ task :install => ["nginx:install", "php:install", "vim:install"] do
16
+ app_path = `config-get app_path`.chomp
17
+ resource_path = `resource-get stable-release`.chomp
18
+ hook_path = ENV['JUJU_CHARM_DIR']
19
+
20
+ mkdir_p app_path unless Dir.exists? app_path
21
+
22
+ `tar xf #{resource_path} -C #{app_path} --strip-components=1`
23
+ cp "#{hook_path}/templates/acl.auth.php", "#{app_path}/conf/acl.auth.php"
24
+ cp "#{hook_path}/templates/local.php", "#{app_path}/conf/local.php"
25
+ cp "#{hook_path}/templates/plugins.local.php", "#{app_path}/conf/plugin.local.php"
26
+
27
+ version = File.read "#{app_path}/VERSION"
28
+ `application-version-set '#{version}'`
29
+ `status-set active "Dokuwiki Install finished."`
30
+ end
31
+
32
+ desc "Configure Dokuwiki"
33
+ task :config_changed do
34
+ app_path = `config-get app_path`.chomp
35
+ hook_path = ENV['JUJU_CHARM_DIR']
36
+
37
+ admin_user = `config-get admin_user`.chomp
38
+ admin_password = `config-get admin_password`.chomp
39
+ admin_name = `config-get admin_name`.chomp
40
+ admin_email = `config-get admin_email`.chomp
41
+ template "#{hook_path}/templates/users.auth.php",
42
+ "#{app_path}/conf/users.auth.php",
43
+ admin_user: admin_user,
44
+ admin_password: admin_password,
45
+ admin_name: admin_name,
46
+ admin_email: admin_email
47
+
48
+ public_address = `unit-get public-address`.chomp
49
+ template "#{hook_path}/templates/vhost.conf",
50
+ "/etc/nginx/sites-enabled/default",
51
+ public_address: public_address,
52
+ app_path: app_path
53
+
54
+ chown_R 'www-data', 'www-data', app_path
55
+
56
+ `systemctl restart php7.0-fpm`
57
+ `systemctl restart nginx`
58
+ `status-set active "Ready"`
59
+ end
60
+ end
61
+
62
+ task :default => 'dokuwiki:install'
@@ -0,0 +1,21 @@
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
@@ -0,0 +1,21 @@
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.
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ bundle exec rake dokuwiki:config_changed
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ apt-get update && apt-get install -qyf ruby bundler --no-install-recommends
4
+
5
+ bundle install --local --quiet
6
+
7
+ # Do install task
8
+ bundle exec rake dokuwiki:install
@@ -0,0 +1,3 @@
1
+ #!/bin/sh
2
+
3
+ ./hooks/install
@@ -0,0 +1,322 @@
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>
@@ -0,0 +1,18 @@
1
+ name: dokuwiki
2
+ summary: |
3
+ Dokuwiki is a simple to use wiki.
4
+ description: |
5
+ DokuWiki is a simple to use and highly versatile Open Source wiki software
6
+ that doesn't require a database. It is loved by users for its clean and
7
+ readable syntax.
8
+ maintainers: ['Adam Stokes <adam.stokes@ubuntu.com>']
9
+ series:
10
+ - xenial
11
+ tags:
12
+ - php
13
+ - wiki
14
+ resources:
15
+ stable-release:
16
+ type: file
17
+ filename: stable.tgz
18
+ description: "Dokuwiki stable wiki source"
@@ -0,0 +1,8 @@
1
+ # The local task provide with the charm itself
2
+
3
+ namespace :vim do
4
+ desc "Install VIM"
5
+ task :install do
6
+ system("apt-get install -qyf vim")
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ # acl.auth.php
2
+ # <?php exit()?>
3
+ # Don't modify the lines above
4
+ #
5
+ # Access Control Lists
6
+ #
7
+ # Auto-generated by install script
8
+ # Date: Mon, 09 Nov 2015 01:28:56 +0000
9
+ * @ALL 1
10
+ * @user 8
@@ -0,0 +1,15 @@
1
+ <?php
2
+ /* Generated by Juju
3
+ */
4
+ $conf['title'] = 'Dokuwiki';
5
+ $conf['tagline'] = 'deployed by Juju';
6
+ $conf['license'] = 'cc-by-sa';
7
+ $conf['useacl'] = 1;
8
+ $conf['superuser'] = '@admin';
9
+ $conf['disableactions'] = 'register';
10
+ $conf['showuseras'] = 'username';
11
+ $conf['youarehere'] = 1;
12
+ $conf['gzip_output'] = 1;
13
+ $conf['sitemap'] = 1;
14
+ $conf['userewrite'] = '1';
15
+ $conf['useslash'] = 1;
@@ -0,0 +1,12 @@
1
+ <?php
2
+ /*
3
+ * Local plugin enable/disable settings
4
+ *
5
+ * Auto-generated by install script
6
+ * Date: Tue, 15 Sep 2015 13:34:04 +0000
7
+ */
8
+
9
+ $plugins['authad'] = 0;
10
+ $plugins['authldap'] = 0;
11
+ $plugins['authmysql'] = 0;
12
+ $plugins['authpgsql'] = 0;
@@ -0,0 +1,11 @@
1
+ # users.auth.php
2
+ # <?php exit()?>
3
+ # Don't modify the lines above
4
+ #
5
+ # Userfile
6
+ #
7
+ # Format:
8
+ #
9
+ # login:passwordhash:Real Name:email:groups,comma,seperated
10
+
11
+ <%= admin_user %>:<%= admin_password %>:<%= admin_name %>:<%= admin_email %>:admin,user
@@ -0,0 +1,42 @@
1
+ # set cgi.fix_pathinfo = 0 in /etc/php/7.0/fpm/php.ini
2
+
3
+ server {
4
+ ## Your website name goes here.
5
+ server_name <%= public_address %>;
6
+ ## Your only path reference.
7
+ root <%= app_path %>;
8
+ location / {
9
+ index doku.php;
10
+ # This is cool because no php is touched for static content.
11
+ # include the "?$args" part so non-default permalinks doesn't break when using query string
12
+ try_files $uri $uri/ @dokuwiki;
13
+ }
14
+
15
+ location ~ ^/lib.*\.(gif|png|ico|jpg)$ {
16
+ expires 30d;
17
+ }
18
+
19
+ location ^~ /conf/ { return 403; }
20
+ location ^~ /data/ { return 403; }
21
+
22
+ location @dokuwiki {
23
+ rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
24
+ rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
25
+ rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
26
+ rewrite ^/(.*) /doku.php?id=$1 last;
27
+ }
28
+
29
+ location ~ \.php$ {
30
+ include fastcgi_params;
31
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
32
+ fastcgi_pass unix:/run/php/php7.0-fpm.sock;
33
+ }
34
+ # Block access to data folders
35
+ location ~ /(data|conf|bin|inc)/ {
36
+ deny all;
37
+ }
38
+ # Block access to .htaccess files
39
+ location ~ /\.ht {
40
+ deny all;
41
+ }
42
+ }
@@ -0,0 +1,17 @@
1
+ require 'open3'
2
+
3
+ module Charmkit
4
+ module Helpers
5
+ def run(*cmd)
6
+ stdout_s, stderr_s, status = Open3.capture3(*cmd)
7
+ if not status.success?
8
+ raise StandardError, "Failed to run command: #{stderr_s}"
9
+ end
10
+ return {
11
+ :out => stdout_s,
12
+ :err => stderr_s,
13
+ :status => status
14
+ }
15
+ end
16
+ end
17
+ end
@@ -6,7 +6,7 @@ module Charmkit
6
6
  module VERSION
7
7
  MAJOR = 0
8
8
  MINOR = 4
9
- PATCH = 1
9
+ PATCH = 2
10
10
  PRE = nil
11
11
 
12
12
  STRING = [MAJOR, MINOR, PATCH, PRE].compact.join('.')
data/lib/charmkit.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  require "charmkit/version"
2
2
  require "charmkit/helpers/template"
3
+ require "charmkit/helpers/runner"
3
4
 
4
- module Charmkit
5
- # A generic exception by Charmkit
6
- class Error < StandardError; end
7
- end
5
+ module Charmkit; end
8
6
  extend Charmkit::Helpers
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: charmkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Stokes
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-05 00:00:00.000000000 Z
11
+ date: 2016-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,15 +98,27 @@ files:
98
98
  - bin/console
99
99
  - bin/setup
100
100
  - charmkit.gemspec
101
- - examples/Charmkitfile
102
- - examples/basic.rb
103
- - examples/demo/lib/install.rb
104
- - examples/demo/readme
105
- - examples/plugin_loader.rb
106
- - examples/template.rb
107
- - examples/templates/user_auth.txt
101
+ - examples/my-demo-charm/Gemfile
102
+ - examples/my-demo-charm/Gemfile.lock
103
+ - examples/my-demo-charm/README.md
104
+ - examples/my-demo-charm/Rakefile
105
+ - examples/my-demo-charm/config.yaml
106
+ - examples/my-demo-charm/copyright
107
+ - examples/my-demo-charm/hooks/config-changed
108
+ - examples/my-demo-charm/hooks/install
109
+ - examples/my-demo-charm/hooks/upgrade-charm
110
+ - examples/my-demo-charm/icon.svg
111
+ - examples/my-demo-charm/metadata.yaml
112
+ - examples/my-demo-charm/readme
113
+ - examples/my-demo-charm/tasks/vim.rb
114
+ - examples/my-demo-charm/templates/acl.auth.php
115
+ - examples/my-demo-charm/templates/local.php
116
+ - examples/my-demo-charm/templates/plugins.local.php
117
+ - examples/my-demo-charm/templates/users.auth.php
118
+ - examples/my-demo-charm/templates/vhost.conf
108
119
  - lib/charmkit.rb
109
120
  - lib/charmkit/extend/string_tools.rb
121
+ - lib/charmkit/helpers/runner.rb
110
122
  - lib/charmkit/helpers/template.rb
111
123
  - lib/charmkit/plugins/nginx.rb
112
124
  - lib/charmkit/plugins/php.rb
@@ -1,66 +0,0 @@
1
- # -*- mode:ruby -*-
2
-
3
- depends_on "nginx-full"
4
- depends_on "php-fpm"
5
- depends_on "php-cgi"
6
- depends_on "php-curl"
7
- depends_on "php-gd"
8
- depends_on "php-json"
9
- depends_on "php-mcrypt"
10
- depends_on "php-readline"
11
- depends_on "php-mbstring"
12
- depends_on "php-xml"
13
-
14
- hook "install" do
15
- release = "#{config['release']}-release"
16
- app_path = config 'app_path'
17
- hook_path = ENV['JUJU_CHARM_DIR']
18
- run "tar xf #{resource[release]} -C #{app_path} --strip-components=1"
19
- rm "#{app_path}/conf/install.php" if is_file? "#{app_path}/conf/install.php"
20
- cp "#{hook_path}/templates/acl.auth.php", "#{app_path}/conf/acl.auth.php"
21
- cp "#{hook_path}/templates/local.php", "#{app_path}/conf/local.php"
22
- cp "#{hook_path}/templates/plugins.local.php", "#{app_path}/conf/plugin.local.php"
23
- file "/etc/dokuwiki-release", content: release
24
- case release
25
- when "stable"
26
- version = cat "#{app_path}/VERSION"
27
- run "application-version-set '#{version}'"
28
- when "development"
29
- t = Time.now
30
- version = t.strftime "%Y-%m-%d"
31
- run "application-version-set 'development-#{version}'"
32
- else
33
- status :blocked, "Unable to set proper application version"
34
- exit 1
35
- end
36
- end
37
-
38
- hook "config-changed" do
39
- app_path = config 'app_path'
40
- hook_path = ENV['JUJU_CHARM_DIR']
41
- installed_release = cat "/etc/dokuwiki-release"
42
- release = config 'release'
43
- if !installed_release.eql? release
44
- run './hooks/install'
45
- end
46
-
47
- admin_user = config 'admin_user'
48
- admin_password = config 'admin_password'
49
- admin_name = config 'admin_name'
50
- admin_email = config 'admin_email'
51
- template "#{hook_path}/templates/users.auth.php",
52
- "#{app_path}/conf/users.auth.php",
53
- admin_user: admin_user,
54
- admin_password: admin_password,
55
- admin_name: admin_name,
56
- admin_email: admin_email
57
-
58
- template "#{hook_path}/templates/vhost.conf",
59
- "/etc/nginx/sites-enabled/default",
60
- public_address: unit['public-address'],
61
- app_path: app_path
62
-
63
- chown_R 'www-data', 'www-data', app_path
64
- run "systemctl restart nginx"
65
- status :active, "Ready"
66
- end
data/examples/basic.rb DELETED
@@ -1,6 +0,0 @@
1
- require_relative './plugin_loader'
2
-
3
- # run 'ls -l /tmp'
4
- # status :active, "running application status..."
5
- # package ['znc', 'znc-perl', 'znc-python'], :update_cache
6
- # is_installed? 'znc'
@@ -1,30 +0,0 @@
1
- require 'charmkit'
2
-
3
- class Install < Charmkit
4
- plugin :core
5
- plugin :nginx
6
- plugin :php
7
-
8
- incant :nginx_install do |nginx|
9
- ngnix.install
10
- nginx.set_vhost server_name: config('server_name'),
11
- application_path: config('app_path')
12
- end
13
- incant :php_install do |php|
14
- php.install version: 7,
15
- plugins: ['fpm',
16
- 'cgi',
17
- 'curl',
18
- 'gd',
19
- 'json',
20
- 'mcrypt',
21
- 'readline',
22
- 'mbstring',
23
- 'xml']
24
- end
25
-
26
-
27
- def summon
28
- log "Running example charm code"
29
- end
30
- end
@@ -1 +0,0 @@
1
- require 'charmkit/helpers'
data/examples/template.rb DELETED
@@ -1,4 +0,0 @@
1
- require 'charmkit'
2
-
3
- template 'examples/templates/user_auth.txt', '/tmp/user_auth.txt',
4
- firstname: "joe", lastname: "bob"
@@ -1 +0,0 @@
1
- Hi there <%= firstname %> <%= lastname %>
File without changes