siteleaf 2.0.0 → 2.0.1

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: 381d797618975d09040410063221c28047e1e4cb
4
- data.tar.gz: f672e44c0c7476f66cbf936ccdaaf99d1c4edc0b
3
+ metadata.gz: 65d48226cecb838d1278ade7c5b7541b34a1109d
4
+ data.tar.gz: f0bf3187c1fc2421569d9ceb3bca7ca653c32c19
5
5
  SHA512:
6
- metadata.gz: 1fd6a066558b67b11360c4412e2936c04e2b8545d293ca6fd93eb91fcbda321b358eb262afcb5120d6019a1fcc5bb74b20882b5d1ac06b50d7ffecce0f3f4f1e
7
- data.tar.gz: 073d3a4f6acf1c36484d6ea6116bd6f38df5dc4a96ac42c3f4ea12613af8c9195ebc6b91d23b3bd7a29207a8ad8516e7883be5ded383dd7bb56d5df99f303489
6
+ metadata.gz: 2bba0b5d62f3b7b2dddcafaa5be8d578880cca38781b560d7b4b24f6478b8700c507484dd9d86c0143be1a3f2fbcf7baf4a55adcea2a25315f0e0495fc8ae4a2
7
+ data.tar.gz: 91412e0252c46d6e4a9648c31a45a82133d2555091791f1a4ad2bff6866e8831ecd596a02302d82153f1d554c27189d817f6b897e4de285f95fbaa7e636d6da5
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Siteleaf Gem V2
1
+ Siteleaf v2 Gem
2
2
  ===============
3
3
 
