writr 1.7.0 → 1.8.5
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.
- package/README.md +18 -4
- package/bin/writr +1 -5
- package/dist/cache.js +0 -2
- package/dist/cache.js.map +1 -1
- package/dist/config.d.ts +4 -1
- package/dist/config.js +6 -2
- package/dist/config.js.map +1 -1
- package/dist/data/dataService.js +7 -9
- package/dist/data/dataService.js.map +1 -1
- package/dist/data/fileDataProvider.js +14 -12
- package/dist/data/fileDataProvider.js.map +1 -1
- package/dist/generator.d.ts +8 -0
- package/dist/generator.js +58 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +1 -4
- package/dist/index.js +72 -57
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts +6 -0
- package/dist/log.js +17 -0
- package/dist/log.js.map +1 -0
- package/dist/migrate/ghostMigrationProvider.d.ts +9 -0
- package/dist/migrate/ghostMigrationProvider.js +67 -0
- package/dist/migrate/ghostMigrationProvider.js.map +1 -0
- package/dist/migrate/jekyllMigrationProvider.d.ts +4 -0
- package/dist/migrate/jekyllMigrationProvider.js +15 -0
- package/dist/migrate/jekyllMigrationProvider.js.map +1 -0
- package/dist/migrate/mediumMigrationProvider.d.ts +7 -0
- package/dist/migrate/mediumMigrationProvider.js +30 -0
- package/dist/migrate/mediumMigrationProvider.js.map +1 -0
- package/dist/migrate/migrationProviderInterface.d.ts +3 -0
- package/dist/migrate/migrationProviderInterface.js +3 -0
- package/dist/migrate/migrationProviderInterface.js.map +1 -0
- package/dist/migrate/wordpressMigrationProvider.d.ts +12 -0
- package/dist/migrate/wordpressMigrationProvider.js +105 -0
- package/dist/migrate/wordpressMigrationProvider.js.map +1 -0
- package/dist/migrate.d.ts +6 -0
- package/dist/migrate.js +38 -0
- package/dist/migrate.js.map +1 -0
- package/dist/post.js +2 -4
- package/dist/post.js.map +1 -1
- package/dist/render/atomRenderProvider.js +3 -3
- package/dist/render/atomRenderProvider.js.map +1 -1
- package/dist/render/htmRenderlProvider.js +12 -12
- package/dist/render/htmRenderlProvider.js.map +1 -1
- package/dist/render/imageRenderProvider.js +3 -3
- package/dist/render/imageRenderProvider.js.map +1 -1
- package/dist/render/jsonRenderProvider.js +4 -6
- package/dist/render/jsonRenderProvider.js.map +1 -1
- package/dist/serve.d.ts +16 -0
- package/dist/serve.js +33 -0
- package/dist/serve.js.map +1 -0
- package/dist/storage/fileStorageProvider.d.ts +2 -3
- package/dist/storage/fileStorageProvider.js +12 -22
- package/dist/storage/fileStorageProvider.js.map +1 -1
- package/dist/storage/storageProviderInterface.d.ts +1 -0
- package/dist/storage/storageService.d.ts +3 -4
- package/dist/storage/storageService.js +5 -3
- package/dist/storage/storageService.js.map +1 -1
- package/dist/tag.js +3 -4
- package/dist/tag.js.map +1 -1
- package/dist/utils/parser.d.ts +5 -0
- package/dist/utils/parser.js +41 -0
- package/dist/utils/parser.js.map +1 -0
- package/dist/utils/setup.d.ts +8 -0
- package/dist/utils/setup.js +79 -0
- package/dist/utils/setup.js.map +1 -0
- package/init/article-complex.md +40 -0
- package/init/article-ejs.md +40 -0
- package/init/article-unpublished.md +11 -0
- package/init/article1-simple.md +13 -0
- package/init/article1.md +11 -0
- package/init/article2.md +14 -0
- package/init/big-content.md +11 -0
- package/init/config.json +9 -0
- package/init/images/Introducing Docula 1.png +0 -0
- package/init/images/Introducing Docula 2.jpeg +0 -0
- package/init/images/Introducing Docula 3.png +0 -0
- package/init/images/Introducing Docula 4.png +0 -0
- package/init/permalink-test.md +13 -0
- package/init/templates/index.hjs +13 -0
- package/init/templates/partials/header.hjs +2 -0
- package/init/templates/post.hjs +19 -0
- package/init/templates/post2.hjs +17 -0
- package/init/templates/post3.ejs +7 -0
- package/init/templates/tag.hjs +9 -0
- package/package.json +24 -18
package/README.md
CHANGED
|
@@ -19,6 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
## 2. Setup your directory (look at /blog_example for how to do this)
|
|
21
21
|
|
|
22
|
+
> writr init
|
|
23
|
+
|
|
22
24
|
```
|
|
23
25
|
blog/*.md //markdown files in the folder root
|
|
24
26
|
blog/images //images for the blog
|
|
@@ -26,11 +28,21 @@ blog/config.json //config file (optional)
|
|
|
26
28
|
blog/templates //template directory for your index, post, and tag
|
|
27
29
|
```
|
|
28
30
|
|
|
29
|
-
## 3.
|
|
31
|
+
## 3. Create your first post
|
|
32
|
+
|
|
33
|
+
> writr new
|
|
34
|
+
|
|
35
|
+
This will allow you to answer a couple questions to setup your first blog post.
|
|
36
|
+
|
|
37
|
+
## 4. Run Writr on it with defaults. This will output everything to ./blog_output
|
|
30
38
|
|
|
31
|
-
> writr
|
|
39
|
+
> writr
|
|
32
40
|
|
|
33
|
-
##
|
|
41
|
+
## 5. You can serve your blog with a simple webserver
|
|
42
|
+
|
|
43
|
+
> writr serve
|
|
44
|
+
|
|
45
|
+
## 4. Integrate your blog with Express
|
|
34
46
|
|
|
35
47
|
Then in express map your `blog_output` via static files:
|
|
36
48
|
|
|
@@ -49,6 +61,9 @@ app.use("/blog", express.static(path.join(__dirname, "blog_output")))
|
|
|
49
61
|
* -o, --output: Path of where to output the generated blog
|
|
50
62
|
* -r, --render: What do you want rendered such as html or json (example --render html,json)
|
|
51
63
|
* -c, --config: Configuration file location if different than 'path'
|
|
64
|
+
* init: Initialize a new blog
|
|
65
|
+
* new: Create a new blog post
|
|
66
|
+
* serve: Serve the blog. You can also specify a port with --port and --watch for hot reloading
|
|
52
67
|
|
|
53
68
|
## Templates
|
|
54
69
|
|
|
@@ -165,6 +180,5 @@ To set it globally you can set it in the `config.json` by setting the `permaLink
|
|
|
165
180
|
}
|
|
166
181
|
```
|
|
167
182
|
|
|
168
|
-
|
|
169
183
|
## Markdown
|
|
170
184
|
To learn more about Markdown go here: https://markdownguide.org
|
package/bin/writr
CHANGED
package/dist/cache.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Cache = void 0;
|
|
4
|
-
const config_1 = require("./config");
|
|
5
4
|
const post_1 = require("./post");
|
|
6
5
|
const tag_1 = require("./tag");
|
|
7
6
|
const Keyv = require("keyv");
|
|
8
7
|
class Cache {
|
|
9
8
|
constructor(config) {
|
|
10
|
-
config = new config_1.Config();
|
|
11
9
|
this.cache = new Keyv({ ttl: config.cache.ttl, namespace: "data-cache" });
|
|
12
10
|
}
|
|
13
11
|
//cache
|
package/dist/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { ConsoleMessage } from "./log";
|
|
1
2
|
export declare class Config {
|
|
2
3
|
cache: ConfigCache;
|
|
3
|
-
log:
|
|
4
|
+
log: ConsoleMessage;
|
|
4
5
|
program: any;
|
|
5
6
|
provider: any;
|
|
6
7
|
render: Array<string>;
|
|
@@ -12,10 +13,12 @@ export declare class Config {
|
|
|
12
13
|
authorEmail: string;
|
|
13
14
|
indexCount: number;
|
|
14
15
|
permalink: string;
|
|
16
|
+
params: Record<string, string>;
|
|
15
17
|
constructor(config?: any);
|
|
16
18
|
loadPath(path: string): boolean;
|
|
17
19
|
loadConfig(filePath: string): boolean;
|
|
18
20
|
loadProgram(program: any): void;
|
|
21
|
+
loadParams(params: Record<string, any>): void;
|
|
19
22
|
parse(obj: any): void;
|
|
20
23
|
}
|
|
21
24
|
export declare class ConfigCache {
|
package/dist/config.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConfigCache = exports.Config = void 0;
|
|
4
4
|
const fs = require("fs-extra");
|
|
5
|
-
const
|
|
5
|
+
const log_1 = require("./log");
|
|
6
6
|
class Config {
|
|
7
7
|
constructor(config = undefined) {
|
|
8
8
|
this.cache = new ConfigCache();
|
|
9
|
-
this.log =
|
|
9
|
+
this.log = new log_1.ConsoleMessage();
|
|
10
10
|
this.program = {};
|
|
11
11
|
this.provider = {};
|
|
12
12
|
this.render = ["html", "json", "atom"];
|
|
@@ -18,6 +18,7 @@ class Config {
|
|
|
18
18
|
this.authorEmail = "";
|
|
19
19
|
this.indexCount = 20;
|
|
20
20
|
this.permalink = "simple";
|
|
21
|
+
this.params = {};
|
|
21
22
|
//set default for fileProvider
|
|
22
23
|
this.provider.name = "file";
|
|
23
24
|
if (config) {
|
|
@@ -45,6 +46,9 @@ class Config {
|
|
|
45
46
|
this.program = program;
|
|
46
47
|
this.parse(this.program);
|
|
47
48
|
}
|
|
49
|
+
loadParams(params) {
|
|
50
|
+
this.params = params;
|
|
51
|
+
}
|
|
48
52
|
parse(obj) {
|
|
49
53
|
if (obj) {
|
|
50
54
|
if (obj.render) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/data/dataService.js
CHANGED
|
@@ -10,8 +10,7 @@ class DataService {
|
|
|
10
10
|
}
|
|
11
11
|
//posts
|
|
12
12
|
async getPost(id) {
|
|
13
|
-
let result =
|
|
14
|
-
result = await this.cache.getPost(id);
|
|
13
|
+
let result = await this.cache.getPost(id);
|
|
15
14
|
if (!result) {
|
|
16
15
|
result = await this.getProvider().getPost(id);
|
|
17
16
|
if (result) {
|
|
@@ -21,7 +20,7 @@ class DataService {
|
|
|
21
20
|
return result;
|
|
22
21
|
}
|
|
23
22
|
async getPosts() {
|
|
24
|
-
let result
|
|
23
|
+
let result;
|
|
25
24
|
let cacheKey = "get-posts";
|
|
26
25
|
let posts = await this.cache.getPosts(cacheKey);
|
|
27
26
|
if (!posts) {
|
|
@@ -38,7 +37,7 @@ class DataService {
|
|
|
38
37
|
return result;
|
|
39
38
|
}
|
|
40
39
|
async getPublishedPosts() {
|
|
41
|
-
let result
|
|
40
|
+
let result;
|
|
42
41
|
let cacheKey = "get-published-posts";
|
|
43
42
|
let posts = await this.cache.getPosts(cacheKey);
|
|
44
43
|
if (!posts) {
|
|
@@ -82,8 +81,7 @@ class DataService {
|
|
|
82
81
|
}
|
|
83
82
|
//tags
|
|
84
83
|
async getTag(name) {
|
|
85
|
-
let result =
|
|
86
|
-
result = await this.cache.getTag(name);
|
|
84
|
+
let result = await this.cache.getTag(name);
|
|
87
85
|
if (!result) {
|
|
88
86
|
result = await this.getProvider().getTag(name);
|
|
89
87
|
if (result) {
|
|
@@ -93,7 +91,7 @@ class DataService {
|
|
|
93
91
|
return result;
|
|
94
92
|
}
|
|
95
93
|
async getTags() {
|
|
96
|
-
let result
|
|
94
|
+
let result;
|
|
97
95
|
let cacheKey = "get-tags";
|
|
98
96
|
let tags = await this.cache.getTags(cacheKey);
|
|
99
97
|
if (!tags) {
|
|
@@ -109,7 +107,7 @@ class DataService {
|
|
|
109
107
|
return result;
|
|
110
108
|
}
|
|
111
109
|
async getPublishedTags() {
|
|
112
|
-
let result
|
|
110
|
+
let result;
|
|
113
111
|
let cacheKey = "get-published-tags";
|
|
114
112
|
let tags = await this.cache.getTags(cacheKey);
|
|
115
113
|
if (!tags) {
|
|
@@ -125,7 +123,7 @@ class DataService {
|
|
|
125
123
|
return result;
|
|
126
124
|
}
|
|
127
125
|
getProvider() {
|
|
128
|
-
let result
|
|
126
|
+
let result;
|
|
129
127
|
switch (this.config.provider.name) {
|
|
130
128
|
default:
|
|
131
129
|
result = new fileDataProvider_1.FileDataProvider();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataService.js","sourceRoot":"","sources":["../../src/data/dataService.ts"],"names":[],"mappings":";;;AAIA,yDAAsD;AACtD,oCAAiC;AAEjC,MAAa,WAAW;IAItB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,OAAO;IACP,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,IAAI,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"dataService.js","sourceRoot":"","sources":["../../src/data/dataService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,13 +4,13 @@ exports.FileDataProvider = void 0;
|
|
|
4
4
|
const post_1 = require("../post");
|
|
5
5
|
const tag_1 = require("../tag");
|
|
6
6
|
const fs = require("fs-extra");
|
|
7
|
-
const winston_1 = require("winston");
|
|
8
7
|
const matter = require("gray-matter");
|
|
8
|
+
const log_1 = require("../log");
|
|
9
9
|
class FileDataProvider {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.__postPath = "";
|
|
12
12
|
this.__posts = [];
|
|
13
|
-
this.log =
|
|
13
|
+
this.log = new log_1.ConsoleMessage();
|
|
14
14
|
}
|
|
15
15
|
init(config) {
|
|
16
16
|
if (config.path) {
|
|
@@ -28,19 +28,21 @@ class FileDataProvider {
|
|
|
28
28
|
return result;
|
|
29
29
|
}
|
|
30
30
|
async getPosts() {
|
|
31
|
-
let result
|
|
32
|
-
|
|
31
|
+
let result;
|
|
32
|
+
const supportedExtensions = ['.md', '.markdown'];
|
|
33
|
+
const hasExtension = (file, extensions) => {
|
|
34
|
+
return extensions.some(extension => file.toLowerCase().endsWith(extension));
|
|
35
|
+
};
|
|
36
|
+
if (this.__posts.length === 0) {
|
|
33
37
|
let directory = this.__postPath;
|
|
34
|
-
if (
|
|
35
|
-
let files =
|
|
36
|
-
for (
|
|
37
|
-
|
|
38
|
-
if (file.indexOf(".md") > 0) {
|
|
38
|
+
if (fs.existsSync(directory)) {
|
|
39
|
+
let files = fs.readdirSync(directory);
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
if (hasExtension(file, supportedExtensions)) {
|
|
39
42
|
let filePath = directory + "/" + file;
|
|
40
43
|
let post = await this.parsePost(filePath);
|
|
41
|
-
if (post)
|
|
44
|
+
if (post)
|
|
42
45
|
this.__posts.push(post);
|
|
43
|
-
}
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -98,7 +100,7 @@ class FileDataProvider {
|
|
|
98
100
|
return key.toLowerCase().trim();
|
|
99
101
|
}
|
|
100
102
|
async parsePost(filePath) {
|
|
101
|
-
let result
|
|
103
|
+
let result;
|
|
102
104
|
if (await fs.pathExists(filePath)) {
|
|
103
105
|
result = new post_1.Post();
|
|
104
106
|
let buff = await fs.readFile(filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileDataProvider.js","sourceRoot":"","sources":["../../src/data/fileDataProvider.ts"],"names":[],"mappings":";;;AAAA,kCAA+B;AAC/B,gCAA6B;AAG7B,+BAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"fileDataProvider.js","sourceRoot":"","sources":["../../src/data/fileDataProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SiteGenerator = void 0;
|
|
4
|
+
const fs = require("fs-extra");
|
|
5
|
+
const htmRenderlProvider_1 = require("./render/htmRenderlProvider");
|
|
6
|
+
const jsonRenderProvider_1 = require("./render/jsonRenderProvider");
|
|
7
|
+
const atomRenderProvider_1 = require("./render/atomRenderProvider");
|
|
8
|
+
const imageRenderProvider_1 = require("./render/imageRenderProvider");
|
|
9
|
+
const dataService_1 = require("./data/dataService");
|
|
10
|
+
const config_1 = require("./config");
|
|
11
|
+
class SiteGenerator {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
const params = options.opts();
|
|
14
|
+
this.config = new config_1.Config();
|
|
15
|
+
if (params.config) {
|
|
16
|
+
this.config.loadConfig(params.config);
|
|
17
|
+
}
|
|
18
|
+
if (params.path) {
|
|
19
|
+
this.config.loadPath(params.path);
|
|
20
|
+
}
|
|
21
|
+
if (params) {
|
|
22
|
+
this.config.loadParams(params);
|
|
23
|
+
}
|
|
24
|
+
this.config.loadProgram(options);
|
|
25
|
+
this.data = new dataService_1.DataService(this.config);
|
|
26
|
+
}
|
|
27
|
+
async run() {
|
|
28
|
+
let result = true;
|
|
29
|
+
if (this.data === undefined || this.config === undefined) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
if (fs.existsSync(this.config.output)) {
|
|
33
|
+
fs.removeSync(this.config.output);
|
|
34
|
+
}
|
|
35
|
+
let render = true;
|
|
36
|
+
for (let i = 0; i < this.config.render.length; i++) {
|
|
37
|
+
let type = this.config.render[i];
|
|
38
|
+
if (type === "html") {
|
|
39
|
+
render = await new htmRenderlProvider_1.HtmlRenderProvider().render(this.data, this.config);
|
|
40
|
+
}
|
|
41
|
+
if (type === "json") {
|
|
42
|
+
render = await new jsonRenderProvider_1.JSONRenderProvider().render(this.data, this.config);
|
|
43
|
+
}
|
|
44
|
+
if (type === "atom") {
|
|
45
|
+
render = await new atomRenderProvider_1.AtomRenderProvider().render(this.data, this.config);
|
|
46
|
+
}
|
|
47
|
+
if (type === "images") {
|
|
48
|
+
render = await new imageRenderProvider_1.ImageRenderProvider().render(this.data, this.config);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (render) {
|
|
52
|
+
result = render;
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.SiteGenerator = SiteGenerator;
|
|
58
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,oEAA+D;AAC/D,oEAA+D;AAC/D,oEAA+D;AAC/D,sEAAiE;AACjE,oDAA+C;AAC/C,qCAAgC;AAEhC,MAAa,aAAa;IAKzB,YAAY,OAAY;QACvB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAE9B,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,MAAM,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACtC;QAED,IAAI,MAAM,CAAC,IAAI,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAClC;QAED,IAAI,MAAM,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;SAC9B;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEjC,IAAI,CAAC,IAAI,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,GAAG;QACR,IAAI,MAAM,GAAG,IAAI,CAAC;QAElB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YACzD,OAAO,KAAK,CAAC;SACb;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACtC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAClC;QAED,IAAI,MAAM,GAAwB,IAAI,CAAC;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,IAAI,KAAK,MAAM,EAAE;gBACpB,MAAM,GAAG,MAAM,IAAI,uCAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACvE;YACD,IAAI,IAAI,KAAK,MAAM,EAAE;gBACpB,MAAM,GAAG,MAAM,IAAI,uCAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACvE;YACD,IAAI,IAAI,KAAK,MAAM,EAAE;gBACpB,MAAM,GAAG,MAAM,IAAI,uCAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACvE;YACD,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACtB,MAAM,GAAG,MAAM,IAAI,yCAAmB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACxE;SACD;QAED,IAAI,MAAM,EAAE;YACX,MAAM,GAAG,MAAM,CAAC;SAChB;QAED,OAAO,MAAM,CAAC;IACf,CAAC;CAED;AA/DD,sCA+DC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
import { DataService } from "./data/dataService";
|
|
3
3
|
import { Config } from "./config";
|
|
4
4
|
export declare class Writr {
|
|
5
|
-
log: any;
|
|
6
5
|
config: Config | undefined;
|
|
7
6
|
data: DataService | undefined;
|
|
8
|
-
|
|
9
|
-
parseCLI(process: NodeJS.Process): void;
|
|
10
|
-
runCLI(): Promise<boolean>;
|
|
7
|
+
parseCLI(process: NodeJS.Process): Promise<void>;
|
|
11
8
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,68 +1,83 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Writr = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const jsonRenderProvider_1 = require("./render/jsonRenderProvider");
|
|
11
|
-
const atomRenderProvider_1 = require("./render/atomRenderProvider");
|
|
12
|
-
const imageRenderProvider_1 = require("./render/imageRenderProvider");
|
|
13
|
-
const { createCommand } = require('commander');
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const setup_1 = require("./utils/setup");
|
|
6
|
+
const log_1 = require("./log");
|
|
7
|
+
const serve_1 = require("./serve");
|
|
8
|
+
const generator_1 = require("./generator");
|
|
9
|
+
const migrate_1 = require("./migrate");
|
|
14
10
|
class Writr {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
parseCLI(process) {
|
|
19
|
-
const program = createCommand();
|
|
11
|
+
async parseCLI(process) {
|
|
12
|
+
const program = (0, commander_1.createCommand)();
|
|
20
13
|
program.storeOptionsAsProperties(true);
|
|
21
|
-
program
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
program
|
|
15
|
+
.command('build', { isDefault: true })
|
|
16
|
+
.description('Build the site')
|
|
17
|
+
.option("-p, --path <path>", "Path of where the blog, config, and template are located")
|
|
18
|
+
.option("-o, --output <path>", "Path of where to output the generated blog")
|
|
19
|
+
.option("-r, --render <list>", "What do you want rendered such as html or json (example --render html,json)")
|
|
20
|
+
.option("-c, --config <path>", "custom configuration path")
|
|
21
|
+
.action(async (options) => {
|
|
22
|
+
try {
|
|
23
|
+
await new generator_1.SiteGenerator(options).run();
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
new log_1.ConsoleMessage().error('Error: ' + error.message);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
program
|
|
30
|
+
.command('init')
|
|
31
|
+
.description('Initialize a new Writr project')
|
|
32
|
+
.argument('[name]', 'Name of the project', 'Blog')
|
|
33
|
+
.action(async (name) => {
|
|
34
|
+
try {
|
|
35
|
+
await new setup_1.Setup(name).init();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
new log_1.ConsoleMessage().error('Error: ' + error.message);
|
|
41
39
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
render = await new jsonRenderProvider_1.JSONRenderProvider().render(this.data, this.config);
|
|
50
|
-
}
|
|
51
|
-
if (type === "atom") {
|
|
52
|
-
render = await new atomRenderProvider_1.AtomRenderProvider().render(this.data, this.config);
|
|
53
|
-
}
|
|
54
|
-
if (type === "images") {
|
|
55
|
-
render = await new imageRenderProvider_1.ImageRenderProvider().render(this.data, this.config);
|
|
56
|
-
}
|
|
40
|
+
});
|
|
41
|
+
program
|
|
42
|
+
.command('new')
|
|
43
|
+
.description('Create new markdown file')
|
|
44
|
+
.action(async () => {
|
|
45
|
+
try {
|
|
46
|
+
await new setup_1.Setup('new').new();
|
|
57
47
|
}
|
|
58
|
-
|
|
59
|
-
|
|
48
|
+
catch (error) {
|
|
49
|
+
new log_1.ConsoleMessage().error('Error: ' + error.message);
|
|
60
50
|
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
51
|
+
});
|
|
52
|
+
program
|
|
53
|
+
.command('migrate')
|
|
54
|
+
.description('Migrate from different sources to Writr')
|
|
55
|
+
.argument("<type> <options...>", "Provider type (jekyll, wordpress, etc), source and destination")
|
|
56
|
+
.action(async (options) => {
|
|
57
|
+
try {
|
|
58
|
+
const [type, src, dest] = options;
|
|
59
|
+
await new migrate_1.Migrate(type).migrate(src, dest);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
new log_1.ConsoleMessage().error('Error: ' + error.message);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
program
|
|
66
|
+
.command('serve')
|
|
67
|
+
.description('Serve the site locally')
|
|
68
|
+
.option("-o, --output <path>", "Path of where to output the generated blog be served", 'blog_output')
|
|
69
|
+
.option("-p, --port <port>", "Port to serve the site on", '3000')
|
|
70
|
+
.option("--path <path>", "Path of where the blog, config, and template are located", './blog')
|
|
71
|
+
.option("-w, --watch", "Watch for changes and rebuild", false)
|
|
72
|
+
.action(async (options) => {
|
|
73
|
+
try {
|
|
74
|
+
await new serve_1.Serve(options).run();
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
new log_1.ConsoleMessage().error('Error: ' + error.message);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
program.parse(process.argv);
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
83
|
exports.Writr = Writr;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/log.d.ts
ADDED
package/dist/log.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConsoleMessage = void 0;
|
|
4
|
+
const winston_1 = require("winston");
|
|
5
|
+
class ConsoleMessage {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.log = (0, winston_1.createLogger)({ transports: [new winston_1.transports.Console()] });
|
|
8
|
+
}
|
|
9
|
+
info(message) {
|
|
10
|
+
this.log.info(message);
|
|
11
|
+
}
|
|
12
|
+
error(message) {
|
|
13
|
+
this.log.error(message);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ConsoleMessage = ConsoleMessage;
|
|
17
|
+
//# sourceMappingURL=log.js.map
|
package/dist/log.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../src/log.ts"],"names":[],"mappings":";;;AAAA,qCAAiD;AAEjD,MAAa,cAAc;IAG1B;QACC,IAAI,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,EAAE,UAAU,EAAE,CAAC,IAAI,oBAAU,CAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,OAAe;QACnB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAe;QACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;CAED;AAfD,wCAeC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MigrationProviderInterface } from "./migrationProviderInterface";
|
|
2
|
+
export declare class GhostMigrationProvider implements MigrationProviderInterface {
|
|
3
|
+
parser: any;
|
|
4
|
+
storage: any;
|
|
5
|
+
constructor();
|
|
6
|
+
fetchPosts(src: string): Promise<Record<string, any>[]>;
|
|
7
|
+
saveMedia(mediaFetched: any, dest: string): Promise<string>;
|
|
8
|
+
migrate(src: string, dest: string): Promise<boolean>;
|
|
9
|
+
}
|