artifact 0.3.1 → 0.3.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: 1c348cf5a979b4783fcc7dac983aa9303b6dcd4b
4
- data.tar.gz: 7ccaf7b5fc8a0de2e3e03475aec6984d91caa29a
3
+ metadata.gz: df6c17de9ae37b3707264d2f62414ed0fe9f8e9c
4
+ data.tar.gz: fcb141f55a2c48dfe223adea3ab46bec98bec9f3
5
5
  SHA512:
6
- metadata.gz: 65d5d7b47c54a0358677c94995c49048d197cceaa61f4c31917d1bf06922cc110fd941dc835a83a3fa7f4d68c097c15f0ede2fc45d50f57c8f1f02274e575707
7
- data.tar.gz: 00e6f8988cff7d4083e6f3af328bb94edb6747411c2bfdca3ce7452be0a426207d89fc5d14ced6046056062a3eab8980a0a2040deef5e4066605082307362fac
6
+ metadata.gz: 0d87193120f88d5d5a4b8bf8985fa4e62484836edfcc8ff8f0af29f1692fd7b952623ac83721c6f601248d280d39068ca75bd41551cc1735ad78747368c30455
7
+ data.tar.gz: fe4094136b744706f109e7096b0d9e60dbe1eeadab3d738ab400558ba7c57e94eae8cb2d7b272feca9534e896d3dab0b7a929f66a585eb3705b97b2501f50a2e
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014 Tomás Pollak
1
+ Copyright (c) 2014-2016 Tomas Pollak
2
2
 
3
3
  MIT License
4
4
 
data/bin/artifact CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'artifact/cli'
3
+ require_relative '../lib/artifact/cli'
4
4
  Artifact::CLI.start
data/lib/artifact.rb CHANGED
@@ -69,7 +69,7 @@ module Artifact
69
69
  attr_accessor *%w(
70
70
  root source_root posts_path drafts_path uploads_path
71
71
  directory_indexes rebuild_args author_name author_email
72
- before_update after_update
72
+ before_update after_update before_push after_push
73
73
  )
74
74
 
75
75
  def initialize
@@ -147,6 +147,8 @@ module Artifact
147
147
 
148
148
  class Repo
149
149
 
150
+ class SyncError < RuntimeError; end
151
+
150
152
  def initialize(full_path)
151
153
  @root = full_path
152
154
  @git = Rugged::Repository.new(full_path)
@@ -187,6 +189,13 @@ module Artifact
187
189
  !!file_status(path) rescue false
188
190
  end
189
191
 
192
+ def sync!
193
+ code, out = pull
194
+ raise SyncError.new("Error when pulling changes: #{out.strip}") unless code == 0
195
+ code, out = push
196
+ raise SyncError.new("Error when pushing changes: #{out.strip}") unless code == 0
197
+ end
198
+
190
199
  private
191
200
 
192
201
  def new_file?(file_path)
@@ -206,6 +215,8 @@ module Artifact
206
215
  # the author signature is a Hash containing :name, :email of the author
207
216
  # and :time of the change.
208
217
  def write_commit(message, author)
218
+ Artifact.run_hook(:before_commit, message)
219
+
209
220
  author[:time] = Time.now
210
221
  commit_sha = Rugged::Commit.create(@git,
211
222
  :author => author,
@@ -215,6 +226,37 @@ module Artifact
215
226
  :tree => @git.index.write_tree,
216
227
  :update_ref => 'HEAD'
217
228
  )
229
+
230
+ Artifact.run_hook(:after_commit, message)
231
+ end
232
+
233
+ def pull
234
+ # updated = false
235
+ code, out = nil, nil
236
+ Dir.chdir(@root) do
237
+ out = `git pull --rebase`
238
+ code = $?
239
+ # updated = out.strip != 'Current branch master is up to date.'
240
+ # updated = res.strip != 'Already up-to-date.'
241
+ end
242
+ # updated
243
+ return code, out
244
+ end
245
+
246
+ def push
247
+ Artifact.run_hook(:before_push)
248
+
249
+ # updated = false
250
+ code, out = nil, nil
251
+ Dir.chdir(@root) do
252
+ out = `git push`
253
+ code = $?
254
+ # updated = out.strip != 'Everything up-to-date'
255
+ end
256
+
257
+ Artifact.run_hook(:after_push)
258
+ # updated
259
+ return code, out
218
260
  end
219
261
 
220
262
  end
@@ -0,0 +1,12 @@
1
+ module Artifact
2
+
3
+ class CLI
4
+
5
+ def self.start
6
+ puts "Not ready yet, sorry"
7
+ exit 1
8
+ end
9
+
10
+ end
11
+
12
+ end
@@ -67,6 +67,15 @@ module Artifact
67
67
  redirect to('/')
68
68
  end
69
69
 
70
+ post '/sync' do
71
+ begin
72
+ Artifact.repo.sync!
73
+ redirect to('/')
74
+ rescue Artifact::Repo::SyncError => e
75
+ redirect to('/?error=' + e.message)
76
+ end
77
+ end
78
+
70
79
  get '/search' do
