414 lines
11 KiB
JavaScript
414 lines
11 KiB
JavaScript
|
||
|
||
// // // //
|
||
|
||
|
||
УведомитьОЗавершенииПубликации = мир =>
|
||
{
|
||
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: путь,
|
||
});
|
||
}
|
||
|
||
// Файл 0000.
|
||
var файл0000 = мир.собрать0000(мир.редактируемыйМодуль);
|
||
await мир.fs.promises.writeFile(мир.директория + "/0000", файл0000, "utf8");
|
||
await git.add({
|
||
fs: мир.fs,
|
||
dir: мир.директория,
|
||
filepath: "0000",
|
||
});
|
||
|
||
await git.commit({
|
||
fs: мир.fs,
|
||
dir: мир.директория,
|
||
message: мир.сообщение,
|
||
author: мир.автор,
|
||
})
|
||
|
||
мир.уведомить("продублировали содержимое");
|
||
})();
|
||
};
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УдалитьКорневыеФайлы = мир =>
|
||
{
|
||
(async() => {
|
||
var файлы = await мир.fs.promises.readdir(мир.директория);
|
||
for (var номер in файлы)
|
||
{
|
||
var файл = файлы[номер];
|
||
var путь = мир.директория + "/" + файл;
|
||
var статус = await мир.fs.promises.stat(путь);
|
||
// Удаляем лишь файлы.
|
||
if (статус.isFile())
|
||
{
|
||
await git.remove({
|
||
fs: мир.fs,
|
||
dir: мир.директория,
|
||
filepath: файл,
|
||
});
|
||
await мир.fs.promises.unlink(путь)
|
||
}
|
||
}
|
||
мир.уведомить("удалили корневые файлы");
|
||
})();
|
||
}
|
||
|
||
|
||
// // // //
|
||
|
||
|
||
УведомитьОЗавершенииОбновления = мир =>
|
||
{
|
||
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() {
|
||
мир.уведомить("выбрали пункт гит издателя");
|
||
});
|
||
};
|
||
|