siteleaf 1.0.11 → 2.0.0.pre.beta1

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
- SHA256:
3
- metadata.gz: 604b56cb0dff227c9d9b9b75d296a3d68b2f968e95ed5ba60a291f9a1061b62b
4
- data.tar.gz: 851c9369253d2fadff92b916eaf01366e8666055957a1942da2b73fd33d24479
2
+ SHA1:
3
+ metadata.gz: 5b163f9a10681add3de4aee5e6eb18e16634a50a
4
+ data.tar.gz: 4683680196a957815215170ed5c0c535fa144b80
5
5
  SHA512:
6
- metadata.gz: 3160b2d25a4d6a6b1686bb7138c0843315addaa012dbe17dbc130278e88b5825a04ceee29c5870234cf0514c297e4bd53b3885cbcfd67ce3221b304bd79b839d
7
- data.tar.gz: 3983bcdb3ddcd45282b857233c0163d52d58b51c0d2b4e92938ddaf897e60f8088e9ccfff3208a1e45ed996b2e68e893fcbeb4b6856e137da351dce5959340ed
6
+ metadata.gz: 96d07c4683161d4b174a1b4253f82cd81de741c4d90e4ee6cf861d30aa0376d259f7a8878060eb1d3b4fd74bb3cc0ed0020d9b43f57ca4956d5f0ebc5b3bb633
7
+ data.tar.gz: 54194023b24413f1703f5a0ff23ee722cef7e2f75cbcd7c5c8468e72406795262b62109a729ebad7be253d7107acd9a3172b3c3cebc617cdc07f57cc26fc6856
data/.gitignore CHANGED
@@ -17,6 +17,3 @@ test/version_tmp
17
17
  tmp
18
18
  .ruby-version
19
19
  .DS_Store
20
- source/
21
- export/
22
- config.ru
data/README.md CHANGED
@@ -1,35 +1,44 @@
1
- **Note:** This version only applies to v1 sites, for v2 see: https://github.com/siteleaf/siteleaf-gem
2
-
3
- Siteleaf v1 Gem
4
- =================
1
+ Siteleaf Gem V2
2
+ ===============
5
3
 