71
80
  if params[:q].present?
72
81
  normalized = params[:q].gsub(' ', '-').downcase
@@ -241,7 +250,7 @@ module Artifact
241
250
  Artifact.middleman.sitemap.rebuild_resource_list!
242
251
 
243
252
  if Artifact.middleman.extensions[:frontmatter]
244
- puts "Flushing frontmatter cache..."
253
+ # puts "Flushing frontmatter cache..."
245
254
  Artifact.middleman.extensions[:frontmatter].flush_cache!
246
255
  end
247
256
  end
@@ -1,3 +1,3 @@
1
1
  module Artifact
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
@@ -12,7 +12,7 @@
12
12
  <meta name="author" content="Fork Ltd.">
13
13
 
14
14
  <!--[if lt IE 9]><script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
15
- <link href='http://fonts.googleapis.com/css?family=Lato:300,900|Asap|Titillium+Web' rel='stylesheet' type='text/css' />
15
+ <link href='http://fonts.googleapis.com/css?family=Lato:300,900|Asap|Titillium+Web' rel='stylesheet' type='text/css' />
16
16
  <link rel="stylesheet" href="http://tomas.github.io/base.css/build/base-min.css" type="text/css" media="screen" />
17
17
  <link rel="stylesheet" href="<%= url('/css/main.css') %>" type="text/css" media="screen" charset="utf-8" />
18
18
 
@@ -10,6 +10,7 @@
10
10
  type="text"
11
11
  name="meta[title]"
12
12
  value="<%= @post.title %>"
13
+ maxlength="120"
13
14
  placeholder="Title here" />
14
15
 
15
16
  <textarea
@@ -7,6 +7,10 @@
7
7
  <ul class="right menu menu-horizontal">
8
8
  <li><a target="_blank" class="btn" href="/">View site</a></li>
9
9
 
10
+ <form method="post" class="inline" action="<%= url('/sync') %>">
11
+ <li><button class="btn btn-success" type="submit">Sync repo</button></li>
12
+ </form>
13
+
10
14
  <form method="post" class="inline" action="<%= url('/build') %>">
11
15
  <li><button class="btn btn-danger" type="submit">Rebuild!</button></li>
12
16
  </form>
data/scaffold/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'artifact', path: '..'
4
+ gem 'middleman'
5
+ gem 'middleman-blog'
6
+
@@ -0,0 +1,29 @@
1
+ # you would normally run this only on development
2
+ # then upload and rebuild your website using `bundle exec middleman build`
3
+
4
+ # require 'bundler/setup'
5
+ require 'middleman'
6
+ require 'middleman-blog'
7
+
8
+ require 'artifact'
9
+ require 'artifact/middleman'
10
+
11
+ # all available options for artifact
12
+ Artifact.configure do |config|
13
+ config.source_root = 'source' # everything else should be under this dir
14
+ config.uploads_path = 'uploads'
15
+ config.drafts_path = 'drafts'
16
+ config.posts_path = 'posts'
17
+ config.author_name = 'Your Name'
18
+ config.author_email = 'your@email.com'
19
+ config.rebuild_args = '--no-clean'
20
+ end
21
+
22
+ map('/admin') do
23
+ run Artifact::Middleman
24
+ end
25
+
26
+ map('/') do
27
+ use WhateverMiddleware
28
+ run Middleman::Application.server # so we can see the live website
29
+ end
@@ -0,0 +1,7 @@
1
+ <html>
2
+ <head>
3
+ <title>Test site</title>
4
+ </head>
5
+ <body>
6
+ <%= yield %>
7
+ </html>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artifact
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomás Pollak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-11 00:00:00.000000000 Z
11
+ date: 2016-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -125,6 +125,7 @@ files:
125
125
  - bin/artifact
126
126
  - lib/artifact.rb
127
127
  - lib/artifact/app.rb
128
+ - lib/artifact/cli.rb
128
129
  - lib/artifact/files.rb
129
130
  - lib/artifact/helpers.rb
130
131
  - lib/artifact/middleman.rb
@@ -151,6 +152,9 @@ files:
151
152
  - lib/artifact/views/shared/_menu.erb
152
153
  - lib/artifact/views/uploads/_form.erb
153
154
  - lib/artifact/views/uploads/_list.erb
155
+ - scaffold/Gemfile
156
+ - scaffold/config.ru
157
+ - scaffold/source/layout.html
154
158
  homepage: ''
155
159
  licenses:
156
160
  - MIT
@@ -171,9 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
175
  version: '0'
172
176
  requirements: []
173
177
  rubyforge_project:
174
- rubygems_version: 2.2.0
178
+ rubygems_version: 2.4.5
175
179
  signing_key:
176
180
  specification_version: 4
177
181
  summary: Frontend UI for git blogging.
178
182
  test_files: []
179
- has_rdoc: