rusic 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f7dc54928a8b6b29b43b7ed3044f492e7c70ec5
4
- data.tar.gz: 0dd73f8f57a5fb95259dd0c4267a1a22cee99921
3
+ metadata.gz: b6f8c44f95dfca47eec4f79d391f7c6e30284f9f
4
+ data.tar.gz: 593ab314eca20d6f4b1e7a7304fa00e3a249e7b6
5
5
  SHA512:
6
- metadata.gz: e7edb7da0f86ad72031b08ed0643e22b33664cd877d0020ce5a253eaa7ea717c47810826aa09ca3e09397c101f0db26bb063c105bc836cdb085ed18238e556ad
7
- data.tar.gz: f65f6fea0a3994f673133d4240e2113e5de4318f5c8c7dc3d46efbc78f9f94d529c11ac30531be3423ee2b0ddbdda16c8ce93cb7e2f1a82922410e032a872784
6
+ metadata.gz: c5e0490020dc8ed773ba45cc8bf09b1c5a00e7d415667911afcbfdb4177c2ffc223557c2f08ceaa8880bed6962c75e2c9cd85a8b2ab0f7f080fa3f921dc14ee4
7
+ data.tar.gz: fa3505f1b7cfa0cb23a39186a807ab5855045b11ef0404a561fab43c4cec8e28820acc6982f4c66421a41bf0a93b897062c627ad88f66942db9c5d4ca531978a
data/README.md CHANGED
@@ -116,7 +116,7 @@ Saved layouts/subdomain.html.liquid
116
116
 
117
117
  ### Deploy using a `.rusic` file
118
118
 
119
- You can add a `rusic.yml` file to your project directory and set your environments
119
+ You can add a `.rusic.yml` file to your project directory and set your environments
120
120
  settings within this file. This file should be valid
121
121
  [YAML](http://www.yaml.org/start.html) and looks like this -
122
122
 
@@ -143,6 +143,21 @@ This also works with `--watch`
143
143
  $ rusic deploy production --watch
144
144
  ```
145
145
 
146
+ ### Custom Attributes
147
+
148
+ You can create and maintain your themes custom attributes by creating the
149
+ `attributes.yml` file in the root of your theme. Then declare your attributes like so:
150
+
151
+ ```yaml
152
+ my_custom_attribute_key:
153
+ value: "Custom attributes rule!!"
154
+ help_text: "Declare how much you admire custom attributes"
155
+ ```
156
+
157
+ If the key does not exist it will be created, if the key already exists the
158
+ `value` and `help_text` will be updated. If you need to delete a custom attribute
159
+ you should do that from the theme settings page on Rusic.
160
+
146
161
  MIT Licenced
147
162
 
148
163
  Copyright © 2011–2014, Simpleweb Ltd.
data/lib/rusic.rb CHANGED
@@ -2,6 +2,7 @@ require 'rusic/version'
2
2
 
3
3
  require 'rest_client'
4
4
  require 'command_line_reporter'
5
+ require 'json'
5
6
 
6
7
  module Rusic
7
8
  require 'rusic/cli'
@@ -12,4 +13,5 @@ module Rusic
12
13
  require 'rusic/uploaders/asset'
13
14
  require 'rusic/uploaders/editable_asset'
14
15
  require 'rusic/uploaders/template'
16
+ require 'rusic/uploaders/custom_attributes'
15
17
  end
data/lib/rusic/cli.rb CHANGED
@@ -22,6 +22,7 @@ module Rusic
22
22
 
23
23
  files << Dir.glob(path.join('{layouts,ideas,pages}', '*.liquid'))
24
24
  files << Dir.glob(path.join('assets', '*.*'))
25
+ files << Dir.glob(path.join('attributes.{yml,yaml}'))
25
26
 
26
27
  files.flatten!
27
28
  if options['watch']
@@ -19,6 +19,11 @@ module Rusic
19
19
  else
20
20
  uploader = Uploaders::Asset.new(self)
21
21
  end
22
+ else
23
+ case filename.to_s
24
+ when /attributes\.ya?ml/
25
+ uploader = Uploaders::CustomAttributes.new(self)
26
+ end
22
27
  end
23
28
 
24
29
  uploader
@@ -14,11 +14,11 @@ module Rusic
14
14
  @api_host = options.fetch('api_host')
15
15
  @theme = options.fetch('theme')
16
16
 
17
- report(message: "Uploading #{file.descriptor}", complete: '', type: 'inline', indent_size: 2) do
17
+ report(message: message, complete: '', type: 'inline', indent_size: 2) do
18
18
  begin
19
19
  perform
20
20
  print(' [done]'.green)
21
- rescue RestClient::UnprocessableEntity
21
+ rescue RestClient::UnprocessableEntity, RestClient::Exception
22
22
  print(' [failed]'.red)
23
23
  end
24
24
  end
@@ -34,6 +34,10 @@ module Rusic
34
34
 
35
35
  protected
36
36
 
37
+ def message
38
+ "Uploading #{file.descriptor}"
39
+ end
40
+
37
41
  def client
38
42
  headers = {
39
43
  'X-API-Key' => api_key,
@@ -0,0 +1,45 @@
1
+ module Rusic
2
+ module Uploaders
3
+ class CustomAttributes < Base
4
+ def perform
5
+ client["themes/#{theme}"].put(params)
6
+ end
7
+
8
+ private
9
+
10
+ def message
11
+ "Updating custom attributes"
12
+ end
13
+
14
+ def params
15
+ params_hash = {
16
+ 'theme' => {
17
+ 'custom_attributes_attributes' => {}
18
+ }
19
+ }
20
+
21
+ attributes_from_file.each_with_index do |(key, options), i|
22
+ params_hash['theme']['custom_attributes_attributes'][i] = {
23
+ 'key' => key,
24
+ 'value' => options.fetch('value'),
25
+ 'help_text' => options.fetch('help_text', '')
26
+ }
27
+
28
+ if e_attr = existing_attributes[key]
29
+ params_hash['theme']['custom_attributes_attributes'][i]['id'] = e_attr['id']
30
+ end
31
+ end
32
+ params_hash
33
+ end
34
+
35
+ def existing_attributes
36
+ @existing_attributes ||= JSON.parse(client["themes/#{theme}"].get)
37
+ Hash[@existing_attributes.fetch('custom_attributes', []).map {|i| [i['key'], i] }]
38
+ end
39
+
40
+ def attributes_from_file
41
+ ::YAML::load_file(file.file) || {}
42
+ end
43
+ end
44
+ end
45
+ end
data/lib/rusic/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rusic
2
- VERSION = "1.3.2"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rusic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Mytton
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2014-07-30 00:00:00.000000000 Z
14
+ date: 2014-09-10 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: thor
@@ -122,6 +122,7 @@ files:
122
122
  - lib/rusic/theme_file.rb
123
123
  - lib/rusic/uploaders/asset.rb
124
124
  - lib/rusic/uploaders/base.rb
125
+ - lib/rusic/uploaders/custom_attributes.rb
125
126
  - lib/rusic/uploaders/editable_asset.rb
126
127
  - lib/rusic/uploaders/template.rb
127
128
  - lib/rusic/version.rb