Shell Script to Build Static Websites

I am reviewing the build and deployment process of my blog on the server. So here, I will discuss the build script I created to address the issue.

Its purpose is to build a static website using a simple project structure as follows:

project-source-folder/
	templates/
		header.html
		footer.html
	pages/
		index.html
		my-post.html

Simply put, for each html file inside pages/ that is not named “index.html”, eg. “my-post.html”, the script generates a new folder, named the same name as the file name - in this example: my-post/ - then embraces the file content with the header and footer template files - that are defined inside the templates folder - name it "index.html", and puts it inside the created folder as in the image below. All the output generated goes inside an out/ folder that will be later renamed to posts/

project-source-folder/
	out/
		index.html
		my-post/
			index.html
	templates/
		header.html
		footer.html
	pages/
		index.html
		my-post.html

If there is a file named "index.html" inside the pages/ folder, that file will also be embraced by the header and footer templates defined, but no folder will be created to contain it, after processed. As it is the index file, it will be saved in the root of the output folder: in the root of out/ directory.

Example of the final result of the site directory structure deployed:

project-source-folder/
	posts/
		index.html
		my-post/
			index.html
	templates/
		header.html
		footer.html
	pages/
		index.html
		my-post.html

To use the script, you must:

  1. Set your project as the structure shown earlier
  2. Call the script, passing in the first parameter, the project folder name (without putting a slash at the end of the folder name):
    • $ ./dab3x.sh project-source-folder