Files
glavred-izdatel-publisher/пуск|run.js

375 lines
9.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// // // //
УведомитьОЗавершенииПубликации = мир =>
{
UIkit.notification("Опубликовали");
UIkit.notification("Published");
};
// // // //
ОпубликоватьСодержимое = мир =>
{
(async() => {
await git.push({
fs: мир.fs,
http: мир.гитHTTP,
dir: мир.директория,
remote: мир.источник,
ref: мир.ветка,
onAuth: url => {
var auth = {
"username": мир.пользователь,
"password": мир.пароль,
};
//var json = JSON.stringify(auth);
//console.debug(`Auth url: '${url}' auth: '${json}'`);
return auth;
}
});
мир.уведомить("опубликовали содержимое");
})();
};
// // // //
ПродублироватьСодержимоеПубликуемогоМодуляВЛокальнуюКопиюГит = мир =>
{
(async() => {
var содержимое = мир.редактируемыйМодуль.содержимое;
for (var файл in содержимое)
{
var содержимоеФайла = содержимое[файл];
// НАДО Поддержать сохранение двоичных файлов.
await мир.fs.promises.writeFile(мир.директория + файл, содержимоеФайла, "utf8");
var путь = файл.substr(1);
await git.add({
fs: мир.fs,
dir: мир.директория,
filepath: путь,
});
}
await git.commit({
fs: мир.fs,
dir: мир.директория,
message: мир.сообщение,
author: мир.автор,
})
мир.уведомить("продублировали содержимое");
})();
};
// // // //
УведомитьОЗавершенииОбновления = мир =>
{
UIkit.notification("Обновили локальную копию Гит");
UIkit.notification("Finished refreshing local Git copy");
};
// // // //
УведомитьОНеобходимостиПерезагрузки = мир =>
{
var сообщение = `ВНИМАНИЕ Произведена очистка локальной копии Гита. Перезагрузите страницу руками и повторите публикацию | WARNING Local Git copy has just been removed. Reload this page manually and repeat the publication ${мир.ошибка}`;
UIkit.modal.alert(сообщение);
console.error(сообщение);
};
// // // //
ОчиститьФайловуюСистему = мир =>
{
// Очищаем IndexedDB.
мир.fs = new LightningFS(мир.имяФС, { wipe: true });
};
// // // //
ОбновитьХранилище = мир =>
{
(async() => {
try
{
await git.pull({
fs: мир.fs,
http: мир.гитHTTP,
dir: мир.директория,
url: мир.хранилище,
depth: 1,
author: мир.автор,
corsProxy: мир.прокси,
});
мир.уведомить("обновили хранилище");
}
catch (ошибка)
{
мир.ошибка = ошибка;
мир.уведомить("не обновили хранилище");
}
})();
};
// // // //
СклонироватьХранилище = мир =>
{
(async() => {
await git.clone({
fs: мир.fs,
http: мир.гитHTTP,
dir: мир.директория,
url: мир.хранилище,
depth: 1,
corsProxy: мир.прокси,
});
мир.уведомить("склонировали хранилище");
})();
};
// // // //
УведомитьОбОшибкеПодготовкиДиректории = мир =>
{
var сообщение = `Не удалось подготовить директорию для хранилища Гит | Could not prepare a directory for Git repository ${мир.ошибка}`;
UIkit.modal.alert(сообщение);
console.error(сообщение);
};
// // // //
ПодготовитьДиректорию = мир =>
{
(async() => {
try
{
await мир.fs.promises.mkdir(мир.директория);
мир.уведомить("подготовили директорию");
}
catch (ошибка)
{
мир.ошибка = ошибка;
мир.уведомить("не подготовили директорию");
}
})();
};
// // // //
ПроверитьНаличиеДиректории = мир =>
{
мир.fs = new LightningFS(мир.имяФС);
(async() => {
try
{
await мир.fs.promises.readdir(мир.директория);
мир.уведомить("директория присутствует");
}
catch (ошибка)
{
мир.ошибка = ошибка;
мир.уведомить("директория отсутствует");
}
})();
};
// // // //
ЗадатьНастройки = мир =>
{
мир.хранилище = $(`#издатель-гит-хранилище`).val();
мир.имяФС = "fs_" + мир.хранилище;
мир.пользователь = $(`#издатель-гит-имя`).val();
мир.пароль = $(`#издатель-гит-пароль`).val();
мир.автор = {
"name": "Главред | Glavred",
"email": "glavred@gitjs.org",
};
мир.ветка = "master";
мир.директория = "/" + мир.ветка;
мир.источник = "origin";
мир.сообщение = "Изменения от Главреда ГитЖС | Changes of GitJS Glavred";
//мир.прокси = "https://cors.isomorphic-git.org";
};
// // // //
ВключитьКнопкуПубликацииВГит = мир =>
{
$(`#издатель-гит-опубликовать`).prop("disabled", false);
};
// // // //
ОтключитьКнопкуПубликацииВГит = мир =>
{
$(`#издатель-гит-опубликовать`).prop("disabled", true);
};
// // // //
УведомитьОНачалеПубликацииВГит = мир =>
{
UIkit.notification("Начали публикацию в Гит");
UIkit.notification("Started publishing to Git");
};
// // // //
СообщитьОНедостаточностиУчётныхДанных = мир =>
{
var сообщение = "Недостаточно учётных данных для публикации | Not enough credentials to publish";
UIkit.modal.alert(сообщение);
console.error(сообщение);
};
// // // //
ПроверитьДостаточностьУчётныхДанных = мир =>
{
if (
$(`#издатель-гит-имя`).val() &&
$(`#издатель-гит-пароль`).val() &&
$(`#издатель-гит-хранилище`).val()
) {
мир.уведомить("учётных данных достаточно");
}
else
{
мир.уведомить("учётных данных недостаточно");
}
};
// // // //
ОтслеживатьКнопкуПубликацииВГит = мир =>
{
$(`#издатель-гит-учётка`).submit(function(событие) {
событие.preventDefault();
мир.уведомить("кнопка публикации в гит");
});
};
// // // //
ОтобразитьАдресХранилищаГита = мир =>
{
$(`#издатель-гит-хранилище`).val(мир.редактируемыйМодуль["🏠"]);
};
// // // //
ОтобразитьСодержимоеПунктаГитИздателя = мир =>
{
$(`#${мир.макет.константы.содержимое}`).html(`
<div class="издатель-гит-отступ">
<form id="издатель-гит-учётка">
<input id="издатель-гит-имя" class="uk-input uk-margin-small" type="text" placeholder="Имя | Name">
<input id="издатель-гит-пароль" class="uk-input uk-margin-small" type="password" placeholder="Пароль | Password">
<input id="издатель-гит-хранилище" class="uk-input uk-margin-small" type="text" placeholder="Хранилище | Repository" readonly>
<button id="издатель-гит-опубликовать" class="uk-button uk-button-primary uk-margin-small">Опубликовать | Publish</button>
</form>
</div>
`);
};
// // // //
ОтобразитьВыборПунктаГитИздателя = мир =>
{
$(`#издатель-гит`).addClass("uk-active");
};
// // // //
ЗадатьВидСодержимогоМенюИздателя = мир =>
{
задатьВид(`
.издатель-гит-отступ
{
padding: 1em;
}
`)
};
// // // //
ЗадатьРазделМенюИздателя = мир =>
{
$(`#${мир.макет.константы.меню}`).append(`
<ul class="uk-nav uk-nav-default tm-nav">
<li class="uk-nav-header">📓 Издание | Publishing</li>
<li id="издатель-гит">
<a id="издатель-гит-ссылка">Гит | Git</a>
</li>
</ul>
`);
$(`#издатель-гит-ссылка`).click(function() {
мир.уведомить("выбрали пункт гит издателя");
});
};