jekyll_ghost_importer 0.2.0 → 0.3.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 +4 -4
- data/bin/jekyll_ghost_importer +13 -2
- data/features/fixtures/version-003.json +130 -0
- data/features/import_posts.feature +27 -0
- data/features/step_definitions/backup_files.rb +4 -0
- data/lib/jekyll_ghost_importer.rb +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1482339e32652c4e370beafe41755bc0f4f03da
|
4
|
+
data.tar.gz: 91bdfad5e617caaebd3873f283dce011e6d05620
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf1a62a1172c46ee499571652c7355f659d3feae45116d0d6e47f10c2356f64baba5d43b43e856f7df78e438b29b33c96798a0342d309fe0af5c535b8db32e58
|
7
|
+
data.tar.gz: 026f9c9da18f84e2ef63e48fd422d054000896f99078bf0ff8eec74484d8d59ca79e7b8d8b719737a673c57bd60f70bc10f8dcc27fa5ecb301d36d61f9fccd72
|
data/bin/jekyll_ghost_importer
CHANGED
@@ -16,8 +16,15 @@ else
|
|
16
16
|
posts = json[:db].first[:data][:posts]
|
17
17
|
end
|
18
18
|
|
19
|
+
@imported = Hash.new(0)
|
20
|
+
|
19
21
|
posts.each do |post|
|
20
|
-
date =
|
22
|
+
date = case post[:published_at]
|
23
|
+
when String
|
24
|
+
DateTime.parse(post[:published_at])
|
25
|
+
when Integer
|
26
|
+
Time.at(post[:published_at] / 1000).utc.to_datetime
|
27
|
+
end
|
21
28
|
slug = post[:slug]
|
22
29
|
front_matter_hash = {
|
23
30
|
'layout' => "post",
|
@@ -34,6 +41,10 @@ posts.each do |post|
|
|
34
41
|
end
|
35
42
|
folder = draft ? '_drafts' : '_posts'
|
36
43
|
filename = File.join folder, basename
|
37
|
-
puts "Importing filename
|
44
|
+
puts "Importing #{ filename }"
|
38
45
|
File.write filename, body
|
46
|
+
@imported[:posts] += 1
|
47
|
+
@imported[:drafts] += 1 if draft
|
39
48
|
end
|
49
|
+
|
50
|
+
puts "#{ @imported[:posts] } posts imported ( #{ @imported[:drafts] } draft )"
|
@@ -0,0 +1,130 @@
|
|
1
|
+
{
|
2
|
+
"db": [
|
3
|
+
{
|
4
|
+
"meta": {
|
5
|
+
"exported_on": 1424346829618,
|
6
|
+
"version": "003"
|
7
|
+
},
|
8
|
+
"data": {
|
9
|
+
"posts": [
|
10
|
+
{
|
11
|
+
"id": 1,
|
12
|
+
"uuid": "ccb64228-dfbd-49e6-a02f-f4cf4651c4fd",
|
13
|
+
"title": "Welcome to Ghost",
|
14
|
+
"slug": "welcome-to-ghost",
|
15
|
+
"markdown": "You're live!",
|
16
|
+
"html": "<p>You're live!</p>",
|
17
|
+
"image": null,
|
18
|
+
"featured": 0,
|
19
|
+
"page": 0,
|
20
|
+
"status": "published",
|
21
|
+
"language": "en_US",
|
22
|
+
"meta_title": null,
|
23
|
+
"meta_description": null,
|
24
|
+
"author_id": 1,
|
25
|
+
"created_at": 1424346554951,
|
26
|
+
"created_by": 1,
|
27
|
+
"updated_at": 1424346554951,
|
28
|
+
"updated_by": 1,
|
29
|
+
"published_at": 1424346554966,
|
30
|
+
"published_by": 1
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"id": 2,
|
34
|
+
"uuid": "287617c1-572e-43e1-8a3c-f7ad0d7bb71e",
|
35
|
+
"title": "new_post",
|
36
|
+
"slug": "new_post",
|
37
|
+
"markdown": "some test text\n\n some code\n \nfarewell",
|
38
|
+
"html": "<p>some test text</p>\n\n<pre><code>some code\n</code></pre>\n\n<p>farewell</p>",
|
39
|
+
"image": null,
|
40
|
+
"featured": 0,
|
41
|
+
"page": 0,
|
42
|
+
"status": "published",
|
43
|
+
"language": "en_US",
|
44
|
+
"meta_title": null,
|
45
|
+
"meta_description": null,
|
46
|
+
"author_id": 1,
|
47
|
+
"created_at": 1424346744945,
|
48
|
+
"created_by": 1,
|
49
|
+
"updated_at": 1424346784919,
|
50
|
+
"updated_by": 1,
|
51
|
+
"published_at": 1424346784919,
|
52
|
+
"published_by": 1
|
53
|
+
},
|
54
|
+
{
|
55
|
+
"id": 3,
|
56
|
+
"uuid": "7beab6be-116a-45da-8a0d-7143ef74f952",
|
57
|
+
"title": "test draft",
|
58
|
+
"slug": "test-draft",
|
59
|
+
"markdown": "Something here",
|
60
|
+
"html": "<p>Something here</p>",
|
61
|
+
"image": null,
|
62
|
+
"featured": 0,
|
63
|
+
"page": 0,
|
64
|
+
"status": "draft",
|
65
|
+
"language": "en_US",
|
66
|
+
"meta_title": null,
|
67
|
+
"meta_description": null,
|
68
|
+
"author_id": 1,
|
69
|
+
"created_at": 1424346793572,
|
70
|
+
"created_by": 1,
|
71
|
+
"updated_at": 1424346812457,
|
72
|
+
"updated_by": 1,
|
73
|
+
"published_at": null,
|
74
|
+
"published_by": null
|
75
|
+
}
|
76
|
+
],
|
77
|
+
"users": [
|
78
|
+
{
|
79
|
+
"id": 1,
|
80
|
+
"uuid": "6a013e8f-24d3-4c77-901a-7e57f6537f47",
|
81
|
+
"name": "test test2",
|
82
|
+
"slug": "test",
|
83
|
+
"password": "some_password",
|
84
|
+
"email": "my_email",
|
85
|
+
"image": null,
|
86
|
+
"cover": null,
|
87
|
+
"bio": null,
|
88
|
+
"website": null,
|
89
|
+
"location": null,
|
90
|
+
"accessibility": null,
|
91
|
+
"status": "active",
|
92
|
+
"language": "en_US",
|
93
|
+
"meta_title": null,
|
94
|
+
"meta_description": null,
|
95
|
+
"last_login": 1424346712870,
|
96
|
+
"created_at": 1424346562473,
|
97
|
+
"created_by": 1,
|
98
|
+
"updated_at": 1424346712870,
|
99
|
+
"updated_by": 1
|
100
|
+
}
|
101
|
+
],
|
102
|
+
"tags": [
|
103
|
+
{
|
104
|
+
"id": 1,
|
105
|
+
"uuid": "befcb6c7-c777-4a65-a272-6e2577cade61",
|
106
|
+
"name": "Getting Started",
|
107
|
+
"slug": "getting-started",
|
108
|
+
"description": null,
|
109
|
+
"image": null,
|
110
|
+
"hidden": 0,
|
111
|
+
"parent_id": null,
|
112
|
+
"meta_title": null,
|
113
|
+
"meta_description": null,
|
114
|
+
"created_at": 1424346554967,
|
115
|
+
"created_by": 1,
|
116
|
+
"updated_at": 1424346554967,
|
117
|
+
"updated_by": 1
|
118
|
+
}
|
119
|
+
],
|
120
|
+
"posts_tags": [
|
121
|
+
{
|
122
|
+
"id": 1,
|
123
|
+
"post_id": 1,
|
124
|
+
"tag_id": 1
|
125
|
+
}
|
126
|
+
]
|
127
|
+
}
|
128
|
+
}
|
129
|
+
]
|
130
|
+
}
|
@@ -234,3 +234,30 @@ Feature: Import posts
|
|
234
234
|
"""
|
235
235
|
Something here
|
236
236
|
"""
|
237
|
+
|
238
|
+
Scenario: Import a backup file with a new format
|
239
|
+
Given a ghost backup file version 003 with some sample posts
|
240
|
+
When I run `jekyll_ghost_importer GhostBackup.json`
|
241
|
+
Then it should pass with:
|
242
|
+
"""
|
243
|
+
3 posts imported ( 1 draft )
|
244
|
+
"""
|
245
|
+
And a directory named "_posts" should exist
|
246
|
+
And the following files should exist:
|
247
|
+
| _posts/2015-02-19-welcome-to-ghost.markdown |
|
248
|
+
| _posts/2015-02-19-new_post.markdown |
|
249
|
+
And the file "_posts/2015-02-19-welcome-to-ghost.markdown" should contain:
|
250
|
+
"""
|
251
|
+
---
|
252
|
+
layout: post
|
253
|
+
title: Welcome to Ghost
|
254
|
+
date: '2015-02-19 11:49:14'
|
255
|
+
---
|
256
|
+
|
257
|
+
You're live!
|
258
|
+
"""
|
259
|
+
And a directory named "_drafts" should exist
|
260
|
+
And the file "_drafts/test-draft.markdown" should contain:
|
261
|
+
"""
|
262
|
+
Something here
|
263
|
+
"""
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll_ghost_importer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eloy Espinaco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -110,7 +110,9 @@ files:
|
|
110
110
|
- README.md
|
111
111
|
- Rakefile
|
112
112
|
- bin/jekyll_ghost_importer
|
113
|
+
- features/fixtures/version-003.json
|
113
114
|
- features/import_posts.feature
|
115
|
+
- features/step_definitions/backup_files.rb
|
114
116
|
- features/support/requires.rb
|
115
117
|
- jekyll_ghost_importer.gemspec
|
116
118
|
- lib/jekyll_ghost_importer.rb
|
@@ -134,11 +136,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
136
|
version: '0'
|
135
137
|
requirements: []
|
136
138
|
rubyforge_project:
|
137
|
-
rubygems_version: 2.
|
139
|
+
rubygems_version: 2.4.5
|
138
140
|
signing_key:
|
139
141
|
specification_version: 4
|
140
142
|
summary: Import your posts from a ghost backup file.
|
141
143
|
test_files:
|
144
|
+
- features/fixtures/version-003.json
|
142
145
|
- features/import_posts.feature
|
146
|
+
- features/step_definitions/backup_files.rb
|
143
147
|
- features/support/requires.rb
|
144
148
|
has_rdoc:
|