-
Notifications
You must be signed in to change notification settings - Fork 249
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
40 changed files
with
4,380 additions
and
846 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Refer from: <https://github.com/ppoffice/hexo-theme-icarus/tree/master/include> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/* eslint no-process-exit: "off" */ | ||
const fs = require('fs'); | ||
const path = require('path'); | ||
const util = require('util'); | ||
const crypto = require('crypto'); | ||
const logger = require('hexo-log')(); | ||
const yaml = require('hexo-component-inferno/lib/util/yaml'); | ||
// const { Migrator } = require('hexo-component-inferno/lib/core/migrate'); | ||
// const { SchemaLoader } = require('hexo-component-inferno/lib/core/schema'); | ||
const { yellow } = require('./util/console'); | ||
|
||
function loadThemeConfig(hexo, cfgPaths) { | ||
const configs = cfgPaths.map(cfgPath => fs.readFileSync(cfgPath)) | ||
.map(cfgPath => yaml.parse(cfgPath)); | ||
return Object.assign({}, ...configs, hexo.config.theme_config); | ||
} | ||
|
||
function generateThemeConfigFile(schema, cfgPath) { | ||
const defaultValue = schema.getDefaultValue(); | ||
fs.writeFileSync(cfgPath, defaultValue.toYaml()); | ||
} | ||
|
||
function hashConfigFile(cfgPath) { | ||
const content = fs.readFileSync(cfgPath); | ||
return crypto.createHash('md5').update(content).digest('hex'); | ||
} | ||
|
||
function checkConfig(hexo) { | ||
if (!process.argv.includes('--nexmoe-dont-check-config')) { | ||
logger.info('[Nexmoe] Checking theme configurations'); | ||
|
||
const themeSiteCfg = path.join(hexo.base_dir, '_config.nexmoe.yml'); | ||
const themeDirCfg = path.join(hexo.theme_dir, '_config.yml'); | ||
const themeCfgPaths = [themeDirCfg, themeSiteCfg].filter(cfgPath => fs.existsSync(cfgPath)); | ||
const themeSiteCfgExample = themeSiteCfg + '.example'; | ||
|
||
// const schemaDir = path.join(hexo.theme_dir, 'include/schema/'); | ||
// const loader = SchemaLoader.load(require(path.join(schemaDir, 'config.json')), schemaDir); | ||
// const schema = loader.getSchema('/config.json'); | ||
|
||
if (!process.argv.includes('--nexmoe-dont-generate-config')) { | ||
if (!themeCfgPaths.length) { | ||
logger.warn('None of the following configuration files is found:'); | ||
logger.warn(`- ${yellow(themeSiteCfg)}`); | ||
logger.warn(`- ${yellow(themeDirCfg)}`); | ||
logger.info('Generating theme configuration file...'); | ||
// generateThemeConfigFile(schema, themeSiteCfg); | ||
fs.writeFileSync(themeSiteCfg, fs.readFileSync(path.join(hexo.theme_dir, 'source/_config.yml'))) | ||
themeCfgPaths.push(themeSiteCfg); | ||
logger.info(`${yellow(themeSiteCfg)} created successfully.`); | ||
logger.info('To skip configuration generation, use "--nexmoe-dont-generate-config".'); | ||
} | ||
} | ||
|
||
// let cfg = loadThemeConfig(hexo, themeCfgPaths); | ||
|
||
// if (!process.argv.includes('--nexmoe-dont-upgrade-config')) { | ||
// const migrator = new Migrator(require(path.join(hexo.theme_dir, 'include/migration/head'))); | ||
// if (cfg.version && migrator.isOudated(cfg.version)) { | ||
// logger.warn(`Your theme configuration is outdated (${cfg.version} < ${migrator.getLatestVersion()}).`); | ||
// logger.info('To skip the configuration upgrade, use "--nexmoe-dont-upgrade-config".'); | ||
|
||
// logger.info('Backing up theme configuration files...'); | ||
// for (const cfgPath of themeCfgPaths) { | ||
// const backupPath = cfgPath + '.' + hashConfigFile(cfgPath); | ||
// const relCfgPath = path.relative(hexo.base_dir, cfgPath); | ||
// const relBackupPath = path.relative(hexo.base_dir, backupPath); | ||
// fs.renameSync(cfgPath, backupPath); | ||
// logger.info(`${yellow(relCfgPath)} => ${yellow(relBackupPath)}`); | ||
// } | ||
|
||
// logger.info('Upgrading theme configurations...'); | ||
// cfg = migrator.migrate(cfg); | ||
// fs.writeFileSync(themeSiteCfg, yaml.stringify(cfg)); | ||
// logger.info(`Theme configurations are written to ${yellow(themeSiteCfg)}.`); | ||
|
||
// generateThemeConfigFile(schema, themeSiteCfgExample); | ||
// logger.info(`Example configurations is at ${yellow(themeSiteCfgExample)}.`); | ||
// } | ||
// } | ||
|
||
// const validation = schema.validate(cfg); | ||
// if (validation !== true) { | ||
// logger.warn('Theme configurations failed one or more checks.'); | ||
// logger.warn('nexmoe may still run, but you will encounter unexcepted results.'); | ||
// logger.warn('Here is some information for you to correct the configuration file.'); | ||
// logger.warn(util.inspect(validation)); | ||
// } | ||
|
||
} | ||
} | ||
|
||
module.exports = hexo => { | ||
try { | ||
checkConfig(hexo); | ||
} catch (e) { | ||
logger.error(e); | ||
logger.error('Theme configuration checking failed.'); | ||
logger.info('You may use \'--nexmoe-dont-check-config\' to skip configuration checking.'); | ||
process.exit(-1); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/* eslint no-process-exit: "off" */ | ||
const semver = require('semver'); | ||
const logger = require('hexo-log')(); | ||
const packageInfo = require('../package.json'); | ||
const { yellow, red, green } = require('./util/console'); | ||
|
||
module.exports = hexo => { | ||
function checkDependency(name, reqVer) { | ||
try { | ||
require.resolve(name); | ||
const version = require(name + '/package.json').version; | ||
if (!semver.satisfies(version, reqVer)) { | ||
logger.error(`Package ${yellow(name)}'s version (${yellow(version)}) does not satisfy the required version (${red(reqVer)}).`); | ||
return false; | ||
} | ||
return true; | ||
} catch (e) { | ||
logger.error(`Package ${yellow(name)} is not installed.`); | ||
} | ||
return false; | ||
} | ||
|
||
logger.info('[Nexmoe] Checking package dependencies'); | ||
const dependencies = Object.assign({}, packageInfo.dependencies); | ||
const missingDeps = Object.keys(dependencies) | ||
.filter(name => !checkDependency(name, dependencies[name])); | ||
if (missingDeps && missingDeps.length) { | ||
logger.error('Please install the missing dependencies your Hexo site root directory:'); | ||
logger.error(green('npm install --save ' + missingDeps.map(name => `${name}@${dependencies[name]}`).join(' '))); | ||
logger.error('or:'); | ||
logger.error(green('yarn add ' + missingDeps.map(name => `${name}@${dependencies[name]}`).join(' '))); | ||
process.exit(-1); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
const logger = require('hexo-log')(); | ||
|
||
module.exports = hexo => { | ||
logger.info('=== Registering Hexo extensions ==='); | ||
require('hexo-component-inferno/lib/hexo/filter/locals')(hexo); | ||
require('hexo-component-inferno/lib/hexo/generator/assets')(hexo); | ||
require('hexo-component-inferno/lib/hexo/generator/insight')(hexo); | ||
require('hexo-component-inferno/lib/hexo/generator/categories')(hexo); | ||
require('hexo-component-inferno/lib/hexo/generator/category')(hexo); | ||
require('hexo-component-inferno/lib/hexo/generator/manifest')(hexo); | ||
require('hexo-component-inferno/lib/hexo/generator/tags')(hexo); | ||
require('hexo-component-inferno/lib/hexo/helper/cdn')(hexo); | ||
require('hexo-component-inferno/lib/hexo/helper/page')(hexo); | ||
require('hexo-component-inferno/lib/hexo/tag/message')(hexo); | ||
require('hexo-component-inferno/lib/hexo/tag/tabs')(hexo); | ||
require('hexo-component-inferno/lib/core/view').init(hexo); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
let chalk; | ||
try { | ||
chalk = require('chalk'); // eslint-disable-line node/no-extraneous-require | ||
} catch (e) { } | ||
|
||
module.exports = new Proxy({}, { | ||
get(obj, prop) { | ||
if (chalk) { | ||
return chalk[prop]; | ||
} | ||
return function() { | ||
return arguments.length === 1 ? arguments[0] : arguments; | ||
}; | ||
} | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { partial } = this.props; | ||
const Content = require(`./content`); | ||
const Footer = require(`./footer`); | ||
|
||
return ( | ||
<> | ||
<div | ||
id="nexmoe-header" | ||
dangerouslySetInnerHTML={{ | ||
__html: partial("_layout/nexmoe/header"), | ||
}} | ||
></div> | ||
<div id="nexmoe-content"> | ||
<Content {...this.props} /> | ||
<div | ||
class="nexmoe-post-right" | ||
dangerouslySetInnerHTML={{ | ||
__html: partial("_partial/right"), | ||
}} | ||
></div> | ||
</div> | ||
|
||
<div id="nexmoe-footer"> | ||
<Footer {...this.props} /> | ||
</div> | ||
</> | ||
); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { body } = this.props; | ||
|
||
return ( | ||
<div | ||
class="nexmoe-primary" | ||
dangerouslySetInnerHTML={{ __html: body }} | ||
></div> | ||
); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { body } = this.props; | ||
|
||
return ( | ||
<></> | ||
); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { partial } = this.props; | ||
const Header = require(`./header`); | ||
const Content = require(`./content`); | ||
const Footer = require(`./footer`); | ||
|
||
return ( | ||
<> | ||
<div id="nexmoe-header"> | ||
<Header {...this.props} /> | ||
</div> | ||
<div id="nexmoe-content"> | ||
<div class="nexmoe-container"> | ||
<Content {...this.props} /> | ||
<div | ||
class="nexmoe-post-right" | ||
dangerouslySetInnerHTML={{ | ||
__html: partial("_partial/right"), | ||
}} | ||
></div> | ||
</div> | ||
</div> | ||
|
||
<div id="nexmoe-footer"> | ||
<Footer {...this.props} /> | ||
</div> | ||
</> | ||
); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { body } = this.props; | ||
|
||
return <div dangerouslySetInnerHTML={{ __html: body }}></div>; | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { config, date, theme, __ } = this.props; | ||
|
||
return ( | ||
<> | ||
<div class="nexmoe-container"> | ||
© {date(new Date(), "YYYY")}{" "} | ||
{config.author || config.title} | ||
{__("Powered by")} | ||
<a href="http://hexo.io/" target="_blank"> | ||
Hexo | ||
</a> | ||
& | ||
<a | ||
href="https://github.com/theme-nexmoe/hexo-theme-nexmoe" | ||
target="_blank" | ||
> | ||
Nexmoe | ||
</a> | ||
<div | ||
dangerouslySetInnerHTML={{ __html: theme.slotSidebar }} | ||
></div> | ||
</div> | ||
</> | ||
); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
const { Component } = require("inferno"); | ||
|
||
module.exports = class extends Component { | ||
render() { | ||
const { config, date, theme, __ } = this.props; | ||
|
||
return ( | ||
<> | ||
<div class="nexmoe-container"> | ||
© {date(new Date(), "YYYY")}{" "} | ||
{config.author || config.title} | ||
{__("Powered by")} | ||
<a href="http://hexo.io/" target="_blank"> | ||
Hexo | ||
</a> | ||
& | ||
<a | ||
href="https://github.com/theme-nexmoe/hexo-theme-nexmoe" | ||
target="_blank" | ||
> | ||
Nexmoe | ||
</a> | ||
<div | ||
dangerouslySetInnerHTML={{ __html: theme.slotSidebar }} | ||
></div> | ||
</div> | ||
</> | ||
); | ||
} | ||
}; |
Oops, something went wrong.