diff --git a/build.gradle.kts b/build.gradle.kts index 76f01f1..819da13 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,15 +20,9 @@ application { applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment", "-Xmx200M") } -tasks.withType{ - kotlinOptions{ - languageVersion = "1.7" - apiVersion = "1.7" - } -} val dataforgeVersion by extra("0.6.0-dev-5") -val ktorVersion = KScienceVersions.ktorVersion +val ktorVersion = KScienceVersions.ktorVersion dependencies { implementation("io.ktor:ktor-server-core:$ktorVersion") @@ -48,4 +42,11 @@ dependencies { kotlin { explicitApi = org.jetbrains.kotlin.gradle.dsl.ExplicitApiMode.Disabled + +} + +sourceSets { + main { + resources.srcDir(project.rootDir.resolve("data")) + } } \ No newline at end of file diff --git a/src/main/resources/magprog/assets/css/fontawesome-all.min.css b/data/magprog/assets/css/fontawesome-all.min.css similarity index 100% rename from src/main/resources/magprog/assets/css/fontawesome-all.min.css rename to data/magprog/assets/css/fontawesome-all.min.css diff --git a/src/main/resources/magprog/assets/css/images/intro.svg b/data/magprog/assets/css/images/intro.svg similarity index 100% rename from src/main/resources/magprog/assets/css/images/intro.svg rename to data/magprog/assets/css/images/intro.svg diff --git a/src/main/resources/magprog/assets/css/main.css b/data/magprog/assets/css/main.css similarity index 100% rename from src/main/resources/magprog/assets/css/main.css rename to data/magprog/assets/css/main.css diff --git a/src/main/resources/magprog/assets/css/noscript.css b/data/magprog/assets/css/noscript.css similarity index 100% rename from src/main/resources/magprog/assets/css/noscript.css rename to data/magprog/assets/css/noscript.css diff --git a/data/magprog/assets/images/favicon-32x32.png b/data/magprog/assets/images/favicon-32x32.png new file mode 100644 index 0000000..deb118a Binary files /dev/null and b/data/magprog/assets/images/favicon-32x32.png differ diff --git a/src/main/resources/magprog/assets/images/mentors/Dolgonosov.jpg b/data/magprog/assets/images/mentors/Dolgonosov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Dolgonosov.jpg rename to data/magprog/assets/images/mentors/Dolgonosov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Gertsenberger.jpg b/data/magprog/assets/images/mentors/Gertsenberger.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Gertsenberger.jpg rename to data/magprog/assets/images/mentors/Gertsenberger.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Grinis.jpg b/data/magprog/assets/images/mentors/Grinis.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Grinis.jpg rename to data/magprog/assets/images/mentors/Grinis.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Kalashev.jpg b/data/magprog/assets/images/mentors/Kalashev.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Kalashev.jpg rename to data/magprog/assets/images/mentors/Kalashev.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Khokhriakov.jpg b/data/magprog/assets/images/mentors/Khokhriakov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Khokhriakov.jpg rename to data/magprog/assets/images/mentors/Khokhriakov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Klimai.jpg b/data/magprog/assets/images/mentors/Klimai.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Klimai.jpg rename to data/magprog/assets/images/mentors/Klimai.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Kostunin.jpg b/data/magprog/assets/images/mentors/Kostunin.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Kostunin.jpg rename to data/magprog/assets/images/mentors/Kostunin.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Nozik.jpg b/data/magprog/assets/images/mentors/Nozik.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Nozik.jpg rename to data/magprog/assets/images/mentors/Nozik.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Oliinychenko.jpg b/data/magprog/assets/images/mentors/Oliinychenko.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Oliinychenko.jpg rename to data/magprog/assets/images/mentors/Oliinychenko.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Pantuev.jpg b/data/magprog/assets/images/mentors/Pantuev.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Pantuev.jpg rename to data/magprog/assets/images/mentors/Pantuev.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Pshenichnov.jpg b/data/magprog/assets/images/mentors/Pshenichnov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Pshenichnov.jpg rename to data/magprog/assets/images/mentors/Pshenichnov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Shagalov.jpg b/data/magprog/assets/images/mentors/Shagalov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Shagalov.jpg rename to data/magprog/assets/images/mentors/Shagalov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Skasyrskaya.jpg b/data/magprog/assets/images/mentors/Skasyrskaya.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Skasyrskaya.jpg rename to data/magprog/assets/images/mentors/Skasyrskaya.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Template.jpg b/data/magprog/assets/images/mentors/Template.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Template.jpg rename to data/magprog/assets/images/mentors/Template.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Usmanov.jpg b/data/magprog/assets/images/mentors/Usmanov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Usmanov.jpg rename to data/magprog/assets/images/mentors/Usmanov.jpg diff --git a/src/main/resources/magprog/assets/images/mentors/Zinoviev.jpg b/data/magprog/assets/images/mentors/Zinoviev.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/mentors/Zinoviev.jpg rename to data/magprog/assets/images/mentors/Zinoviev.jpg diff --git a/src/main/resources/magprog/assets/images/partners/FPMI.jpg b/data/magprog/assets/images/partners/FPMI.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/FPMI.jpg rename to data/magprog/assets/images/partners/FPMI.jpg diff --git a/src/main/resources/magprog/assets/images/partners/JBR.png b/data/magprog/assets/images/partners/JBR.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/JBR.png rename to data/magprog/assets/images/partners/JBR.png diff --git a/src/main/resources/magprog/assets/images/partners/LPI.jpg b/data/magprog/assets/images/partners/LPI.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/LPI.jpg rename to data/magprog/assets/images/partners/LPI.jpg diff --git a/src/main/resources/magprog/assets/images/partners/Tavrida.png b/data/magprog/assets/images/partners/Tavrida.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/Tavrida.png rename to data/magprog/assets/images/partners/Tavrida.png diff --git a/src/main/resources/magprog/assets/images/partners/aramco.jpg b/data/magprog/assets/images/partners/aramco.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/aramco.jpg rename to data/magprog/assets/images/partners/aramco.jpg diff --git a/src/main/resources/magprog/assets/images/partners/biotech.png b/data/magprog/assets/images/partners/biotech.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/biotech.png rename to data/magprog/assets/images/partners/biotech.png diff --git a/src/main/resources/magprog/assets/images/partners/desy.svg b/data/magprog/assets/images/partners/desy.svg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/desy.svg rename to data/magprog/assets/images/partners/desy.svg diff --git a/src/main/resources/magprog/assets/images/partners/hse.jpg b/data/magprog/assets/images/partners/hse.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/hse.jpg rename to data/magprog/assets/images/partners/hse.jpg diff --git a/src/main/resources/magprog/assets/images/partners/iki.jpg b/data/magprog/assets/images/partners/iki.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/iki.jpg rename to data/magprog/assets/images/partners/iki.jpg diff --git a/src/main/resources/magprog/assets/images/partners/inr_logo.png b/data/magprog/assets/images/partners/inr_logo.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/inr_logo.png rename to data/magprog/assets/images/partners/inr_logo.png diff --git a/src/main/resources/magprog/assets/images/partners/jetbrains.png b/data/magprog/assets/images/partners/jetbrains.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/jetbrains.png rename to data/magprog/assets/images/partners/jetbrains.png diff --git a/src/main/resources/magprog/assets/images/partners/jinr.png b/data/magprog/assets/images/partners/jinr.png similarity index 100% rename from src/main/resources/magprog/assets/images/partners/jinr.png rename to data/magprog/assets/images/partners/jinr.png diff --git a/src/main/resources/magprog/assets/images/partners/tink.jpg b/data/magprog/assets/images/partners/tink.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/partners/tink.jpg rename to data/magprog/assets/images/partners/tink.jpg diff --git a/src/main/resources/magprog/assets/images/team/Aivazov.jpg b/data/magprog/assets/images/team/Aivazov.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/team/Aivazov.jpg rename to data/magprog/assets/images/team/Aivazov.jpg diff --git a/src/main/resources/magprog/assets/images/team/muhina.jpg b/data/magprog/assets/images/team/muhina.jpg similarity index 100% rename from src/main/resources/magprog/assets/images/team/muhina.jpg rename to data/magprog/assets/images/team/muhina.jpg diff --git a/src/main/resources/magprog/assets/images/team/svetlichny.jpeg b/data/magprog/assets/images/team/svetlichny.jpeg similarity index 100% rename from src/main/resources/magprog/assets/images/team/svetlichny.jpeg rename to data/magprog/assets/images/team/svetlichny.jpeg diff --git a/src/main/resources/magprog/assets/js/breakpoints.min.js b/data/magprog/assets/js/breakpoints.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/breakpoints.min.js rename to data/magprog/assets/js/breakpoints.min.js diff --git a/src/main/resources/magprog/assets/js/browser.min.js b/data/magprog/assets/js/browser.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/browser.min.js rename to data/magprog/assets/js/browser.min.js diff --git a/src/main/resources/magprog/assets/js/jquery.min.js b/data/magprog/assets/js/jquery.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/jquery.min.js rename to data/magprog/assets/js/jquery.min.js diff --git a/src/main/resources/magprog/assets/js/jquery.scrollex.min.js b/data/magprog/assets/js/jquery.scrollex.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/jquery.scrollex.min.js rename to data/magprog/assets/js/jquery.scrollex.min.js diff --git a/src/main/resources/magprog/assets/js/jquery.scrolly.min.js b/data/magprog/assets/js/jquery.scrolly.min.js similarity index 100% rename from src/main/resources/magprog/assets/js/jquery.scrolly.min.js rename to data/magprog/assets/js/jquery.scrolly.min.js diff --git a/src/main/resources/magprog/assets/js/main.js b/data/magprog/assets/js/main.js similarity index 100% rename from src/main/resources/magprog/assets/js/main.js rename to data/magprog/assets/js/main.js diff --git a/src/main/resources/magprog/assets/js/util.js b/data/magprog/assets/js/util.js similarity index 100% rename from src/main/resources/magprog/assets/js/util.js rename to data/magprog/assets/js/util.js diff --git a/src/main/resources/magprog/assets/sass/base/_page.scss b/data/magprog/assets/sass/base/_page.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/base/_page.scss rename to data/magprog/assets/sass/base/_page.scss diff --git a/src/main/resources/magprog/assets/sass/base/_reset.scss b/data/magprog/assets/sass/base/_reset.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/base/_reset.scss rename to data/magprog/assets/sass/base/_reset.scss diff --git a/src/main/resources/magprog/assets/sass/base/_typography.scss b/data/magprog/assets/sass/base/_typography.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/base/_typography.scss rename to data/magprog/assets/sass/base/_typography.scss diff --git a/src/main/resources/magprog/assets/sass/components/_actions.scss b/data/magprog/assets/sass/components/_actions.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_actions.scss rename to data/magprog/assets/sass/components/_actions.scss diff --git a/src/main/resources/magprog/assets/sass/components/_box.scss b/data/magprog/assets/sass/components/_box.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_box.scss rename to data/magprog/assets/sass/components/_box.scss diff --git a/src/main/resources/magprog/assets/sass/components/_button.scss b/data/magprog/assets/sass/components/_button.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_button.scss rename to data/magprog/assets/sass/components/_button.scss diff --git a/src/main/resources/magprog/assets/sass/components/_contact.scss b/data/magprog/assets/sass/components/_contact.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_contact.scss rename to data/magprog/assets/sass/components/_contact.scss diff --git a/src/main/resources/magprog/assets/sass/components/_features.scss b/data/magprog/assets/sass/components/_features.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_features.scss rename to data/magprog/assets/sass/components/_features.scss diff --git a/src/main/resources/magprog/assets/sass/components/_form.scss b/data/magprog/assets/sass/components/_form.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_form.scss rename to data/magprog/assets/sass/components/_form.scss diff --git a/src/main/resources/magprog/assets/sass/components/_icon.scss b/data/magprog/assets/sass/components/_icon.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_icon.scss rename to data/magprog/assets/sass/components/_icon.scss diff --git a/src/main/resources/magprog/assets/sass/components/_icons.scss b/data/magprog/assets/sass/components/_icons.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_icons.scss rename to data/magprog/assets/sass/components/_icons.scss diff --git a/src/main/resources/magprog/assets/sass/components/_image.scss b/data/magprog/assets/sass/components/_image.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_image.scss rename to data/magprog/assets/sass/components/_image.scss diff --git a/src/main/resources/magprog/assets/sass/components/_list.scss b/data/magprog/assets/sass/components/_list.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_list.scss rename to data/magprog/assets/sass/components/_list.scss diff --git a/src/main/resources/magprog/assets/sass/components/_menu.scss b/data/magprog/assets/sass/components/_menu.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_menu.scss rename to data/magprog/assets/sass/components/_menu.scss diff --git a/src/main/resources/magprog/assets/sass/components/_row.scss b/data/magprog/assets/sass/components/_row.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_row.scss rename to data/magprog/assets/sass/components/_row.scss diff --git a/src/main/resources/magprog/assets/sass/components/_section.scss b/data/magprog/assets/sass/components/_section.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_section.scss rename to data/magprog/assets/sass/components/_section.scss diff --git a/src/main/resources/magprog/assets/sass/components/_split.scss b/data/magprog/assets/sass/components/_split.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_split.scss rename to data/magprog/assets/sass/components/_split.scss diff --git a/src/main/resources/magprog/assets/sass/components/_spotlights.scss b/data/magprog/assets/sass/components/_spotlights.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_spotlights.scss rename to data/magprog/assets/sass/components/_spotlights.scss diff --git a/src/main/resources/magprog/assets/sass/components/_table.scss b/data/magprog/assets/sass/components/_table.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_table.scss rename to data/magprog/assets/sass/components/_table.scss diff --git a/src/main/resources/magprog/assets/sass/components/_wrapper.scss b/data/magprog/assets/sass/components/_wrapper.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/components/_wrapper.scss rename to data/magprog/assets/sass/components/_wrapper.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_footer.scss b/data/magprog/assets/sass/layout/_footer.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_footer.scss rename to data/magprog/assets/sass/layout/_footer.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_header.scss b/data/magprog/assets/sass/layout/_header.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_header.scss rename to data/magprog/assets/sass/layout/_header.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_intro.scss b/data/magprog/assets/sass/layout/_intro.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_intro.scss rename to data/magprog/assets/sass/layout/_intro.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_sidebar.scss b/data/magprog/assets/sass/layout/_sidebar.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_sidebar.scss rename to data/magprog/assets/sass/layout/_sidebar.scss diff --git a/src/main/resources/magprog/assets/sass/layout/_wrapper.scss b/data/magprog/assets/sass/layout/_wrapper.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/layout/_wrapper.scss rename to data/magprog/assets/sass/layout/_wrapper.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_breakpoints.scss b/data/magprog/assets/sass/libs/_breakpoints.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_breakpoints.scss rename to data/magprog/assets/sass/libs/_breakpoints.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_functions.scss b/data/magprog/assets/sass/libs/_functions.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_functions.scss rename to data/magprog/assets/sass/libs/_functions.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_html-grid.scss b/data/magprog/assets/sass/libs/_html-grid.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_html-grid.scss rename to data/magprog/assets/sass/libs/_html-grid.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_mixins.scss b/data/magprog/assets/sass/libs/_mixins.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_mixins.scss rename to data/magprog/assets/sass/libs/_mixins.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_vars.scss b/data/magprog/assets/sass/libs/_vars.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_vars.scss rename to data/magprog/assets/sass/libs/_vars.scss diff --git a/src/main/resources/magprog/assets/sass/libs/_vendor.scss b/data/magprog/assets/sass/libs/_vendor.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/libs/_vendor.scss rename to data/magprog/assets/sass/libs/_vendor.scss diff --git a/src/main/resources/magprog/assets/sass/main.scss b/data/magprog/assets/sass/main.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/main.scss rename to data/magprog/assets/sass/main.scss diff --git a/src/main/resources/magprog/assets/sass/noscript.scss b/data/magprog/assets/sass/noscript.scss similarity index 100% rename from src/main/resources/magprog/assets/sass/noscript.scss rename to data/magprog/assets/sass/noscript.scss diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.eot b/data/magprog/assets/webfonts/fa-brands-400.eot similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.eot rename to data/magprog/assets/webfonts/fa-brands-400.eot diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.svg b/data/magprog/assets/webfonts/fa-brands-400.svg similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.svg rename to data/magprog/assets/webfonts/fa-brands-400.svg diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.ttf b/data/magprog/assets/webfonts/fa-brands-400.ttf similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.ttf rename to data/magprog/assets/webfonts/fa-brands-400.ttf diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.woff b/data/magprog/assets/webfonts/fa-brands-400.woff similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.woff rename to data/magprog/assets/webfonts/fa-brands-400.woff diff --git a/src/main/resources/magprog/assets/webfonts/fa-brands-400.woff2 b/data/magprog/assets/webfonts/fa-brands-400.woff2 similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-brands-400.woff2 rename to data/magprog/assets/webfonts/fa-brands-400.woff2 diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.eot b/data/magprog/assets/webfonts/fa-regular-400.eot similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.eot rename to data/magprog/assets/webfonts/fa-regular-400.eot diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.svg b/data/magprog/assets/webfonts/fa-regular-400.svg similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.svg rename to data/magprog/assets/webfonts/fa-regular-400.svg diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.ttf b/data/magprog/assets/webfonts/fa-regular-400.ttf similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.ttf rename to data/magprog/assets/webfonts/fa-regular-400.ttf diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.woff b/data/magprog/assets/webfonts/fa-regular-400.woff similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.woff rename to data/magprog/assets/webfonts/fa-regular-400.woff diff --git a/src/main/resources/magprog/assets/webfonts/fa-regular-400.woff2 b/data/magprog/assets/webfonts/fa-regular-400.woff2 similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-regular-400.woff2 rename to data/magprog/assets/webfonts/fa-regular-400.woff2 diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.eot b/data/magprog/assets/webfonts/fa-solid-900.eot similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.eot rename to data/magprog/assets/webfonts/fa-solid-900.eot diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.svg b/data/magprog/assets/webfonts/fa-solid-900.svg similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.svg rename to data/magprog/assets/webfonts/fa-solid-900.svg diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.ttf b/data/magprog/assets/webfonts/fa-solid-900.ttf similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.ttf rename to data/magprog/assets/webfonts/fa-solid-900.ttf diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.woff b/data/magprog/assets/webfonts/fa-solid-900.woff similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.woff rename to data/magprog/assets/webfonts/fa-solid-900.woff diff --git a/src/main/resources/magprog/assets/webfonts/fa-solid-900.woff2 b/data/magprog/assets/webfonts/fa-solid-900.woff2 similarity index 100% rename from src/main/resources/magprog/assets/webfonts/fa-solid-900.woff2 rename to data/magprog/assets/webfonts/fa-solid-900.woff2 diff --git a/src/main/resources/magprog/content/contacts.md b/data/magprog/content/contacts.md similarity index 100% rename from src/main/resources/magprog/content/contacts.md rename to data/magprog/content/contacts.md diff --git a/src/main/resources/magprog/content/enroll.md b/data/magprog/content/enroll.md similarity index 100% rename from src/main/resources/magprog/content/enroll.md rename to data/magprog/content/enroll.md diff --git a/src/main/resources/magprog/content/intro.md b/data/magprog/content/intro.md similarity index 100% rename from src/main/resources/magprog/content/intro.md rename to data/magprog/content/intro.md diff --git a/src/main/resources/magprog/content/mentors/Dolgonosov.md b/data/magprog/content/mentors/Dolgonosov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Dolgonosov.md rename to data/magprog/content/mentors/Dolgonosov.md diff --git a/src/main/resources/magprog/content/mentors/Dolgonosov[info].md b/data/magprog/content/mentors/Dolgonosov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Dolgonosov[info].md rename to data/magprog/content/mentors/Dolgonosov[info].md diff --git a/src/main/resources/magprog/content/mentors/Gertsenberger.md b/data/magprog/content/mentors/Gertsenberger.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Gertsenberger.md rename to data/magprog/content/mentors/Gertsenberger.md diff --git a/src/main/resources/magprog/content/mentors/Gertsenberger[info].md b/data/magprog/content/mentors/Gertsenberger[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Gertsenberger[info].md rename to data/magprog/content/mentors/Gertsenberger[info].md diff --git a/src/main/resources/magprog/content/mentors/Grinis.md b/data/magprog/content/mentors/Grinis.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Grinis.md rename to data/magprog/content/mentors/Grinis.md diff --git a/src/main/resources/magprog/content/mentors/Grinis[info].md b/data/magprog/content/mentors/Grinis[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Grinis[info].md rename to data/magprog/content/mentors/Grinis[info].md diff --git a/src/main/resources/magprog/content/mentors/Kalashev.md b/data/magprog/content/mentors/Kalashev.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kalashev.md rename to data/magprog/content/mentors/Kalashev.md diff --git a/src/main/resources/magprog/content/mentors/Kalashev[info].md b/data/magprog/content/mentors/Kalashev[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kalashev[info].md rename to data/magprog/content/mentors/Kalashev[info].md diff --git a/src/main/resources/magprog/content/mentors/Khokhriakov.md b/data/magprog/content/mentors/Khokhriakov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Khokhriakov.md rename to data/magprog/content/mentors/Khokhriakov.md diff --git a/src/main/resources/magprog/content/mentors/Khokhriakov[info].md b/data/magprog/content/mentors/Khokhriakov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Khokhriakov[info].md rename to data/magprog/content/mentors/Khokhriakov[info].md diff --git a/src/main/resources/magprog/content/mentors/Klimai.md b/data/magprog/content/mentors/Klimai.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Klimai.md rename to data/magprog/content/mentors/Klimai.md diff --git a/src/main/resources/magprog/content/mentors/Klimai[info].md b/data/magprog/content/mentors/Klimai[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Klimai[info].md rename to data/magprog/content/mentors/Klimai[info].md diff --git a/src/main/resources/magprog/content/mentors/Kostunin.md b/data/magprog/content/mentors/Kostunin.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kostunin.md rename to data/magprog/content/mentors/Kostunin.md diff --git a/src/main/resources/magprog/content/mentors/Kostunin[info].md b/data/magprog/content/mentors/Kostunin[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Kostunin[info].md rename to data/magprog/content/mentors/Kostunin[info].md diff --git a/src/main/resources/magprog/content/mentors/Nozik.md b/data/magprog/content/mentors/Nozik.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Nozik.md rename to data/magprog/content/mentors/Nozik.md diff --git a/src/main/resources/magprog/content/mentors/Nozik[info].md b/data/magprog/content/mentors/Nozik[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Nozik[info].md rename to data/magprog/content/mentors/Nozik[info].md diff --git a/src/main/resources/magprog/content/mentors/Oliinychenko.md b/data/magprog/content/mentors/Oliinychenko.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Oliinychenko.md rename to data/magprog/content/mentors/Oliinychenko.md diff --git a/src/main/resources/magprog/content/mentors/Oliinychenko[info].md b/data/magprog/content/mentors/Oliinychenko[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Oliinychenko[info].md rename to data/magprog/content/mentors/Oliinychenko[info].md diff --git a/src/main/resources/magprog/content/mentors/Pantuev.md b/data/magprog/content/mentors/Pantuev.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pantuev.md rename to data/magprog/content/mentors/Pantuev.md diff --git a/src/main/resources/magprog/content/mentors/Pantuev[info].md b/data/magprog/content/mentors/Pantuev[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pantuev[info].md rename to data/magprog/content/mentors/Pantuev[info].md diff --git a/src/main/resources/magprog/content/mentors/Pshenichnov.md b/data/magprog/content/mentors/Pshenichnov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pshenichnov.md rename to data/magprog/content/mentors/Pshenichnov.md diff --git a/src/main/resources/magprog/content/mentors/Pshenichnov[info].md b/data/magprog/content/mentors/Pshenichnov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Pshenichnov[info].md rename to data/magprog/content/mentors/Pshenichnov[info].md diff --git a/src/main/resources/magprog/content/mentors/Shagalov.md b/data/magprog/content/mentors/Shagalov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Shagalov.md rename to data/magprog/content/mentors/Shagalov.md diff --git a/src/main/resources/magprog/content/mentors/Shagalov[info].md b/data/magprog/content/mentors/Shagalov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Shagalov[info].md rename to data/magprog/content/mentors/Shagalov[info].md diff --git a/src/main/resources/magprog/content/mentors/Skasyrskaya.md b/data/magprog/content/mentors/Skasyrskaya.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Skasyrskaya.md rename to data/magprog/content/mentors/Skasyrskaya.md diff --git a/src/main/resources/magprog/content/mentors/Skasyrskaya[info].md b/data/magprog/content/mentors/Skasyrskaya[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Skasyrskaya[info].md rename to data/magprog/content/mentors/Skasyrskaya[info].md diff --git a/src/main/resources/magprog/content/mentors/Usmanov.md b/data/magprog/content/mentors/Usmanov.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Usmanov.md rename to data/magprog/content/mentors/Usmanov.md diff --git a/src/main/resources/magprog/content/mentors/Usmanov[info].md b/data/magprog/content/mentors/Usmanov[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Usmanov[info].md rename to data/magprog/content/mentors/Usmanov[info].md diff --git a/src/main/resources/magprog/content/mentors/Zinoviev.md b/data/magprog/content/mentors/Zinoviev.md similarity index 100% rename from src/main/resources/magprog/content/mentors/Zinoviev.md rename to data/magprog/content/mentors/Zinoviev.md diff --git a/src/main/resources/magprog/content/mentors/Zinoviev[info].md b/data/magprog/content/mentors/Zinoviev[info].md similarity index 100% rename from src/main/resources/magprog/content/mentors/Zinoviev[info].md rename to data/magprog/content/mentors/Zinoviev[info].md diff --git a/src/main/resources/magprog/content/mentors/template.md b/data/magprog/content/mentors/template.md similarity index 100% rename from src/main/resources/magprog/content/mentors/template.md rename to data/magprog/content/mentors/template.md diff --git a/src/main/resources/magprog/content/partners.yaml b/data/magprog/content/partners.yaml similarity index 100% rename from src/main/resources/magprog/content/partners.yaml rename to data/magprog/content/partners.yaml diff --git a/src/main/resources/magprog/content/program.md b/data/magprog/content/program.md similarity index 100% rename from src/main/resources/magprog/content/program.md rename to data/magprog/content/program.md diff --git a/src/main/resources/magprog/content/recommendedCourses.md b/data/magprog/content/recommendedCourses.md similarity index 100% rename from src/main/resources/magprog/content/recommendedCourses.md rename to data/magprog/content/recommendedCourses.md diff --git a/src/main/resources/magprog/content/team/Aivazov.md b/data/magprog/content/team/Aivazov.md similarity index 100% rename from src/main/resources/magprog/content/team/Aivazov.md rename to data/magprog/content/team/Aivazov.md diff --git a/data/magprog/content/team/muhina.md b/data/magprog/content/team/muhina.md new file mode 100644 index 0000000..e5a83e4 --- /dev/null +++ b/data/magprog/content/team/muhina.md @@ -0,0 +1,10 @@ +--- +content_type: magprog_team +name: Татьяна Мухина +id: muhina +order: 3 +photo: images/team/muhina.jpg +language: ru +--- + +Менеджер образовательных проектов. \ No newline at end of file diff --git a/src/main/resources/magprog/content/team/nozik.md b/data/magprog/content/team/nozik.md similarity index 100% rename from src/main/resources/magprog/content/team/nozik.md rename to data/magprog/content/team/nozik.md diff --git a/src/main/resources/magprog/content/team/svetlichnii.md b/data/magprog/content/team/svetlichnii.md similarity index 99% rename from src/main/resources/magprog/content/team/svetlichnii.md rename to data/magprog/content/team/svetlichnii.md index 986dd1a..40f7b32 100644 --- a/src/main/resources/magprog/content/team/svetlichnii.md +++ b/data/magprog/content/team/svetlichnii.md @@ -6,6 +6,7 @@ order: 2 photo: images/team/svetlichny.jpeg language: ru --- + **Заместитель руководителя** Преподаватель кафедры общей физики МФТИ. diff --git a/gradle.properties b/gradle.properties index 04320d7..13008f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,3 @@ kotlin.code.style=official -toolsVersion=0.11.4-kotlin-1.6.20 - -development=true +toolsVersion=0.11.4-kotlin-1.6.20 \ No newline at end of file diff --git a/src/main/kotlin/ru/mipt/spc/Application.kt b/src/main/kotlin/ru/mipt/spc/Application.kt index 47f197e..6591d9f 100644 --- a/src/main/kotlin/ru/mipt/spc/Application.kt +++ b/src/main/kotlin/ru/mipt/spc/Application.kt @@ -1,7 +1,9 @@ package ru.mipt.spc import io.ktor.http.HttpStatusCode +import io.ktor.server.application.Application import io.ktor.server.application.install +import io.ktor.server.application.log import io.ktor.server.engine.embeddedServer import io.ktor.server.netty.Netty import io.ktor.server.plugins.statuspages.StatusPages @@ -13,7 +15,9 @@ import ru.mipt.spc.magprog.magProgPage import space.kscience.dataforge.context.Context import space.kscience.snark.SnarkPlugin import java.net.URI -import java.nio.file.* +import java.nio.file.FileSystems +import java.nio.file.Files +import java.nio.file.Path import kotlin.io.path.createDirectories import kotlin.io.path.isRegularFile import kotlin.io.path.relativeTo @@ -25,25 +29,26 @@ fun CommonAttributeGroupFacade.css(block: CssBuilder.() -> Unit) { class AuthenticationException : RuntimeException() class AuthorizationException : RuntimeException() -private fun useResource(uri: URI, block: (Path) -> Unit) { - try { - block(Paths.get(uri)) - } catch (ex: FileSystemNotFoundException) { +private fun Application.resolveData(uri: URI, targetPath: Path): Path { + if (Files.isDirectory(targetPath)) { + log.info("Using existing data directory at $targetPath.") + } else { + log.info("Copying data from $uri into $targetPath.") + targetPath.createDirectories() //Copy everything into a temporary directory FileSystems.newFileSystem(uri, emptyMap()).use { fs -> val rootPath: Path = fs.provider().getPath(uri) - val tmpDirectory = Files.createTempDirectory("snark") Files.walk(rootPath).forEach { source: Path -> if (source.isRegularFile()) { val relative = source.relativeTo(rootPath).toString() - val destination: Path = tmpDirectory.resolve(relative) + val destination: Path = targetPath.resolve(relative) destination.parent.createDirectories() Files.copy(source, destination) } } - block(tmpDirectory) } } + return targetPath } @@ -51,7 +56,10 @@ fun main() { val context = Context("spc-site") { plugin(SnarkPlugin) } - embeddedServer(Netty, port = 7080, watchPaths = listOf("classes", "resources")) { + + val dataPath = Path.of("data") + + embeddedServer(Netty, port = 7080, watchPaths = listOf("classes")) { install(StatusPages) { exception { call, _ -> call.respond(HttpStatusCode.Unauthorized) @@ -60,9 +68,14 @@ fun main() { call.respond(HttpStatusCode.Forbidden) } } - useResource(javaClass.getResource("/magprog")!!.toURI()) { path -> - magProgPage(context, rootPath = path) - } + + val magProgDataPath = resolveData( + javaClass.getResource("/magprog")!!.toURI(), + dataPath.resolve("magprog") + ) + + magProgPage(context, rootPath = magProgDataPath) + }.start(wait = true) } diff --git a/src/main/kotlin/ru/mipt/spc/Templating.kt b/src/main/kotlin/ru/mipt/spc/Templating.kt deleted file mode 100644 index e80d523..0000000 --- a/src/main/kotlin/ru/mipt/spc/Templating.kt +++ /dev/null @@ -1,60 +0,0 @@ -package ru.mipt - -import io.ktor.http.ContentType -import io.ktor.server.application.Application -import io.ktor.server.application.ApplicationCall -import io.ktor.server.application.call -import io.ktor.server.html.respondHtml -import io.ktor.server.response.respondText -import io.ktor.server.routing.get -import io.ktor.server.routing.routing -import kotlinx.css.* -import kotlinx.html.* - -fun Application.configureTemplating() { - - - routing { - get("/html-dsl") { - call.respondHtml { - body { - h1 { +"HTML" } - ul { - for (n in 1..10) { - li { +"$n" } - } - } - } - } - } - get("/styles.css") { - call.respondCss { - body { - backgroundColor = Color.darkBlue - margin(0.px) - } - rule("h1.page-title") { - color = Color.white - } - } - } - - get("/html-css-dsl") { - call.respondHtml { - head { - link(rel = "stylesheet", href = "/styles.css", type = "text/css") - } - body { - h1(classes = "page-title") { - +"Hello from Ktor!" - } - } - } - } - } -} - -suspend inline fun ApplicationCall.respondCss(builder: CssBuilder.() -> Unit) { - this.respondText(CssBuilder().apply(builder).toString(), ContentType.Text.CSS) -} - diff --git a/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt b/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt index 4837740..f57c17b 100644 --- a/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt +++ b/src/main/kotlin/ru/mipt/spc/magprog/magProgPage.kt @@ -209,6 +209,10 @@ context(PageContext) internal fun HTML.magProgHead(title: String) { rel = "stylesheet" href = resolveRef("css/main.css") } + link { + rel = "shortcut icon" + href = resolveRef("images/favicon-32x32.png") + } noScript { link { rel = "stylesheet" diff --git a/src/main/kotlin/ru/mipt/spc/snapshot.kt b/src/main/kotlin/ru/mipt/spc/snapshot.kt deleted file mode 100644 index ba2aa61..0000000 --- a/src/main/kotlin/ru/mipt/spc/snapshot.kt +++ /dev/null @@ -1,12 +0,0 @@ -package ru.mipt.spc - -//private fun snapshotRoute(route: Route, path: Path){ -// route.children.forEach { -// it. -// } -//} -// -// -//fun Application.snapshotTo(path: Path): Job = launch{ -// pluginOrNull(Routing)?.children -//} \ No newline at end of file diff --git a/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt b/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt index 03a7bca..4629b96 100644 --- a/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt +++ b/src/main/kotlin/space/kscience/snark/DirectoryDataTree.kt @@ -1,6 +1,11 @@ package space.kscience.snark +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.flow +import kotlinx.coroutines.flow.shareIn import space.kscience.dataforge.data.Data +import space.kscience.dataforge.data.DataSource import space.kscience.dataforge.data.DataTree import space.kscience.dataforge.data.DataTreeItem import space.kscience.dataforge.io.IOPlugin @@ -11,13 +16,18 @@ import space.kscience.dataforge.meta.Meta import space.kscience.dataforge.meta.copy import space.kscience.dataforge.names.* import java.nio.file.Path +import java.nio.file.StandardWatchEventKinds import java.nio.file.attribute.BasicFileAttributes +import kotlin.coroutines.CoroutineContext import kotlin.io.path.* import kotlin.reflect.KType import kotlin.reflect.typeOf -class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree { +class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree, DataSource { + + override val coroutineContext: CoroutineContext get() = io.context.coroutineContext + override val dataType: KType get() = typeOf() @@ -33,15 +43,17 @@ class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree META_FILE_UPDATE_TIME_KEY put attributes.lastModifiedTime().toInstant().toString() META_FILE_CREATE_TIME_KEY put attributes.creationTime().toInstant().toString() } - return Data(meta){ + return Data(meta) { envelope.data?.toByteArray() ?: ByteArray(0) } } + private fun Path.toName(): Name = Name(flatMap {it.nameWithoutExtension.parseAsName().tokens}) + override val items: Map> get() = path.listDirectoryEntries().associate { childPath -> - val fileName = childPath.fileName.nameWithoutExtension + //val fileName = childPath.fileName.nameWithoutExtension val item: DataTreeItem = if (childPath.isDirectory()) { DataTreeItem.Node(DirectoryDataTree(io, childPath)) @@ -49,21 +61,40 @@ class DirectoryDataTree(val io: IOPlugin, val path: Path) : DataTree DataTreeItem.Leaf(readFile(childPath)) } - val name = Name.parse(fileName) - if(name.length == 1) { + val name = childPath.fileName.toName()//Name.parse(fileName) + if (name.length == 1) { name.first() to item - } else{ + } else { TODO("Segmented names are not supported") } } + override val updates: SharedFlow by lazy { + val watchService = path.fileSystem.newWatchService() + + path.register( + watchService, + StandardWatchEventKinds.ENTRY_CREATE, + StandardWatchEventKinds.ENTRY_MODIFY, + StandardWatchEventKinds.ENTRY_DELETE + ) + + flow { + while (true) { + val key = watchService.take() ?: break + key.pollEvents().map { it.context() }.filterIsInstance().forEach { + emit(it.toName()) + } + key.reset() + } + }.shareIn(this, SharingStarted.Eagerly) + } + companion object { val META_FILE_KEY = "file".asName() val META_FILE_PATH_KEY = META_FILE_KEY + "path" val META_FILE_EXTENSION_KEY = META_FILE_KEY + "extension" - val META_FILE_CREATE_TIME_KEY = META_FILE_KEY +"created" - val META_FILE_UPDATE_TIME_KEY = META_FILE_KEY +"update" + val META_FILE_CREATE_TIME_KEY = META_FILE_KEY + "created" + val META_FILE_UPDATE_TIME_KEY = META_FILE_KEY + "update" } -} - -//TODO add transforming provider instead of ByteArray DataSet \ No newline at end of file +} \ No newline at end of file diff --git a/src/main/resources/magprog/content/team/muhina.md b/src/main/resources/magprog/content/team/muhina.md deleted file mode 100644 index 0f332f4..0000000 --- a/src/main/resources/magprog/content/team/muhina.md +++ /dev/null @@ -1,5 +0,0 @@ -content_type: magprog_team name: Татьяна Мухина id: muhina order: 3 photo: images/team/muhina.jpg language: ru - -Образовательный менеджер лаборатории - -Студентка магистерской программы «Научное программное обеспечение» \ No newline at end of file