1 | 'use strict';
|
2 |
|
3 | const fs = require('fs-extra');
|
4 | const path = require('path');
|
5 | const config = require('./config');
|
6 | const remote = require('./remote');
|
7 | const platform = require('./platform');
|
8 | const index = require('./index');
|
9 |
|
10 | const CACHE_FOLDER = path.join(config.get().cache, 'cache');
|
11 |
|
12 | exports.lastUpdated = (done) => {
|
13 | fs.stat(CACHE_FOLDER, done);
|
14 | };
|
15 |
|
16 | exports.getPage = (page, done) => {
|
17 | let preferredPlatform = platform.getPreferredPlatformFolder();
|
18 | index.findPlatform(page, preferredPlatform, (folder) => {
|
19 | if (folder) {
|
20 | let filePath = path.join(CACHE_FOLDER, 'pages', folder, page + '.md');
|
21 | fs.readFile(filePath, 'utf8', done);
|
22 | } else {
|
23 | done(null, null);
|
24 | }
|
25 | });
|
26 | };
|
27 |
|
28 | exports.clear = (done) => {
|
29 | fs.remove(CACHE_FOLDER, done);
|
30 | };
|
31 |
|
32 | exports.update = (done) => {
|
33 |
|
34 | remote.download((err, tempFolder) => {
|
35 | if (err) {
|
36 | return done(err);
|
37 | }
|
38 |
|
39 | fs.mkdirs(CACHE_FOLDER, (err) => {
|
40 | if (err) {
|
41 | return done(err);
|
42 | }
|
43 |
|
44 | fs.copy(tempFolder, CACHE_FOLDER, {clobber: true}, (err) => {
|
45 | if (err) {
|
46 | return done(err);
|
47 | }
|
48 | index.rebuildPagesIndex(() => {
|
49 | return done();
|
50 | });
|
51 | });
|
52 | });
|
53 | });
|
54 | };
|