From 84ce937cfca88900e086f81e766c9519c21cb63a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Sko=C5=99epov=C3=A1?= <isabella@skorepova.info> Date: Wed, 6 Nov 2019 18:50:49 +0100 Subject: [PATCH] Feature parity --- content/README.md | 6 +- .../2008/pracujeme-v-eagle-1cast-zaciname.md | 2 +- .../articles/2008/provozni-aktiv-3-2008.md | 2 +- .../2008/radiovy-orientacni-beh-liboc-2008.md | 2 +- ...vy-orientacni-beh-materske-centrum-2008.md | 2 +- .../articles/2008/svetelny-had-s-10-led.md | 2 +- content/articles/2010/q-kody.md | 10 +- .../radioklub-v-mlade-fronte-rijen-2013.md | 2 +- .../2015/radioklub-ok1kvk-v-poradu-vikend.md | 2 +- .../articles/2015/sk-petr-pohanka-ok1fkv.md | 2 +- content/config.toml | 2 - index.js | 13 +- reexport.js | 45 ++++ sitegin/gitInfo.js | 215 ------------------ sitegin/parseHugo.js | 4 +- sitegin/pipeline.js | 1 - sitegin/sitegin.js | 1 - sitegin/tags.js | 10 +- theme/templates/article.html.nunj | 13 +- theme/templates/partials/list.html.nunj | 2 +- 20 files changed, 82 insertions(+), 256 deletions(-) delete mode 100644 content/config.toml create mode 100644 reexport.js delete mode 100644 sitegin/gitInfo.js diff --git a/content/README.md b/content/README.md index 7cdd67ab..819f3f67 100644 --- a/content/README.md +++ b/content/README.md @@ -40,10 +40,8 @@ To je to mezi ```` ``` ```` a ```` ``` ```` ;) * image - titulnĂ obrázek ÄŤlánku. Tento by mÄ›l bĂ˝t umĂstÄ›n v static/images/leads/OBRAZEK.png, nebo ve sloĹľce ÄŤlánku. Preferujte png * tags - Seznam tagĹŻ - * [author] - Počátek sekce pojednávajĂcĂ o autorovi, pokud chybĂ je vytvoĹ™ena z git historie - * name - jmĂ©no autora - * [date] - * creation - datum vytvoĹ™enĂ + * author - jmĂ©no autora + * published - datum publikace, pokud chybĂ ÄŤlánek nebude vyvěšen * nodate=true - indikuje, Ĺľe by se nemÄ›lo zobrazovat datum vytvoĹ™enĂ ## StandartnĂ kategorie: diff --git a/content/articles/2008/pracujeme-v-eagle-1cast-zaciname.md b/content/articles/2008/pracujeme-v-eagle-1cast-zaciname.md index 385ea77e..57a3ea19 100644 --- a/content/articles/2008/pracujeme-v-eagle-1cast-zaciname.md +++ b/content/articles/2008/pracujeme-v-eagle-1cast-zaciname.md @@ -7,7 +7,7 @@ perex_e = " -KaĹľdĂ˝ správnĂ˝ radioamatĂ©r zajistĂ© vyrábĂ plošnĂ© spoje ÄŤastÄ›ji, neĹľ zalĂ©vá kvÄ›tiny na zahradÄ›, a právÄ› pro nÄ›j je urÄŤenĂ˝ program EAGLE z dĂlny CADsoft, pro tvorbu plošnĂ˝ch spojĹŻ. ProÄŤ se v dnešnĂ dobÄ› "zdrĹľovat" návrhem plošnĂ˝m spojĹŻ na papĂr a pracnĂ˝m ruÄŤnĂm pĹ™ekreslovánĂm, kdyĹľ je k dispozici software, kterĂ˝ veškerou práci udÄ›lá za Vás a to velmi rychle a jednoduše. Do karet nám, radioamatĂ©rĹŻm, hraje i licence - freeware, kterĂ˝ je ve verzi Light pro amatĂ©rskĂ© pouĹľitĂ zdarma a mĹŻĹľe tak bĂ˝t volnÄ› pouĹľĂván! +KaĹľdĂ˝ správnĂ˝ radioamatĂ©r zajistĂ© vyrábĂ plošnĂ© spoje ÄŤastÄ›ji, neĹľ zalĂ©vá kvÄ›tiny na zahradÄ›, a právÄ› pro nÄ›j je urÄŤenĂ˝ program EAGLE z dĂlny CADsoft, pro tvorbu plošnĂ˝ch spojĹŻ. ProÄŤ se v dnešnĂ dobÄ› \"zdrĹľovat\" návrhem plošnĂ˝m spojĹŻ na papĂr a pracnĂ˝m ruÄŤnĂm pĹ™ekreslovánĂm, kdyĹľ je k dispozici software, kterĂ˝ veškerou práci udÄ›lá za Vás a to velmi rychle a jednoduše. Do karet nám, radioamatĂ©rĹŻm, hraje i licence - freeware, kterĂ˝ je ve verzi Light pro amatĂ©rskĂ© pouĹľitĂ zdarma a mĹŻĹľe tak bĂ˝t volnÄ› pouĹľĂván! . " +++ diff --git a/content/articles/2008/provozni-aktiv-3-2008.md b/content/articles/2008/provozni-aktiv-3-2008.md index 25b5110c..aa4dd6a0 100644 --- a/content/articles/2008/provozni-aktiv-3-2008.md +++ b/content/articles/2008/provozni-aktiv-3-2008.md @@ -3,7 +3,7 @@ title = "ProvoznĂ aktiv 3/2008" tags = ["Aktuality", "Stalo se", "Závody", "RozbitĂ© ÄŤlánky"] published = "2008-03-16T15:14:16.000Z" author = "Michal, OK1WMR" -perex_e = " Po dobrodruĹľnĂ©m I. Subregionálu jsme se těšili "klidnĂ˝" provoznĂ aktiv na VKV. PoÄŤasĂ bylo, alespoĹ v sobotu, nádhernĂ©. Postavili jsme náš 14m vysokĂ˝ stožár s 17el. M2. BÄ›hem závodu jsme navázali 112 spojenĂ a nejdelšà bylo se stanicĂ G0KPW na vzdálenost 813 km a dosáhli tedy celkovĂ©ho poÄŤtu 32 471 bodĹŻ... . ." +perex_e = " Po dobrodruĹľnĂ©m I. Subregionálu jsme se těšili \"klidnĂ˝\" provoznĂ aktiv na VKV. PoÄŤasĂ bylo, alespoĹ v sobotu, nádhernĂ©. Postavili jsme náš 14m vysokĂ˝ stožár s 17el. M2. BÄ›hem závodu jsme navázali 112 spojenĂ a nejdelšà bylo se stanicĂ G0KPW na vzdálenost 813 km a dosáhli tedy celkovĂ©ho poÄŤtu 32 471 bodĹŻ... . ." +++ diff --git a/content/articles/2008/radiovy-orientacni-beh-liboc-2008.md b/content/articles/2008/radiovy-orientacni-beh-liboc-2008.md index 343b6609..45af1bbb 100644 --- a/content/articles/2008/radiovy-orientacni-beh-liboc-2008.md +++ b/content/articles/2008/radiovy-orientacni-beh-liboc-2008.md @@ -11,7 +11,7 @@ perex_e = " -Náš radioklub uspořádal 9. 7. 2008 "hon na lišku" pro účastnĂky letnĂho tábora nedaleko obce Liboc. +Náš radioklub uspořádal 9. 7. 2008 \"hon na lišku\" pro účastnĂky letnĂho tábora nedaleko obce Liboc. . . diff --git a/content/articles/2008/radiovy-orientacni-beh-materske-centrum-2008.md b/content/articles/2008/radiovy-orientacni-beh-materske-centrum-2008.md index 889a36bb..2bf5ec71 100644 --- a/content/articles/2008/radiovy-orientacni-beh-materske-centrum-2008.md +++ b/content/articles/2008/radiovy-orientacni-beh-materske-centrum-2008.md @@ -4,7 +4,7 @@ tags = ["Aktuality", "Stalo se", "Akce pro veĹ™ejnost", "RozbitĂ© ÄŤlánky"] published = "2008-08-14T05:32:13.000Z" author = "Michal, OK1WMR" perex_e = " -Náš radioklub uspořádal 21. 7. 2008 "hon na lišku" pro účastnĂky pĹ™ĂmÄ›stskĂ©ho tábora pořádanĂ©ho MateĹ™skĂ˝m centrem v KarlovĂ˝ch Varech +Náš radioklub uspořádal 21. 7. 2008 \"hon na lišku\" pro účastnĂky pĹ™ĂmÄ›stskĂ©ho tábora pořádanĂ©ho MateĹ™skĂ˝m centrem v KarlovĂ˝ch Varech . . diff --git a/content/articles/2008/svetelny-had-s-10-led.md b/content/articles/2008/svetelny-had-s-10-led.md index b2b292a5..5897be71 100644 --- a/content/articles/2008/svetelny-had-s-10-led.md +++ b/content/articles/2008/svetelny-had-s-10-led.md @@ -4,7 +4,7 @@ tags = ["ÄŚlánky", "Konstrukce", "Konstrukce pro začáteÄŤnĂky", "RozbitĂ© ÄŤ published = "2008-11-27T17:27:50.000Z" author = "Michal, OK1WMR" image = "02.jpg" -perex_e = "JednoduchĂ˝ svÄ›telnĂ˝ had s moĹľnostĂ regulace rychlosti "bÄ›hu" +perex_e = "JednoduchĂ˝ svÄ›telnĂ˝ had s moĹľnostĂ regulace rychlosti \"bÄ›hu\" svÄ›tla. Kde rychlost udává známĂ˝ ÄŤasovaÄŤ 555, kterĂ˝ je napojen do obvodu 4017, známĂ©ho takĂ© jako JohnsonĹŻv ÄŤĂtaÄŤ/dÄ›liÄŤ. Na jeho vĂ˝stupy jsou napojeny LED. Hodnota C1 je 1uF. Na plošnĂ©m spoji jsou LED v jednoduchĂ© Ĺ™adÄ›, ale diody by diff --git a/content/articles/2010/q-kody.md b/content/articles/2010/q-kody.md index 3967bcad..a0f7fb02 100644 --- a/content/articles/2010/q-kody.md +++ b/content/articles/2010/q-kody.md @@ -7,7 +7,7 @@ perex_e = "Od počátkĹŻ radiovĂ©ho provozu, kterĂ˝ tehdy vyuĹľĂval vĂ˝hradnÄ› telegrafnĂ signály, mÄ›li operátoĹ™i snahu zrychlit vysĂlánĂ pouĹľitĂm zkratek pro nÄ›kterĂ© ÄŤasto se opakujĂcĂ ustálenĂ© fráze. Tak vzniklo nÄ›kolik soustav kĂłdĹŻ, nejznámÄ›jšà je tzv. Q-kĂłd charakterisovanĂ˝ -skupinou třà pĂsmen, z nichĹľ prvnĂ je "Q". +skupinou třà pĂsmen, z nichĹľ prvnĂ je \"Q\". Q-kĂłd je univerzálnĂ a pouĹľĂvá ho vÄ›tšina sluĹľeb. NÄ›kterĂ© sluĹľby si vyvinuly vlastnĂ kĂłdy, napĹ™. N-kĂłd, Z-kĂłd, kterĂ© lĂ©pe odpovĂdajĂ jejich potĹ™ebám. @@ -177,8 +177,8 @@ Zpráva všem radioamatĂ©rĹŻm. QSV -Vyšlete sĂ©rii "VVV"(na kmitoÄŤtu ...... kHz). -Mám vyslat sĂ©rii "VVV"(na kmitoÄŤtu ...... kHz)? +Vyšlete sĂ©rii \"VVV\"(na kmitoÄŤtu ...... kHz). +Mám vyslat sĂ©rii \"VVV\"(na kmitoÄŤtu ...... kHz)? QSX @@ -218,8 +218,8 @@ Mám se naladit pĹ™esnÄ› na váš kmitoÄŤet? Otázku vytvářĂme doplnÄ›nĂm otaznĂku za kĂłd, napĹ™. QTH?. -V radioamatĂ©rskĂ© praxi se vĹľilo i pouĹľĂvánĂ pĹ™enesenĂ©ho (zobecnÄ›nĂ©ho) vĂ˝zanamu Q-kĂłdĹŻ, napĹ™. QSO znamená obecnÄ›ji "radioamatĂ©rskĂ© spojenĂ", QTH ""umĂstÄ›nĂ stanice", QRO "velkĂ˝ vĂ˝kon", a Ĺ™ekne-li nÄ›kdo ve fonickĂ©m spojenĂ, Ĺľe jde "do -kvĂ©erelu", nejde o nic hroznĂ©ho (krom jazykovĂ© stránky), mluvÄŤĂ tak chce +V radioamatĂ©rskĂ© praxi se vĹľilo i pouĹľĂvánĂ pĹ™enesenĂ©ho (zobecnÄ›nĂ©ho) vĂ˝zanamu Q-kĂłdĹŻ, napĹ™. QSO znamená obecnÄ›ji \"radioamatĂ©rskĂ© spojenĂ\", QTH \"\"umĂstÄ›nĂ stanice\", QRO \"velkĂ˝ vĂ˝kon\", a Ĺ™ekne-li nÄ›kdo ve fonickĂ©m spojenĂ, Ĺľe jde \"do +kvĂ©erelu\", nejde o nic hroznĂ©ho (krom jazykovĂ© stránky), mluvÄŤĂ tak chce vyjádĹ™it, Ĺľe jde do zamÄ›stnánĂ. Zdroj - ÄŚRK VĂce zde" diff --git a/content/articles/2013/radioklub-v-mlade-fronte-rijen-2013.md b/content/articles/2013/radioklub-v-mlade-fronte-rijen-2013.md index 873cdcfe..dc98e302 100644 --- a/content/articles/2013/radioklub-v-mlade-fronte-rijen-2013.md +++ b/content/articles/2013/radioklub-v-mlade-fronte-rijen-2013.md @@ -3,7 +3,7 @@ title = "Radioklub v MladĂ© FrontÄ› - Ĺ™Ăjen 2013" tags = ["Aktuality", "Stalo se", "Napsali o nás", "RozbitĂ© ÄŤlánky"] published = "2013-11-15T19:23:09.000Z" author = "MĂra, OK7KM" -perex_e = "V denĂku Mladá Fronta vyšel dne 21. 10. 2013 ÄŤlánek s názvem MladĂ˝ modelář nebo mechanik, to jsou v kraji "ohroĹľenĂ© druhy". Autor ÄŤlánku udÄ›lal rozhovor takĂ© s vedoucĂm našeho krouĹľku. CelĂ˝ ÄŤlánek si mĹŻĹľete pĹ™eÄŤĂst uvnitĹ™ našà krátkĂ© zprávy.. A Celuto +perex_e = "V denĂku Mladá Fronta vyšel dne 21. 10. 2013 ÄŤlánek s názvem MladĂ˝ modelář nebo mechanik, to jsou v kraji \"ohroĹľenĂ© druhy\". Autor ÄŤlánku udÄ›lal rozhovor takĂ© s vedoucĂm našeho krouĹľku. CelĂ˝ ÄŤlánek si mĹŻĹľete pĹ™eÄŤĂst uvnitĹ™ našà krátkĂ© zprávy.. A Celuto diff --git a/content/articles/2015/radioklub-ok1kvk-v-poradu-vikend.md b/content/articles/2015/radioklub-ok1kvk-v-poradu-vikend.md index 2a360f38..4141bd34 100644 --- a/content/articles/2015/radioklub-ok1kvk-v-poradu-vikend.md +++ b/content/articles/2015/radioklub-ok1kvk-v-poradu-vikend.md @@ -4,7 +4,7 @@ tags = ["Aktuality", "Stalo se", "Napsali o nás"] published = "2015-12-10T19:44:10.000Z" author = "MĂra, OK7KM" image = "vikend.png" -perex_e = "V ĂşterĂ˝, 8. prosince 2015 byl odvysĂlán dalšà dĂl poĹ™adu VĂkend na TV Nova, na tĂ©ma "S hlavou v oblacĂch". Radioklub a jeho pracovištÄ› na BlatenskĂ©m vrchu jste mohli vidÄ›t bÄ›hem jednĂ© z reportážĂ. Záznam najdete v našem ÄŤlánku." +perex_e = "V ĂşterĂ˝, 8. prosince 2015 byl odvysĂlán dalšà dĂl poĹ™adu VĂkend na TV Nova, na tĂ©ma \"S hlavou v oblacĂch\". Radioklub a jeho pracovištÄ› na BlatenskĂ©m vrchu jste mohli vidÄ›t bÄ›hem jednĂ© z reportážĂ. Záznam najdete v našem ÄŤlánku." +++ diff --git a/content/articles/2015/sk-petr-pohanka-ok1fkv.md b/content/articles/2015/sk-petr-pohanka-ok1fkv.md index abe6b7a6..d5a4f759 100644 --- a/content/articles/2015/sk-petr-pohanka-ok1fkv.md +++ b/content/articles/2015/sk-petr-pohanka-ok1fkv.md @@ -5,7 +5,7 @@ published = "2015-05-20T15:51:21.000Z" author = "Jirka, OK1UBO" perex_e = " Krátce po svĂ˝ch osmdesátinách, dne 20. 4. 2015, zemĹ™el dlouholetĂ˝ ÄŤlen našeho radioklubu Petr Pohanka, narozen 11. 3. 1935, ex OK1FKV, ex DIG 4865, ÄŤlen Veterán Rádio Klubu a klubu přátel telegrafie, drĹľitel DIG Trophy a CW Plakette. Petr se od mládĂ vÄ›noval fotografii, ke kterĂ© pĹ™iÄŤichl uĹľ bÄ›hem studia na Vyššà zdravotnà škole, kde v roce 1953 absolvoval obor rentgenovĂ˝ laborant, jehoĹľ součástĂ byl i kurs lĂ©kaĹ™skĂ© fotografie. SouÄŤasnÄ› jej ale zajĂmala i vĂ˝tvarná fotografie. -Ve druhĂ© polovinÄ› 50. let zaloĹľil a vedl fotokrouĹľek pĹ™i domÄ› kultury v ChomutovÄ›, v roce 1957 se stal ÄŤlenem krajskĂ©ho fotoklubu v TeplicĂch a absolvoval dvouletĂ˝ kurs vĂ˝tvarnĂ© fotografie u prof. Jána Ĺ moka. V roce 1960 se stal ÄŤlenem Svazu ÄŤeskĂ˝ch fotografĹŻ a v následujĂcĂm desetiletĂ se podĂlel na Ĺ™adÄ› vĂ˝stav doma i v zahraniÄŤĂ. Konec slibnÄ› se rozvĂjejĂcĂ fotografickĂ© kariĂ©ry nastal v roce 1972, kdy Petr Pohanka neprozĹ™etelnÄ› vystavil "nevhodnou" fotografii z oslav 1. máje a byl "odmÄ›nÄ›n" zákazem publikovánĂ, a kdyĹľ pak pĹ™i stÄ›hovánĂ do ĹĂÄŤan nešťastnÄ› pĹ™išel o stovky negativĹŻ, na fotografovánĂ zanevĹ™el a zaÄŤal se vÄ›novat radioamatĂ©rstvĂ. +Ve druhĂ© polovinÄ› 50. let zaloĹľil a vedl fotokrouĹľek pĹ™i domÄ› kultury v ChomutovÄ›, v roce 1957 se stal ÄŤlenem krajskĂ©ho fotoklubu v TeplicĂch a absolvoval dvouletĂ˝ kurs vĂ˝tvarnĂ© fotografie u prof. Jána Ĺ moka. V roce 1960 se stal ÄŤlenem Svazu ÄŤeskĂ˝ch fotografĹŻ a v následujĂcĂm desetiletĂ se podĂlel na Ĺ™adÄ› vĂ˝stav doma i v zahraniÄŤĂ. Konec slibnÄ› se rozvĂjejĂcĂ fotografickĂ© kariĂ©ry nastal v roce 1972, kdy Petr Pohanka neprozĹ™etelnÄ› vystavil \"nevhodnou\" fotografii z oslav 1. máje a byl \"odmÄ›nÄ›n\" zákazem publikovánĂ, a kdyĹľ pak pĹ™i stÄ›hovánĂ do ĹĂÄŤan nešťastnÄ› pĹ™išel o stovky negativĹŻ, na fotografovánĂ zanevĹ™el a zaÄŤal se vÄ›novat radioamatĂ©rstvĂ. " +++ diff --git a/content/config.toml b/content/config.toml deleted file mode 100644 index 6c11e204..00000000 --- a/content/config.toml +++ /dev/null @@ -1,2 +0,0 @@ -[git] -mergeMessage=["See merge request ","(Autoexportováno z Joomly)","(Autoexportován z Joomly)","[publish]"] diff --git a/index.js b/index.js index 732d8be9..4affb442 100755 --- a/index.js +++ b/index.js @@ -16,7 +16,7 @@ cli.main(function(args, options) { }) }) -var sitegin = function(config) { +function sitegin(config) { const options = config.options require('./sitegin/sitegin')({ watch: !options.noserver && !options.nowatch, @@ -131,7 +131,7 @@ var sitegin = function(config) { }) } -var copyStaticFiles = function(builddir, staticdir, themedir) { +function copyStaticFiles(builddir, staticdir, themedir) { // STATIC FILES const fsextra = require('node-fs-extra') fsextra.copy( @@ -159,15 +159,18 @@ var copyStaticFiles = function(builddir, staticdir, themedir) { ) } -var rendersass = function(builddir, themedir) { +function rendersass(builddir, themedir) { // SASS const sass = require('node-sass') - const fs = require('filendir') + const fs = require('fs') + const mkdirp = require('mkdirp') sass.render({ file: `${themedir}/sass/style.scss` }, function(err, result) { if (err === null) { console.log('compiled sass') - fs.writeFile(`${builddir}/theme/style.css`, result.css) + mkdirp(`${builddir}/theme`, () => { + fs.writeFile(`${builddir}/theme/style.css`, result.css, () => {}) + }) } else console.log('error ', err) }) } diff --git a/reexport.js b/reexport.js new file mode 100644 index 00000000..83e26c4e --- /dev/null +++ b/reexport.js @@ -0,0 +1,45 @@ +const fs = require('fs') +const data = require('../ok1kvk.cz/data.json') + +function tomlPrimitive(obj) { + if (Array.isArray(obj)) return `[${obj.map(tomlPrimitive).join(', ')}]` + if (typeof obj === 'string') { + return `"${obj.replace(/"/g, '\\"')}"` + } + if (typeof obj === 'boolean') return `${obj}` + throw new Error(`Unknown ${JSON.stringify(obj)}`) +} + +function tomlObject(obj) { + let ret = '' + for (const [key, value] of Object.entries(obj)) { + if (value === null || value === undefined) continue + ret += `${key} = ${tomlPrimitive(value)}\n` + } + return ret +} + +function authorRewrite(author) { + if (author === 'Jakub SkoĹ™epa') return 'Isabella SkoĹ™epová' + if (author === 'Michal Rybka') return 'Michal, OK1WMR' + if (author === 'Mira, OK7KM') return 'MĂra, OK7KM' + return author +} + +for (const page of data.pages) { + const tags = page.metadata.tags.filter( + t => t.text !== 'Všechny ÄŤlánky a aktuality', + ) + const text = `+++\n${tomlObject({ + title: page.metadata.title, + tags: tags.length > 0 ? tags.map(t => t.text) : null, + nodate: page.metadata.nodate, + notarticle: page.metadata.notarticle, + published: page.metadata.date.creation, + author: authorRewrite(page.metadata.author.name), + image: page.metadata.image, + perex: page.metadata.perex, + perex_e: page.metadata.perex_e, + })}+++\n\n${page.content}` + fs.writeFileSync(page.filename, text, 'utf-8') +} diff --git a/sitegin/gitInfo.js b/sitegin/gitInfo.js deleted file mode 100644 index 2a448fa0..00000000 --- a/sitegin/gitInfo.js +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Add date: {creation, modification, modified} and author: {name, email} - * to metadata if not already present - */ - -const nodegit = require('nodegit') -const path = require('path') -const moment = require('moment') - -// Returns promise for patch of single commit -const gitShow = (repo, commitData) => { - let commit - let tree - let parentTree - return nodegit.Revparse.single(repo, commitData.commit) - .then(obj => nodegit.Commit.lookup(repo, obj.id())) - .then(_commit => { - commit = _commit - if (commit.parentcount() < 1) return null - return commit.getParents(1) - }) - .then(parents => { - if (parents === null) return null - return parents[0].getTree() - }) - .then(_parentTree => { - parentTree = _parentTree - return commit.getTree() - }) - .then(_tree => { - tree = _tree - return nodegit.Diff.treeToTree(repo, parentTree, tree, null) - }) - .then(diff => diff.patches()) - .then(patches => [patches, commitData]) -} - -const gitlog = repo => { - const map = () => - Promise.resolve().then(() => commit => { - const author = commit.author() - const sha = commit.sha() - - return { - commit: sha, - author: { - name: author.name(), - email: author.email(), - }, - date: commit.date(), - message: commit.message(), - } - }) - - return repo.getHeadCommit().then(commit => - new Promise((resolve, reject) => { - commit - .history() - .on('end', resolve) - .on('error', reject) - .start() - }).then(commits => map().then(log => commits.map(log))), - ) -} - -const getFilesHistory = (repo, _startCommitMessage) => { - let startCommitMessage = _startCommitMessage - if (!Array.isArray(startCommitMessage) && startCommitMessage !== undefined) { - startCommitMessage = [startCommitMessage] - } - return Promise.resolve() - .then(() => gitlog(repo)) - .then(log => { - const promises = [] - for (let i = 0; i < log.length; i += 1) { - promises.push(gitShow(repo, log[i])) - } - return Promise.all(promises) - }) - .then(diffs => { - const filehistory = {} - diffs.forEach(data => { - const commit = data[1] - const diff = data[0] - - diff.forEach(entry => { - const p = path.normalize(entry.newFile().path()) - if (filehistory[p] === undefined) { - filehistory[p] = [] - } - filehistory[p].push(commit) - }) - }) - return filehistory - }) - .then(log => { - const sorter = (a, b) => { - const rhs = a.date - const lhs = b.date - return lhs > rhs ? 1 : lhs < rhs ? -1 : 0 - } - for (const file of Object.keys(log)) { - log[file].sort(sorter) - } - return log - }) - .then(log => { - if (startCommitMessage === undefined) return log - function mergeCommit(commits) { - let r - commits.reverse() - commits.forEach(commit => { - if (r === undefined) - startCommitMessage.forEach(matcher => { - if (commit.message.indexOf(matcher) > -1) r = commit - }) - }) - commits.reverse() - return r - } - for (const file of Object.keys(log)) { - // eslint-disable-next-line no-param-reassign - log[file].mergeCommit = mergeCommit(log[file]) - } - return log - }) -} - -module.exports = obj => { - console.log('Build step: GitInfo') - const pathToRepo = path.resolve(obj.config.sourceDir) - return new Promise((resolve, reject) => - nodegit.Repository.open(pathToRepo) - .catch(() => { - resolve(obj) - }) - .then(repo => getFilesHistory(repo, obj.config.git.mergeMessage)) - .then(hist => { - if (obj.config.options.debugarticle !== null) { - const log = hist[obj.config.options.debugarticle] - log.forEach(commit => { - console.log( - ` ${commit.date} ${ - commit.author.email - }\t${commit.message.replace(/\n([^]*)$/, '')}`, - ) - }) - console.log() - console.log( - ` Starting commit: ${log.mergeCommit.message.replace( - /\n([^]*)$/, - '', - )}`, - ) - } - return hist - }) - .then(filesHistory => { - obj.pages.forEach(article => { - const file = path.relative(pathToRepo, article.filename) - const commits = filesHistory[file] - if (commits !== undefined) { - commits.sort((a, b) => b.date - a.date) - const newestCommit = commits[0] - const oldestCommit = commits[commits.length - 1] - const { mergeCommit } = commits - - // eslint-disable-next-line no-param-reassign - if (article.metadata.date === undefined) article.metadata.date = {} - - if (article.metadata.date.creation === undefined) { - if (mergeCommit === undefined) { - console.log( - `[Warning] Article ${file} does not have merge commit.`, - ) - // eslint-disable-next-line no-param-reassign - article.metadata.date.creation = moment() - } else { - // eslint-disable-next-line no-param-reassign - article.metadata.date.creation = mergeCommit.date - } - } - - // eslint-disable-next-line no-param-reassign - article.metadata.date.modification = newestCommit.date - - if (article.metadata.author === undefined) { - // eslint-disable-next-line no-param-reassign - article.metadata.author = {} - } - if (article.metadata.author.name === undefined) { - // eslint-disable-next-line no-param-reassign - article.metadata.author.name = oldestCommit.author.name - } - if (article.metadata.author.email === undefined) { - // eslint-disable-next-line no-param-reassign - article.metadata.author.email = oldestCommit.author.email - } - - // eslint-disable-next-line no-param-reassign - article.commits = commits - } else { - console.log(`[Warning] Article ${file} is not in git repository.`) - } - }) - return obj - }) - .then(o => { - resolve(o) - }) - .catch(e => { - reject(e) - }), - ) -} diff --git a/sitegin/parseHugo.js b/sitegin/parseHugo.js index 7daaf1ac..a7163744 100644 --- a/sitegin/parseHugo.js +++ b/sitegin/parseHugo.js @@ -26,9 +26,9 @@ const readPageWorker = (content_, obj) => { console.log(`${obj.filename}: Failed to parse metadata`) throw e } - if (obj.metadata.date && obj.metadata.date.creation) { + if (obj.metadata.published && obj.metadata.published) { // eslint-disable-next-line no-param-reassign - obj.metadata.date.creation = moment(obj.metadata.date.creation) + obj.metadata.published = moment(obj.metadata.published) } return obj } diff --git a/sitegin/pipeline.js b/sitegin/pipeline.js index bba73752..c2aee352 100644 --- a/sitegin/pipeline.js +++ b/sitegin/pipeline.js @@ -9,7 +9,6 @@ module.exports = jobs => 'readFiles', 'parseHugo', 'parseRedirects', - 'gitInfo', 'markdown', 'urls', 'sitemap', diff --git a/sitegin/sitegin.js b/sitegin/sitegin.js index 0b894de3..9da4666c 100644 --- a/sitegin/sitegin.js +++ b/sitegin/sitegin.js @@ -5,7 +5,6 @@ module.exports = config => .registerMultiple( config, ['config', './config'], - ['gitInfo', './gitInfo'], ['markdown', './markdown'], ['parseHugo', './parseHugo'], ['print', './print'], diff --git a/sitegin/tags.js b/sitegin/tags.js index 91ca9274..d8bcc089 100644 --- a/sitegin/tags.js +++ b/sitegin/tags.js @@ -54,10 +54,12 @@ module.exports = function tagsJob(obj) { obj.redirects.push(pg) pageList.sort((a, b) => { - if (a.metadata.date === undefined) return -1 - if (b.metadata.date === undefined) return 1 - const rhs = a.metadata.date.creation - const lhs = b.metadata.date.creation + if (a.metadata.published === b.metadata.published) return 0 + if (a.metadata.published === undefined) return -1 + if (b.metadata.published === undefined) return 1 + const rhs = a.metadata.published + const lhs = b.metadata.published + return lhs > rhs ? 1 : lhs < rhs ? -1 : 0 }) let c = 0 diff --git a/theme/templates/article.html.nunj b/theme/templates/article.html.nunj index 50967b8f..3a330ea7 100644 --- a/theme/templates/article.html.nunj +++ b/theme/templates/article.html.nunj @@ -3,7 +3,7 @@ {% block head %} <meta property="og:type" content="article" /> - <meta property="article:published_time" content="{{ metadata.date.creation | date }}" /> + <meta property="article:published_time" content="{{ metadata.published | date }}" /> {% if metadata.image %} <meta property="og:image" content="{{ metadata.image | absURL( canonicalURL ) }}" /> {% endif %} <meta property="og:description" content="{% if metadata.perex %}{{metadata.perex}}{% else %}{% if metadata.perex_e %}{{metadata.perex_e | truncate}}{% else %}{% if content %}{{ content | striptags | truncate }}{% endif %}{% endif %}{% endif %}" /> @@ -43,15 +43,12 @@ <h2 id="title">{{ metadata.title }}</h2> {% if not metadata.nodate %} <a class="author" style="color: #a2a2a2; display: block" class="black-text" target="_blank" href="https://git.ok1kvk.cz/ok1kvk.cz/content/tree/master/articles/{{file | replace("clanek/","") | replace(r/\/$/, "")}}.md"> - {% if metadata.date %} - <span style="color: #626262">{{ metadata.date.creation | date("D. M. YYYY") }}</span> + {% if metadata.published %} + <span style="color: #626262">{{ metadata.published | date("D. M. YYYY") }}</span> napsal - <span style="color: #626262">{{ metadata.author.name }}</span> - {% if (metadata.date.modification | date("D. M. YYYY")) != (metadata.date.creation | date("D. M. YYYY")) %} - naposledy upraveno <span style="color: #626262">{{ metadata.date.modification | date("D. M. YYYY") }}</span> - {% endif %} + <span style="color: #626262">{{ metadata.author }}</span> {% else %} - ÄŚlánek nenĂ v gitu + ÄŚlánek nebyl publikován {% endif %} </a> {% endif %} diff --git a/theme/templates/partials/list.html.nunj b/theme/templates/partials/list.html.nunj index 8832bad3..7d6248a8 100644 --- a/theme/templates/partials/list.html.nunj +++ b/theme/templates/partials/list.html.nunj @@ -39,7 +39,7 @@ </div> <div class="clear"></div> <div style="padding: 10px;" class="head-info"> - <span style="color: #a2a2a2; text-align: left;display: inline-block;width: 75%;">{{ page.metadata.date.creation | date("D. M. YYYY") }} napsal {{ page.metadata.author.name }}</span><!-- + <span style="color: #a2a2a2; text-align: left;display: inline-block;width: 75%;">{{ page.metadata.published | date("D. M. YYYY") }} napsal {{ page.metadata.author.name }}</span><!-- --><a style="text-align: right;display: inline-block;width: 25%;" href="{{ config.baseurl }}/{{ page.file }}">ÄŚĂst dál</a> </div> </div> -- GitLab