4
4
  - [Installation](#installation)
@@ -13,9 +13,11 @@ Installation
13
13
 
14
14
  The Siteleaf gem is available for installation on [Rubygems](https://rubygems.org/gems/siteleaf). To install run:
15
15
 
16
- gem install siteleaf --pre
16
+ gem install siteleaf
17
17
 
18
- Important: make sure to use `--pre` for V2. If maintaining sites with multiple versions, we recommend using a Gemfile.
18
+ **Note:** the v2 gem only works with v2 sites. For documentation on v1 see: https://github.com/siteleaf/siteleaf-gem/tree/v1
19
+
20
+ If maintaining sites with multiple versions, we recommend using a [Gemfile](#using-this-gem-in-your-application).
19
21
 
20
22
 
21
23
  Using the CLI
@@ -78,7 +80,7 @@ Using this gem in your application
78
80
 
79
81
  To use this gem in your application, add the following to your Gemfile:
80
82
 
81
- gem 'siteleaf', :git => 'git://github.com/siteleaf/siteleaf-gem.git', :branch => '2.0.0.pre'
83
+ gem 'siteleaf', '~>2'
82
84
 
83
85
 
84
86
  Using the API
@@ -58,12 +58,13 @@ end
58
58
 
59
59
  def pull(site_id)
60
60
  print "Reading site...\n"
61
-
61
+
62
62
  # get all the things
63
63
  site = Siteleaf::Site.find(site_id)
64
- site_files = site.source_tree
64
+ site_files = site.source_files('.', recursive: true)
65
+
65
66
  updated_count = 0
66
-
67
+
67
68
  # download unmatched files
68
69
  site_files.each do |file|
69
70
  sha = ::File.exist?(file.name) && Siteleaf::GitHash.file(file.name)
@@ -75,11 +76,11 @@ def pull(site_id)
75
76
  print "complete.\n"
76
77
  end
77
78
  end
78
-
79
+
79
80
  # check for old files
80
81
  local_files = read_dir
81
82
  missing_files = []
82
- local_files.each do |path|
83
+ local_files.each do |path|
83
84
  missing_files << path if !site_files.find{|a| a.name.casecmp(path) == 0 }
84
85
  end
85
86
  if missing_files.empty?
@@ -105,23 +106,23 @@ end
105
106
 
106
107
  def push(site_id)
107
108
  print "Reading site...\n"
108
-
109
+
109
110
  # get all the things
110
111
  site = Siteleaf::Site.find(site_id)
111
- site_files = site.source_tree
112
+ site_files = site.source_files('.', recursive: true)
112
113
  local_files = read_dir
113
114
  updated_count = 0
114
-
115
+
115
116
  # find changed files
116
117
  changed_files = local_files.reject do |path|
117
118
  file = site_files.find{|a| a.name.casecmp(path) == 0 }
118
119
  file && Siteleaf::GitHash.file(path) == file.sha
119
120
  end
120
- changed_files.unshift('_config.yml') if changed_files.delete('_config.yml')
121
-
121
+ changed_files.unshift('_config.yml') if changed_files.delete('_config.yml')
122
+
122
123
  # upload changed files
123
- changed_files.each do |path|
124
- print "Uploading #{path}..."
124
+ changed_files.each do |path|
125
+ print "Uploading #{path}..."
125
126
  response = Siteleaf::SourceFile.create(site_id: site_id, name: path, file: ::File.new(path))
126
127
  if error = !response || response.error || response.message
127
128
  print (error) ? "error: #{error}\n" : "error.\n"
@@ -131,10 +132,10 @@ def push(site_id)
131
132
  print "complete.\n"
132
133
  end
133
134
  end
134
-
135
+
135
136
  # check for old files
136
137
  missing_assets = []
137
- site_files.each do |asset|
138
+ site_files.each do |asset|
138
139
  missing_assets << asset if !local_files.find{|p| p.casecmp(asset.name) == 0 }
139
140
  end
140
141
  if missing_assets.empty?
@@ -160,7 +161,7 @@ end
160
161
 
161
162
  def import(file, quiet = true)
162
163
  job = Siteleaf::Site.import(file: ::File.new(file))
163
-
164
+
164
165
  if quiet
165
166
  puts "=> Import queued.\n"
166
167
  else
@@ -180,7 +181,7 @@ end
180
181
  def publish(site_id, quiet = true)
181
182
  site = Siteleaf::Site.new(id: site_id)
182
183
  job = site.publish
183
-
184
+
184
185
  if quiet
185
186
  puts "=> Publish queued.\n"
186
187
  else
@@ -209,7 +210,7 @@ def get_site_id
209
210
  Siteleaf.send "#{key}=", value
210
211
  end
211
212
  end
212
-
213
+
213
214
  ENV['SITELEAF_SITE_ID'] || if settings = Siteleaf.load_settings('.siteleaf.yml')
214
215
  settings[:site_id]
215
216
  end
@@ -217,13 +218,13 @@ end
217
218
 
218
219
  def read_dir
219
220
  jekyll_config = ::File.exist?('_config.yml') ? YAML::load(::File.read('_config.yml')) : {}
220
-
221
+
221
222
  ignore_paths = ['config.ru', '.*', '_site/*', 'Gemfile', 'Gemfile.lock']
222
223
  ignore_paths += ::File.read('.siteleafignore').split(/\r?\n/) if ::File.exists?('.siteleafignore')
223
224
  ignore_paths += jekyll_config['exclude'] if jekyll_config['exclude'].is_a? Array
224
-
225
+
225
226
  Dir.glob("**/*").reject do |path|
226
- ::File.directory?(path) ||
227
+ ::File.directory?(path) ||
227
228
  ignore_paths.any? {|i| ::File.fnmatch?(i, path, File::FNM_CASEFOLD) || ::File.fnmatch?(i, ::File.basename(path), File::FNM_CASEFOLD) }
228
229
  end
229
230
  end
@@ -3,40 +3,40 @@ module Siteleaf
3
3
 
4
4
  attr_accessor :title, :path, :permalink, :output, :site_id, :user_id, :metadata
5
5
  attr_reader :id, :directory, :created_at, :updated_at
6
-
6
+
7
7
  def create_endpoint
8
8
  ::File.join("sites", site_id, "collections")
9
9
  end
10
-
10
+
11
11
  def entity_endpoint
12
12
  ::File.join(create_endpoint, identifier)
13
13
  end
14
-
14
+
15
15
  def identifier
16
16
  path
17
17
  end
18
-
18
+
19
19
  def site
20
20
  Site.find(site_id)
21
21
  end
22
-
22
+
23
23
  def documents
24
24
  result = Client.get "#{entity_endpoint}/documents"
25
- result.map { |r| Document.new(r) } if result.is_a? Array
25
+ result.map { |r| Document.new(r) } if result.parsed_response.is_a? Array
26
26
  end
27
-
27
+
28
28
  def files
29
29
  result = Client.get "#{entity_endpoint}/files"
30
- result.map { |r| File.new(r) } if result.is_a? Array
30
+ result.map { |r| File.new(r) } if result.parsed_response.is_a? Array
31
31
  end
32
-
32
+
33
33
  def output?
34
34
  output == true
35
35
  end
36
-
36
+
37
37
  def filename
38
38
  path
39
39
  end
40
-
40
+
41
41
  end
42
42
  end
@@ -3,27 +3,27 @@ module Siteleaf
3
3
 
4
4
  attr_accessor :title, :body, :path, :permalink, :visibility, :date, :user_id, :site_id, :metadata
5
5
  attr_reader :id, :filename, :basename, :directory, :url, :sha, :created_at, :updated_at
6
-
6
+
7
7
  def site
8
8
  Site.find(site_id) if site_id
9
9
  end
10
-
10
+
11
11
  def draft?
12
12
  visibility == 'draft'
13
13
  end
14
-
14
+
15
15
  def hidden?
16
16
  visibility == 'hidden'
17
17
  end
18
-
18
+
19
19
  def visible?
20
20
  visibility == 'visible'
21
21
  end
22
22
  alias_method :published?, :visible?
23
-
23
+
24
24
  def to_file
25
25
  SourceFile.new(site_id: site_id, name: filename).to_file
26
26
  end
27
-
27
+
28
28
  end
29
29
  end
@@ -1,6 +1,6 @@
1
1
  module Siteleaf
2
2
  class Entity
3
-
3
+
4
4
  attr_reader :error, :message
5
5
 
6
6
  def initialize(attributes = {})
@@ -9,7 +9,7 @@ module Siteleaf
9
9
 
10
10
  def self.all
11
11
  result = Client.get endpoint
12
- result.map { |r| new(r) } if result.is_a? Array
12
+ result.map { |r| new(r) } if result.parsed_response.is_a? Array
13
13
  end
14
14
 
15
15
  def self.find(identifier)
@@ -20,7 +20,7 @@ module Siteleaf
20
20
  def self.create(attributes = {})
21
21
  new(attributes).save
22
22
  end
23
-
23
+
24
24
  def self.delete(identifier)
25
25
  Client.delete "#{endpoint}/#{identifier}"
26
26
  end
@@ -60,11 +60,11 @@ module Siteleaf
60
60
  def create_endpoint
61
61
  self.class.endpoint
62
62
  end
63
-
63
+
64
64
  def entity_endpoint
65
65
  "#{self.class.endpoint}/#{identifier}"
66
66
  end
67
-
67
+
68
68
  def identifier
69
69
  id
70
70
  end
@@ -3,79 +3,57 @@ module Siteleaf
3
3
 
4
4
  attr_accessor :title, :domain, :timezone, :metadata, :defaults
5
5
  attr_reader :id, :user_id, :created_at, :updated_at
6
-
6
+
7
7
  def self.find_by_domain(domain)
8
8
  results = Client.get self.endpoint
9
9
  result = results.find {|d| d['domain'] == domain }
10
10
  self.new(result) if result
11
11
  end
12
-
12
+
13
13
  def self.import(attrs)
14
14
  result = Client.post "import", attrs
15
15
  Job.new(id: result["job_id"]) if result
16
16
  end
17
-
18
- def source_files(dir = '.')
19
- result = Client.get ::File.join(entity_endpoint, "source", dir)
20
- result.map { |r| SourceFile.new(r.merge('site_id' => id)) } if result.is_a? Array
17
+
18
+ def source_files(dir = '.', opts = {})
19
+ result = Client.get ::File.join(entity_endpoint, "source", dir), opts
20
+ result.map { |r| SourceFile.new(r.merge('site_id' => id)) } if result.parsed_response.is_a? Array
21
21
  end
22
-
22
+
23
23
  def pages
24
24
  result = Client.get "#{entity_endpoint}/pages"
25
- result.map { |r| Page.new(r) } if result.is_a? Array
26
- end
27
-
25
+ result.map { |r| Page.new(r) } if result.parsed_response.is_a? Array
26
+ end
27
+
28
28
  def collections
29
29
  result = Client.get "#{entity_endpoint}/collections"
30
- result.map { |r| Collection.new(r) } if result.is_a? Array
30
+ result.map { |r| Collection.new(r) } if result.parsed_response.is_a? Array
31
31
  end
32
-
32
+
33
33
  def posts
34
34
  Collection.new(path: 'posts', site_id: id).documents
35
35
  end
36
-
36
+
37
37
  def uploads
38
38
  Collection.new(path: 'uploads', site_id: id).files
39
39
  end
40
-
40
+
41
41
  def publish
42
42
  result = Client.post "#{entity_endpoint}/publish", {}
43
43
  Job.new(id: result["job_id"]) if result
44
44
  end
45
-
45
+
46
46
  def full_url
47
47
  "http://#{domain}"
48
48
  end
49
-
49
+
50
50
  def filename
51
51
  "_config.yml"
52
52
  end
53
-
53
+
54
54
  def sha
55
55
  Siteleaf::GitHash.string(to_file)
56
56
  end
57
-
58
- def source_tree(dir = '.')
59
- @tree_files = []
60
- @tree_dirs = []
61
- recursive_source_files(dir)
62
- @tree_files
63
- end
64
-
65
- protected
66
-
67
- def recursive_source_files(dir = '.')
68
- source_files(dir).each do |file|
69
- if file.type == 'directory'
70
- unless @tree_dirs.include?(file.name)
71
- @tree_dirs << file.name
72
- recursive_source_files(file.name)
73
- end
74
- else
75
- @tree_files << file
76
- end
77
- end
78
- end
79
-
57
+
80
58
  end
81
59
  end
@@ -1,26 +1,26 @@
1
1
  module Siteleaf
2
2
  class SourceFile < Entity
3
-
3
+
4
4
  attr_accessor :file, :name, :site_id
5
5
  attr_reader :name, :url, :download_url, :type, :filesize, :sha, :created_at, :updated_at, :user_id
6
-
6
+
7
7
  def create_endpoint
8
8
  ::File.join("sites", site_id, "source", URI.escape(identifier))
9
9
  end
10
-
10
+
11
11
  def entity_endpoint
12
12
  create_endpoint
13
13
  end
14
-
14
+
15
15
  def identifier
16
16
  name
17
17
  end
18
-
18
+
19
19
  def to_file
20
20
  response = Client.get(::File.join("sites", site_id, "source", "#{URI.escape(identifier)}?download"))
21
- raise response['message'] if response['message'] # indicates API error
22
- response.body
21
+ raise response['message'] if response.parsed_response.is_a?(Hash) && response['message'] # indicates API error
22
+ response.body
23
23
  end
24
-
24
+
25
25
  end
26
26
  end
@@ -1,3 +1,3 @@
1
1
  module Siteleaf
2
- VERSION = "2.0.0"
2
+ VERSION = "2.0.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: siteleaf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Siteleaf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-07 00:00:00.000000000 Z
11
+ date: 2016-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  requirements: []
117
117
  rubyforge_project:
118
- rubygems_version: 2.4.7
118
+ rubygems_version: 2.5.1
119
119
  signing_key:
120
120
  specification_version: 4
121
121
  summary: Siteleaf Ruby interface