6
4
  - [Installation](#installation)
7
5
  - [Using the CLI](#using-the-cli)
8
6
  - [Using this gem in your application](#using-this-gem-in-your-application)
9
7
  - [Using the API](#using-the-api)
10
- - [Exporting your site](#exporting-your-site)
11
8
  - [Troubleshooting](#troubleshooting)
12
9
  - [Contributing](#contributing)
13
10
 
14
-
15
11
  Installation
16
12
  ------------
17
13
 
18
14
  The Siteleaf gem is available for installation on [Rubygems](https://rubygems.org/gems/siteleaf). To install run:
19
15
 
20
- gem install siteleaf -v '~>1'
16
+ gem install siteleaf --pre
17
+
18
+ Important: make sure to use `--pre` for V2. If maintaining sites with multiple versions, we recommend using a Gemfile.
21
19
 
22
20
 
23
21
  Using the CLI
24
22
  -------------
25
23
 
26
- Important: if using a Gemfile, make sure to prepend all commands with bundle exec (e.g. bundle exec siteleaf auth).
24
+ Important: if using a Gemfile, make sure to prepend all commands with `bundle exec` (e.g. `bundle exec siteleaf auth`).
25
+
26
+ **Authorize your account:**
27
27
 
28
- The Siteleaf gem allows you to test and develop your sites locally. If using [Pow](http://pow.cx) or [Anvil](http://anvilformac.com), your local website will be automatically set up and can be accessed at `http://yoursite.dev`.
28
+ siteleaf auth
29
+
30
+ This will create an authorization file located at `~/.siteleaf.yml`.
29
31
 
30
- **(Optional, Mac-only) Install Pow for extra goodness:**
32
+ Alternatively, you can also use environment variables: `API_KEY=xxx API_SECRET=yyy siteleaf command`
31
33
 
32
- curl get.pow.cx | sh
34
+ You can also include use a `.siteleaf.yml` file in the root of your project:
35
+
36
+ ```yaml
37
+ ---
38
+ api_key: xxx
39
+ api_secret: yyy
40
+ site_id: zzz
41
+ ```
33
42
 
34
43
  **Set up a new site locally:**
35
44
 
@@ -41,33 +50,17 @@ This will create a new theme folder called `yoursite.com` in the directory where
41
50
 
42
51
  siteleaf config yoursite.com
43
52
 
44
- Your site should now be accessible at `http://yoursite.dev`.
53
+ **Upload your files:**
45
54
 
46
- *or*
47
-
48
- **If you don't want to install Pow, local sites can also be manually run:**
49
-
50
- siteleaf server
51
-
52
- In this case, your local site can be accessed at `http://localhost:9292`.
53
-
54
- **Lastly...**
55
-
56
- Your local folder should contain at least one template file (`default.html`), for sample themes and documentation see: https://github.com/siteleaf/siteleaf-themes
57
-
58
- For new sites, you will also need to create at least one page or post on https://manage.siteleaf.com in order to preview.
55
+ To upload your theme to Siteleaf, run the following command:
59
56
 
60
- **Download your theme:**
57
+ siteleaf push
58
+
59
+ **Download your files:**
61
60
 
62
61
  To download your theme (or the default theme for new sites) from Siteleaf, run the following command:
63
62
 
64
- siteleaf pull theme
65
-
66
- **Upload your theme:**
67
-
68
- To upload your theme to Siteleaf, run the following command:
69
-
70
- siteleaf push theme
63
+ siteleaf pull
71
64
 
72
65
  **Publish your site:**
73
66
 
@@ -75,10 +68,6 @@ To publish your site changes to your hosting provider, run the following command
75
68
 
76
69
  siteleaf publish
77
70
 
78
- **Switch Siteleaf users or re-authenticate:**
79
-
80
- siteleaf auth
81
-
82
71
  **For a full list of commands, run:**
83
72
 
84
73
  siteleaf help
@@ -89,8 +78,7 @@ Using this gem in your application
89
78
 
90
79
  To use this gem in your application, add the following to your Gemfile:
91
80
 
92
- gem 'siteleaf', '~>1'
93
-
81
+ gem 'siteleaf', :git => 'git://github.com/siteleaf/siteleaf-gem.git', :branch => '2.0.0.pre'
94
82
 
95
83
 
96
84
  Using the API
@@ -148,22 +136,19 @@ page = Siteleaf::Page.find('519719ddcc85910626000001')
148
136
 
149
137
  # create new post in page
150
138
  post = Siteleaf::Post.create({
151
- :parent_id => page.id,
152
139
  :title => 'My Post',
153
140
  :body => 'This is my first post.'
154
141
  })
155
142
 
156
- # update page, add metadata, add taxonomy
143
+ # update page, add metadata
157
144
  post.title = 'New Title'
158
- post.meta = [ {"key" => "foo", "value" => "bar"} ]
159
- post.taxonomy = [ {"key" => "Tags", "values" => ["One","Two","Three"]} ]
145
+ post.meta = {'foo' => 'bar'}
160
146
  post.save
161
147
 
162
- # upload asset to post (use site_id, page_id, or theme_id to upload to Site, Page, or Theme instead)
163
- asset = Siteleaf::Asset.create({
164
- :post_id => post.id,
148
+ # upload file
149
+ asset = Siteleaf::File.create({
165
150
  :file => File.open("~/image.png"),
166
- :filename => "image.png"
151
+ :path => "image.png"
167
152
  })
168
153
 
169
154
  # delete post
@@ -173,19 +158,6 @@ post.delete
173
158
  Siteleaf::Page.delete('519719ddcc85910626000001')
174
159
  ```
175
160
 
176
-
177
- Exporting your site
178
- ---------------------------------
179
-
180
- You can backup or export your Siteleaf content to Jekyll-compatible format by running the following command:
181
-
182
- siteleaf export
183
-
184
- You will be asked to enter your main posts path, this is typically `posts` (default) or `blog` (if your posts are located at `/blog/hello-world` for example). If your site does not have any posts, leave blank to use the default.
185
-
186
- All content including Pages, Posts, Site Metadata, and Assets will be exported to a sub-folder called `export`. Theme files are not included in the export.
187
-
188
-
189
161
  Troubleshooting
190
162
  ------------
191
163
 
@@ -193,7 +165,7 @@ Troubleshooting
193
165
 
194
166
  Try running:
195
167
 
196
- sudo gem install siteleaf -v '~>1'
168
+ sudo gem install siteleaf
197
169
 
198
170
 
199
171
  Contributing
data/bin/siteleaf CHANGED
@@ -3,7 +3,8 @@
3
3
  require 'siteleaf'
4
4
  require 'fileutils'
5
5
  require 'open-uri'
6
- require 'digest/md5'
6
+ require 'digest/sha1'
7
+ require 'tempfile'
7
8
  require 'yaml'
8
9
 
9
10
  def help
@@ -12,20 +13,17 @@ Usage: siteleaf [COMMAND] [OPTIONS]
12
13
 
13
14
  Commands:
14
15
  auth Login in with your credentials
15
- s, server Starts a local server
16
16
  c, config DOMAIN Configure an existing directory
17
17
  n, new DOMAIN Creates new site on siteleaf.net
18
- pull theme Pulls theme files for configured site from Siteleaf
19
- push theme Pushes all files in dir as theme to configured site
18
+ pull Pulls files for configured site from Siteleaf
19
+ push Pushes all files in dir to configured site
20
20
  publish Publish website to hosting provider
21
- export Exports site content to Jekyll-compatible format
22
21
  help Prints this help document
23
22
  version Prints the siteleaf gem version
24
23
 
25
24
  Options:
26
25
  -h, --help Prints this help document
27
26
  -v, --version Prints the siteleaf gem version
28
- -p, --port PORT Binds local server to PORT (default: 9292)
29
27
  -q, --quiet Suppress publish status
30
28
 
31
29
  See https://github.com/siteleaf/siteleaf-gem for additional documentation.
@@ -58,90 +56,193 @@ def auth(re_auth = false)
58
56
  end
59
57
 
60
58
  def config(site)
61
- File.open('config.ru', 'w') { |file| file.write "# Intended for development purposes only, do not upload or use in production.
62
- # See https://github.com/siteleaf/siteleaf-gem for documentation.
63
- require 'rubygems'
64
- require 'siteleaf'
65
- run Siteleaf::Server.new(:site_id => '#{site.id}')" }
66
-
67
- pow_path = File.expand_path('~/.pow')
68
- if File.directory?(pow_path)
69
- site_no_tld = site.domain.gsub(/\.[a-z]{0,4}$/i,'')
70
- site_symlink = "#{pow_path}/#{site_no_tld}"
71
- FileUtils.rm(site_symlink) if File.symlink?(site_symlink)
72
- FileUtils.symlink(File.expand_path('.'), site_symlink)
73
- puts "=> Site configured with Pow, open `http://#{site_no_tld}.dev` to test site locally.\n"
74
- else
75
- puts "=> Site configured, run `siteleaf server` to test site locally.\n"
76
- end
59
+ Siteleaf.save_settings({site_id: site.id}, '.siteleaf.yml')
60
+ puts "=> Site configured."
77
61
  end
78
62
 
79
63
  def get_site_id
80
- if File.exist?('config.ru')
81
- if match = /:site_id => '([a-z0-9]{24})'/i.match(File.read('config.ru'))
82
- return match[1]
64
+ # check env vars
65
+ [:api_key, :api_secret, :api_base, :api_version].each do |key|
66
+ if value = ENV[key.to_s.upcase]
67
+ Siteleaf.send "#{key}=", value
83
68
  end
84
69
  end
70
+
71
+ ENV['SITE_ID'] || if settings = Siteleaf.load_settings('.siteleaf.yml')
72
+ settings[:site_id]
73
+ end
85
74
  end
86
75
 
87
- def get_theme_assets(site_id)
88
- if assets = Siteleaf::Theme.assets_by_site_id(site_id)
89
- updated_count = 0
90
- assets.each do |asset|
91
- if File.exist?(asset.filename) && (asset.checksum == Digest::MD5.hexdigest(IO.binread(asset.filename)))
92
- # file is up to date
93
- else
94
- print "Downloading #{asset.filename}..."
95
- file = open(asset.file['url'], 'r:UTF-8') { |f| f.read }
96
- FileUtils.mkdir_p(File.dirname(asset.filename))
97
- File.open(asset.filename, 'w:UTF-8') { |f| f.write(file) }
98
- updated_count += 1
99
- print "complete.\n"
100
- end
76
+ def pull(site_id)
77
+ # get all the things
78
+ site = Siteleaf::Site.new(id: site_id)
79
+ files = site.files
80
+ uploads = site.uploads
81
+ pages = site.pages
82
+ posts = site.posts
83
+ collections = site.collections
84
+ documents = []
85
+ collections.each do |collection|
86
+ documents += collection.documents
87
+ end
88
+
89
+ assets = files + uploads + pages + posts + documents
90
+
91
+ updated_count = 0
92
+
93
+ assets.each do |asset|
94
+ sha = ::File.exist?(asset.filename) && Digest::SHA1.hexdigest(::File.read(asset.filename))
95
+ if asset.sha == sha
96
+ # file is up to date
97
+ else
98
+ print "Downloading #{asset.filename}..."
99
+ FileUtils.mkdir_p(::File.dirname(asset.filename))
100
+ ::File.open(asset.filename, 'w:UTF-8') { |f| f.write(asset.to_file) }
101
+ updated_count += 1
102
+ print "complete.\n"
101
103
  end
102
- puts "=> #{updated_count} asset(s) downloaded.\n"
103
104
  end
105
+
106
+ puts "=> #{updated_count} file(s) downloaded.\n"
104
107
  end
105
108
 
106
- def put_theme_assets(site_id)
107
- theme = Siteleaf::Theme.find_by_site_id(site_id)
108
- unless theme.id
109
- puts "Could not retrieve theme, check your site configuration and try again.\n"
110
- return false
109
+ def push(site_id)
110
+ # check config
111
+ config = ::File.exist?('_config.yml') ? YAML::load(::File.read('_config.yml')) : {}
112
+ markdown_ext = (config['markdown_ext'] || 'markdown,mdw,mdwn,md,text').split(',')
113
+
114
+ # get all the things
115
+ site = Siteleaf::Site.new(id: site_id)
116
+ files = site.files
117
+ uploads = site.uploads
118
+ pages = site.pages
119
+ posts = site.posts
120
+ collections = site.collections
121
+ documents = []
122
+ collections.each do |collection|
123
+ documents += collection.documents
111
124
  end
112
- assets = theme.assets
125
+
126
+ assets = files + uploads + pages + posts + documents
127
+
113
128
  updated_count = 0
114
- ignore_paths = ['config.ru', '.*']
115
- ignore_paths += File.read('.siteleafignore').split(/\r?\n/) if File.exists?('.siteleafignore')
116
-
129
+ ignore_paths = ['_config.yml', 'config.ru', '.*', '_site/*', 'Gemfile', 'Gemfile.lock']
130
+ ignore_paths += ::File.read('.siteleafignore').split(/\r?\n/) if ::File.exists?('.siteleafignore')
131
+ ignore_paths += config['exclude'] if config['exclude'].is_a? Array
132
+
133
+ # create collections
134
+ existing_collections = config['collections'] || {}
135
+ existing_collections.each do |label, metadata|
136
+ path = label.gsub(/[^a-z0-9_\-\.]/i, '')
137
+ unless collections.find {|c| c.path == path }
138
+ # create any new collections
139
+ output = metadata.delete('output')
140
+ permalink = metadata.delete('permalink')
141
+ collections << Siteleaf::Collection.create(site_id: site.id, title: label, path: path, permalink: permalink, metadata: metadata)
142
+ end
143
+ end
144
+ collection_dirs = collections.map{|c| c.basename }
145
+
117
146
  # upload files
118
147
  paths = Dir.glob("**/*")
119
148
  paths.each do |path|
120
- if !File.directory?(path) && !ignore_paths.any?{|i| File.fnmatch?(i, path, File::FNM_CASEFOLD) || File.fnmatch?(i, File.basename(path), File::FNM_CASEFOLD) }
149
+ if !::File.directory?(path) && !ignore_paths.any?{|i| ::File.fnmatch?(i, path, File::FNM_CASEFOLD) || ::File.fnmatch?(i, ::File.basename(path), File::FNM_CASEFOLD) }
121
150
  asset = assets.find{|a| a.filename == path }
122
- if asset.nil? || (asset && asset.checksum != Digest::MD5.hexdigest(IO.binread(path)))
151
+ sha = Digest::SHA1.hexdigest(::File.read(path))
152
+ if asset.nil? || asset.sha != sha
153
+
123
154
  print "Uploading #{path}..."
124
- asset.delete if asset
125
- if response = Siteleaf::Asset.create({:site_id => site_id, :theme_id => theme.id, :file => File.new(path), :filename => path})
126
- updated_count += 1
127
- print "complete.\n"
155
+
156
+ static = !has_yaml_header?(path)
157
+ basename = ::File.basename(path)
158
+ basedir = ::File.dirname(path).split('/').first
159
+ ext = ::File.extname(path).sub('.', '')
160
+
161
+ response = if !static && markdown_ext.include?(ext) && basedir != '_uploads'
162
+
163
+ # handle content
164
+ metadata = {}
165
+ unless static
166
+ body, metadata = read_frontmatter(path)
167
+ end
168
+
169
+ clean_path = path.sub("#{basedir}/",'').sub(".#{ext}",'')
170
+ title = metadata.delete('title') || ::File.basename(clean_path)
171
+
172
+ attrs = {site_id: site.id, title: title, path: clean_path, static: static}
173
+ attrs[:body] = body if body && body != ""
174
+ attrs[:metadata] = metadata if metadata && !metadata.empty?
175
+ model = if basedir == '_drafts'
176
+ attrs[:visibility] = 'draft'
177
+ Siteleaf::Post
178
+ elsif basedir == '_posts'
179
+ attrs[:visibility] = (metadata['published'].delete == false) ? 'hidden' : 'visible'
180
+ Siteleaf::Post
181
+ elsif collection = collections.find {|c| c.basename == basedir }
182
+ attrs[:collection_id] = collection.id
183
+ Siteleaf::Document
184
+ else
185
+ attrs[:path] = path.sub(".#{ext}",'')
186
+ Siteleaf::Page
187
+ end
188
+
189
+ if asset && asset.is_a?(model)
190
+ attrs[:id] = asset.id
191
+ asset = model.new(attrs).save
192
+ else
193
+ asset.delete if asset
194
+ asset = model.create(attrs)
195
+ end
196
+
128
197
  else
129
- print "error.\n"
198
+
199
+ # handle assets
200
+ file = path
201
+ metadata = {}
202
+ unless static
203
+ body, metadata = read_frontmatter(path)
204
+ file = Tempfile.new(basename)
205
+ ::File.open(file, 'w:UTF-8') { |f| f.write(body) }
206
+ end
207
+
208
+ attrs = {site_id: site.id, file: ::File.new(path), path: path, static: static}
209
+ model = if basedir == '_uploads'
210
+ attrs[:path] = path.sub("#{basedir}/",'')
211
+ Siteleaf::Upload
212
+ else
213
+ Siteleaf::File
214
+ end
215
+
216
+ asset.delete if asset
217
+ asset = model.create(attrs)
218
+ if metadata && !metadata.empty?
219
+ asset.metadata = metadata
220
+ asset.save
221
+ end
222
+
223
+ end
224
+
225
+ if error = !response || response.error || response.message
226
+ print (error) ? "error: #{error}\n" : "error.\n"
130
227
  break
228
+ else
229
+ updated_count += 1
230
+ print "complete.\n"
131
231
  end
232
+
132
233
  end
133
234
  end
134
235
  end
135
-
236
+
136
237
  # check for old files
137
238
  missing_assets = []
138
- assets.each do |asset|
239
+ assets.each do |asset|
139
240
  missing_assets << asset if !paths.include?(asset.filename)
140
241
  end
141
242
  if missing_assets.empty?
142
- puts "=> #{updated_count} asset(s) uploaded.\n"
243
+ puts "=> #{updated_count} file(s) uploaded.\n"
143
244
  else
144
- print "=> #{updated_count} asset(s) uploaded. Delete the following #{missing_assets.size} unmatched asset(s)?\n"
245
+ print "=> #{updated_count} file(s) uploaded. Delete the following #{missing_assets.size} unmatched file(s)?\n"
145
246
  missing_assets.each do |asset|
146
247
  puts asset.filename
147
248
  end
@@ -152,7 +253,7 @@ def put_theme_assets(site_id)
152
253
  asset.delete
153
254
  print "complete.\n"
154
255
  end
155
- puts "=> #{missing_assets.size} asset(s) deleted.\n"
256
+ puts "=> #{missing_assets.size} file(s) deleted.\n"
156
257
  end
157
258
  end
158
259
  end
@@ -175,77 +276,18 @@ def publish(site_id, quiet = true)
175
276
  end
176
277
  end
177
278
 
178
- def export(site_id, posts_path = "posts", dir = 'export')
179
- posts_path = "posts" if posts_path == ""
180
-
181
- site = Siteleaf::Site.find(site_id)
182
- site.posts_path = posts_path
183
-
184
- export_uploads(site, dir)
185
- export_content(site, dir)
186
- export_config(site, dir)
279
+ def has_yaml_header?(file)
280
+ !!(File.open(file, 'rb') { |f| f.read(5) } =~ /\A---\r?\n/)
187
281
  end
188
282
 
189
- def export_config(site, dir = 'export')
190
- filename = site.filename
191
- print "Exporting #{filename}..."
192
-
193
- filename = File.join(dir, filename)
194
- open(filename, 'w:UTF-8') do |f|
195
- f.puts site.to_file(dir)
196
- end
197
-
198
- print "complete.\n"
199
- end
200
-
201
- def export_content(site, dir = 'export')
202
- pages = site.pages
203
-
204
- pages.each do |page|
205
- # export non-blank pages
206
- unless page.body.to_s == "" and page.meta.empty?
207
- filename = page.filename
208
- print "Exporting #{filename}..."
209
-
210
- filename = File.join(dir, filename)
211
- FileUtils.mkdir_p File.dirname(filename)
212
- open(filename, 'w:UTF-8') do |f|
213
- f.puts page.to_file(dir)
214
- end
215
-
216
- print "complete.\n"
217
- end
218
-
219
- page.posts.each do |post|
220
- filename = post.filename(site.posts_path)
221
- print "Exporting #{filename}..."
222
-
223
- filename = File.join(dir, filename)
224
- FileUtils.mkdir_p File.dirname(filename)
225
- open(filename, 'w:UTF-8') do |f|
226
- f.puts post.to_file(dir)
227
- end
228
-
229
- print "complete.\n"
230
- end
231
- end
232
- end
233
-
234
- def export_uploads(site, dir = 'export')
235
- if assets = site.assets
236
- assets.each do |asset|
237
- filename = File.join(dir, "_uploads", asset.filename)
238
- if !File.exist?(filename) or (asset.checksum != Digest::MD5.hexdigest(IO.binread(filename)))
239
- print "Exporting #{filename}..."
240
-
241
- file = open(asset.file['url'], 'r:UTF-8') { |f| f.read }
242
- FileUtils.mkdir_p(File.dirname(filename))
243
- File.open(filename, 'w:UTF-8') { |f| f.write(file) }
244
-
245
- print "complete.\n"
246
- end
247
- end
283
+ def read_frontmatter(file)
284
+ content = ::File.read(file)
285
+ metadata = {}
286
+ if content =~ /\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)/m
287
+ content = $POSTMATCH
288
+ metadata = YAML.load($1)
248
289
  end
290
+ return content, metadata
249
291
  end
250
292
 
251
293
  case ARGV[0]
@@ -253,13 +295,6 @@ when '-v', '--version', 'version'
253
295
  puts Siteleaf::VERSION
254
296
  when '-h', '--help', 'help'
255
297
  puts help
256
- when 's', 'server'
257
- if File.exist?('config.ru')
258
- port = ARGV[2] if %w[-p --port].include?(ARGV[1]) && ARGV[1]
259
- `rackup config.ru -p #{port || '9292'} >&2`
260
- else
261
- puts "No config found, run `siteleaf config yoursite.com`.\n"
262
- end
263
298
  when 'auth'
264
299
  auth true
265
300
  when 'c', 'config', 'setup'
@@ -274,60 +309,51 @@ when 'n', 'new'
274
309
  if auth != false
275
310
  if (site = Siteleaf::Site.create(:title => ARGV[1], :domain => ARGV[1])) && (!site.error)
276
311
  dir = ARGV.size >= 3 ? ARGV[2] : ARGV[1]
277
- FileUtils.mkdir_p dir
278
- Dir.chdir dir
312
+ Dir.mkdir(dir) unless ::File.directory?(dir)
313
+ Dir.chdir(dir)
279
314
  config site
280
315
  else
281
316
  puts "Could not create site `#{ARGV[1]}`.\n"
282
317
  end
283
318
  end
284
319
  when 'pull'
285
- case ARGV[1]
286
- when 'theme'
320
+ #case ARGV[1]
321
+ #when 'theme'
322
+ site_id = get_site_id
287
323
  if auth != false
288
- if site_id = get_site_id
289
- get_theme_assets(site_id)
324
+ if site_id
325
+ pull(site_id)
290
326
  else
291
327
  puts "Site not configured, run `siteleaf config yoursite.com`.\n"
292
328
  end
293
329
  end
294
- else
295
- puts "`#{ARGV[0]}` command not found.\n"
296
- end
330
+ #else
331
+ # puts "`#{ARGV[0]}` command not found.\n"
332
+ #end
297
333
  when 'push'
298
- case ARGV[1]
299
- when 'theme'
334
+ #case ARGV[1]
335
+ #when 'theme'
336
+ site_id = get_site_id
300
337
  if auth != false
301
- if site_id = get_site_id
302
- put_theme_assets(site_id)
338
+ if site_id
339
+ push(site_id)
303
340
  else
304
341
  puts "Site not configured, run `siteleaf config yoursite.com`.\n"
305
342
  end
306
343
  end
307
- else
308
- puts "`#{ARGV[0]}` command not found.\n"
309
- end
344
+ #else
345
+ # puts "`#{ARGV[0]}` command not found.\n"
346
+ #end
310
347
  when 'publish'
348
+ site_id = get_site_id
311
349
  if auth != false
312
350
  quiet = %w[-q --quiet].include?(ARGV[1]) && ARGV[1]
313
- if site_id = get_site_id
351
+ if site_id
314
352
  publish(site_id, quiet)
315
353
  else
316
354
  puts "Site not configured, run `siteleaf config yoursite.com`.\n"
317
355
  end
318
356
  end
319
- when 'export'
320
- if auth != false
321
- if site_id = get_site_id
322
- print 'Enter your main posts path (default "posts"): '
323
- posts_path = $stdin.gets.chomp
324
- dir = ARGV.size >= 2 ? ARGV[1] : 'export'
325
- FileUtils.mkdir_p dir
326
- export(site_id, posts_path, dir)
327
- else
328
- puts "Site not configured, run `siteleaf config yoursite.com`.\n"
329
- end
330
- end
331
357
  else
332
358
  puts "`#{ARGV[0]}` command not found.\n"
333
359
  puts help