siteleaf 1.0.11 → 2.0.0.pre.beta1

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
- 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