diff --git a/balloon.py b/balloon.py index a465ad3..c5a5512 100644 --- a/balloon.py +++ b/balloon.py @@ -104,30 +104,27 @@ def main() -> None: # Incorrect number of arguments # Long help flag # Short help flag - if len(sys.argv) != 2 or ( + if len(sys.argv) != 3 or ( sys.argv[0] == '--help' or sys.argv[0] == '-h' ): help() return - file_name = sys.argv[1].removeprefix('src/') - - with open(str(WORK_DIR) + 'src/' + file_name, 'rt') as f: + with open(str(WORK_DIR) + sys.argv[1], 'rt') as f: html_src = HTML(f.read()) + # Patch to make sure that target paths are available. try: - os.makedirs(str(WORK_DIR) + 'target/' + os.path.dirname(file_name)) + os.makedirs(str(WORK_DIR) + os.path.dirname(sys.argv[2])) except FileExistsError: pass - with open(str(WORK_DIR) + 'target/' + file_name, 'w') as f: + with open(str(WORK_DIR) + sys.argv[2], 'w') as f: f.write(html_src.write()) def help() -> None: - print('Usage: python balloon.py [OPTIONS] ') - print() - print('Note: balloon implicitly assumes that is in src/, and should inflate into target/') + print('Usage: python balloon.py [OPTIONS] ') print() print() print('Options:') diff --git a/build.sh b/build.sh index b9ea92f..cf662fb 100755 --- a/build.sh +++ b/build.sh @@ -1,12 +1,13 @@ -#! /usr/bin/bash +#!/usr/bin/bash # # I'm new to bash scripting, so give me a break. # I know that this is probably crap, but it's cheap, dirty, and does the job. -python=~/.pyenv/versions/3.12.9/bin/python green='\e[32m' cyan='\e[36m' +src_prefix='src/' + # The "a" is just to make this work if no characters are present in $@ args=$@ args+=('a') @@ -18,57 +19,54 @@ else args='inflate style copy' fi +# Cheap patch for copying in case the paths aren't present. mkdir -p target/.well-known for x in $args do + cmd='' + + files='' + + src_ext='' + target_ext='' + if [ "$x" == 'inflate' ] then - echo -e "$green"Inflating... + cmd='~/.pyenv/versions/3.12.9/bin/python balloon.py' files=(`ls src/*.html`) + # Because bash won't let **/ find files without another nested dir. + files+=(`ls src/blog/*.html`) # This wouldn't be needed under zsh. + files+=(`ls src/blog/**/*.html`) files+=(`ls src/errors/*.html`) - files+=(`ls src/blog/*.html`) - for html in "${files[@]}" - do - echo -e " $cyan$html" - - eval $python 'balloon.py' $html - done + action=Inflating... elif [ "$x" == 'style' ] then - echo -e "$green"Styling... + cmd='sass' - files=( - 'style' - 'errors/style' - 'blog/style' - ) + files=(`ls src/**/style.scss`) - for stylesheet in "${files[@]}" - do - echo -e "$cyan src/$stylesheet.scss -> target/$stylesheet.css" - sass src/$stylesheet.scss target/$stylesheet.css - done + src_ext='.scss' + target_ext='.css' + + action=Styling... elif [ "$x" == 'copy' ] then - echo -e "$green"Copying... + cmd='cp -Ru' files=( - '.well-known/security.txt' - 'img' - 'robots.txt' + 'src/.well-known/' + 'src/feed/' + 'src/img/' + 'src/robots.txt' ) - for item in "${files[@]}" - do - echo -e "$cyan src/$item" + action=Copying... - cp -Ru src/$item target/$item - done else echo -e "$green"Usage:"$cyan" build.sh [OPTIONS] [COMMAND] echo @@ -79,5 +77,20 @@ do echo ' inflate Inflate the HTML source' echo ' style Compile SCSS to CSS' echo ' copy Copy assets to target' + + break fi + + echo -e "$green$action" + + for src in "${files[@]}" + do + target="${src//$src_prefix}" + target="${target//$src_ext}" + target="target/$target$target_ext" + + echo -e "$cyan $src -> $target" + + eval "$cmd $src $target" + done done