first commit
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const AdmZip = require('adm-zip');
|
||||
const minimist = require('minimist');
|
||||
|
||||
const helpMessage = `Список доступных команд docidoci:
|
||||
help — вывод списка доступных команд
|
||||
settings — создаёт файл в котором нужно указать мета-теги для сайта
|
||||
init — создание структуры проекта на основе указанных настроек
|
||||
`
|
||||
|
||||
function rebrendingData() {
|
||||
const settingsPath = path.join(process.cwd(), 'docidociSettings.json')
|
||||
const indexHtmlPath = path.join(process.cwd(), 'index.html')
|
||||
const settings = JSON.parse(fs.readFileSync(settingsPath))
|
||||
|
||||
data = String(fs.readFileSync('./index.html'))
|
||||
htmlSample = data.replace('{projectName}', settings.projectName)
|
||||
htmlSample = htmlSample.replace('{repo}', settings.repo)
|
||||
htmlSample = htmlSample.replace(/{themeColor}/g, settings.themeColor)
|
||||
htmlSample = htmlSample.replace('{preloaderText}', settings.preloaderText)
|
||||
htmlSample = htmlSample.replace(/{title}/g, settings.seo.title)
|
||||
htmlSample = htmlSample.replace(/{description}/g, settings.seo.description)
|
||||
htmlSample = htmlSample.replace('{keywords}', settings.seo.keywords)
|
||||
htmlSample = htmlSample.replace('{image}', settings.seo.image)
|
||||
htmlSample = htmlSample.replace('{url}', settings.seo.url)
|
||||
|
||||
fs.writeFileSync(indexHtmlPath, htmlSample)
|
||||
}
|
||||
|
||||
function castomCopyFile(from, to) {
|
||||
const originalFile = path.join(__dirname, from);
|
||||
const copyFile = path.join(process.cwd(), to);
|
||||
fs.copyFileSync(originalFile, copyFile);
|
||||
}
|
||||
|
||||
|
||||
function commandInit() {
|
||||
const archivePath = path.join(__dirname, './files/files.zip');
|
||||
const targetPath = process.cwd();
|
||||
const settingsPath = path.join(process.cwd(), 'docidociSettings.json')
|
||||
|
||||
// Проверяем наличие архива
|
||||
if (!fs.existsSync(archivePath)) {
|
||||
console.log('Архив со структурой проекта не найден!');
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
// Проверяем, существует ли уже проект
|
||||
let indexHtmlPath = path.join(process.cwd(), './index.html')
|
||||
if (fs.existsSync(indexHtmlPath) && !argv.y) {
|
||||
console.log(`Ошибка инициализации!
|
||||
|
||||
В папке "${targetPath}" уже существует проект!
|
||||
Если хочешь его реинициализировать, то введи команду "docidoci init -y"`);
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
// Разархивировываем архив
|
||||
const zip = new AdmZip(archivePath);
|
||||
zip.extractAllTo(targetPath, true);
|
||||
|
||||
// Переносим html шаблон
|
||||
if (fs.existsSync(settingsPath)) {
|
||||
castomCopyFile('./files/index.html', 'index.html')
|
||||
rebrendingData()
|
||||
} else {
|
||||
castomCopyFile('./files/indexWithoutSettings.html', 'index.html')
|
||||
}
|
||||
|
||||
console.log(`Готово, проект инициализирован)
|
||||
|
||||
Проект находится в папке ${targetPath}
|
||||
Запустить проект docsify можно командой "docsify serve"`);
|
||||
process.exit()
|
||||
};
|
||||
|
||||
function commandSettings() {
|
||||
castomCopyFile('./files/docidociSettings.json', 'docidociSettings.json')
|
||||
console.log(`Файл настроек скопирован!
|
||||
|
||||
Заполни поля своими данными или сделай их пустыми.
|
||||
После выполни команду "docidoci init"`);
|
||||
}
|
||||
|
||||
|
||||
// Обработка аргументов из командной строки
|
||||
const argv = minimist(process.argv.slice(2));
|
||||
if (argv._.length == 0) {
|
||||
console.log(helpMessage);
|
||||
return
|
||||
} else if (argv._.length > 1) {
|
||||
console.log('За раз можно указывать только одну команду!!!\n');
|
||||
console.log(helpMessage);
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// Обработка команд
|
||||
const command = argv._[0] // основная команда
|
||||
if (command === 'init') {
|
||||
commandInit();
|
||||
} else if (command == 'help') {
|
||||
console.log(helpMessage)
|
||||
} else if (command == 'settings') {
|
||||
commandSettings()
|
||||
} else {
|
||||
console.log(`Неизвестная команда "${command}". Введи "docidoci help", чтобы увидеть список доступных команд`);
|
||||
}
|
||||
Reference in New Issue
Block a user