chore: better folder structure

This commit is contained in:
Winston Smith 2023-12-05 09:16:30 +01:00
parent c0facbd8a9
commit e66a4f0834
No known key found for this signature in database
GPG Key ID: DFD784DB2A6F7A07
5 changed files with 17 additions and 6 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.env .env
!jekyll/descriptions/blog_description
jekyll/** jekyll/**

View File

@ -3,6 +3,7 @@ FROM ruby:3.2.2
RUN useradd -ms /bin/bash --uid 1000 jekyll RUN useradd -ms /bin/bash --uid 1000 jekyll
RUN mkdir -p -m 0755 /app/jekyll RUN mkdir -p -m 0755 /app/jekyll
RUN mkdir -p -m 0755 /opt/jekyll RUN mkdir -p -m 0755 /opt/jekyll
COPY ./entrypoint.sh /opt/jekyll
VOLUME $PWD/data:/opt/jekyll VOLUME $PWD/data:/opt/jekyll
RUN chmod +x /opt/jekyll/ && \ RUN chmod +x /opt/jekyll/ && \
chown -R 1000:1000 /opt/jekyll && \ chown -R 1000:1000 /opt/jekyll && \

View File

@ -9,13 +9,15 @@ Counting on my modest shell scripting skills, I managed to give life to an abomi
## How to use it ? ## How to use it ?
- Edit `./data/.env` to fit your needs. - Edit `./data/.env` to fit your needs. A sample is provided.
- Create `./data/<blog_name>_description.txt`, with the wanted website description. - Create `./jekyll/descriptions/<blog_name>_description.txt`, with the wanted website description.
**Be carefull to remove whitespaces at line start**. It will not properly indented when put in the `_config.yml`, fudging up the description format. **Be carefull to remove whitespaces at line start**. It will not properly indented when put in the `_config.yml`, fudging up the description format.
Some sed hackity-hack are done but I can't assure you that it will be easy on your eyes afterwards...
- Build the image via the provided `docker-compose.yml` file. - Build the image via the provided `docker-compose.yml` file.
- Run the service. - Run the service.
Jekyll is started by default in "production mode", a.k.a. it will just build static files. If you want your files to be served by jekyll for testing needs, just change `JEKYLL_ENV` to anything other that `production`. Jekyll is started by default in "production mode", a.k.a. it will just build static files from `./jekyll/$BLOG_NAME/` content and put in `./jekyll/$BLOG_NAME/_site` which you would serve via your prefered reverse-proxy.
If you want your files to be served by jekyll (for testing needs, enjoying the glorious live-reload feature), just change `JEKYLL_ENV` to anything other that `production`.
Variables in .env and the site description are updated at container restart. Variables in .env and the site description are updated at container restart.
**Keep in mind that changing your site name (with `BLOG_NAME` var) will fudge up all reference files (site description, site path etc.).** **Keep in mind that changing your site name (with `BLOG_NAME` var) will fudge up all reference files (site description, site path etc.).**
@ -23,3 +25,10 @@ Variables in .env and the site description are updated at container restart.
This software is provided as-is and is the offspring of a humble sysadmin mind, constantly learning new things. This software is provided as-is and is the offspring of a humble sysadmin mind, constantly learning new things.
It will be improved the time beeing. It will be improved the time beeing.
## TO-DO
- Properly configure the live-reload port feature.
- More robust code
- More easier to use
- templates

View File

@ -46,10 +46,10 @@ update_config() {
update_description() { update_description() {
initial_description=$(sed -n '/^description/,/^baseurl/p' ${SITE_PATH}/_config.yml | sed '/^description/d' | initial_description=$(sed -n '/^description/,/^baseurl/p' ${SITE_PATH}/_config.yml | sed '/^description/d' |
sed '/^baseurl: ""/d' | sed 's/^[[:space:]]*//' | sed '/^description:/,/^baseurl:/ { /^description:/n; /^baseurl:/! { /^$/d; } }') sed '/^baseurl: ""/d' | sed 's/^[[:space:]]*//' | sed '/^description:/,/^baseurl:/ { /^description:/n; /^baseurl:/! { /^$/d; } }')
current_description=$(sed 's/^[[:space:]]*//' /opt/jekyll/${BLOG_NAME}_description.txt) current_description=$(sed 's/^[[:space:]]*//' /app/jekyll/descriptions/${BLOG_NAME}_description.txt)
[[ "$initial_description" != "$current_description" && ! -z $current_description ]] && { [[ "$initial_doptescription" != "$current_description" && ! -z $current_description ]] && {
echo "Config change detected on site description: updating _config.yml" echo "Config change detected on site description: updating _config.yml"
sed -i "/^description/,/^baseurl:/!b;//!d;/^description/r /opt/jekyll/${BLOG_NAME}_description.txt" ${SITE_PATH}/_config.yml sed -i "/^description/,/^baseurl:/!b;//!d;/^description/r /app/jekyll/descriptions/${BLOG_NAME}_description.txt" ${SITE_PATH}/_config.yml
sed -i '/^description:/,/^baseurl:/ { /^description:/n; /^baseurl:/! s/^[^[:space:]]/ &/; }' ${SITE_PATH}/_config.yml sed -i '/^description:/,/^baseurl:/ { /^description:/n; /^baseurl:/! s/^[^[:space:]]/ &/; }' ${SITE_PATH}/_config.yml
} || { } || {
echo "No change or empty variable for site $BLOG_NAME description, continuing..." echo "No change or empty variable for site $BLOG_NAME description, continuing..."