A "coreutil" static site generator

feat: move 'make -l' into own 'list' cmd

+40 -37
+38 -35
cuss
··· 97 97 F) 98 98 CUSS_FOOTER_FILE="${CUSS_TEMPLATE_DIR}/$OPTARG" 99 99 ;; 100 - l) 101 - cmd_make_list "$OPTARG" 102 - return 103 - ;; 104 100 m) 105 - makefile 101 + cmd_make_makefile 106 102 return 107 103 ;; 108 104 ?) ··· 117 113 118 114 # generate cuss makefile in tmp folder 119 115 makefiletmp=$(mktemp) 120 - makefile > "$makefiletmp" 116 + cmd_make_makefile > "$makefiletmp" 121 117 122 118 export CUSS="$0" 123 119 export CUSS_TEMPLATE_DIR ··· 134 130 rm "$makefiletmp" 135 131 } 136 132 137 - cmd_make_list() { 138 - case "$1" in 139 - m) 140 - cmd_make_list_md 133 + cmd_make_makefile() { 134 + mf="\ 135 + src = \$(shell \$(CUSS) list markdown) 136 + out = \$(src:.md=.html) 137 + deps = \$(shell \$(CUSS) list asset) 138 + 139 + site: \$(out) 140 + 141 + print-%: 142 + @echo \$* = \$(\$*) 143 + 144 + %.html: %.md 145 + \$(CUSS) generate \$< > \$@" 146 + 147 + echo "$mf" | unexpand -t 4 | sed 's/^\t//' 148 + } 149 + 150 + cmd_list() { 151 + case "${1:-}" in 152 + markdown|m) 153 + cmd_list_md 141 154 ;; 142 - a) 143 - cmd_make_list_assets 155 + asset|a) 156 + cmd_list_asset 144 157 ;; 145 158 *) 146 159 usage ··· 148 161 esac 149 162 } 150 163 151 - cmd_make_list_md() { 164 + cmd_list_md() { 152 165 _find ./ -name '*.md' -type f 153 166 } 154 167 155 - cmd_make_list_assets() { 168 + cmd_list_asset() { 156 169 _find ./ -regextype egrep \ 157 170 -regex '.*\.(jpg|png|gif|css|tpl)' -type f 158 171 } 159 172 160 - makefile() { 161 - mf="\ 162 - src = \$(shell \$(CUSS) make -lm) 163 - out = \$(src:.md=.html) 164 - deps = \$(shell \$(CUSS) make -la) 165 - 166 - site: \$(out) 167 - 168 - print-%: 169 - @echo \$* = \$(\$*) 170 - 171 - %.html: %.md 172 - \$(CUSS) generate \$< > \$@" 173 - 174 - echo "$mf" | unexpand -t 4 | sed 's/^\t//' 175 - } 176 - 177 173 usage() { 178 174 echo "Usage: $(basename "$0") command [options]" 179 175 echo 180 176 echo "Commands:" 181 177 echo " generate Build HTML from single Markdown file" 182 178 echo " make Build entire site" 179 + echo " list List source and assets in site" 183 180 echo 184 181 echo "Command 'generate' is:" 185 182 echo " generate <markdown> [html]" ··· 189 186 echo " -T <dir> Set template directory to dir" 190 187 echo " -H <file> Set header file file (relative to -T)" 191 188 echo " -F <file> Set footer file file (relative to -T)" 192 - echo " -l <type> List all files of type in site" 193 189 echo " -m Output the cuss Makefile" 194 190 echo 195 - echo " <type> is:" 196 - echo " m Markdown files" 197 - echo " a Asset files (jpg|png|gif|css|tpl)" 191 + echo "Command 'list' is:" 192 + echo " list <type>" 193 + echo 194 + echo " <type> is:" 195 + echo " markdown, m Markdown files .md" 196 + echo " asset, a Asset files .(jpg|png|gif|css|tpl)" 198 197 exit 199 198 } 200 199 ··· 207 206 make) 208 207 shift 209 208 cmd_make "$@" 209 + ;; 210 + list) 211 + shift 212 + cmd_list "$@" 210 213 ;; 211 214 *) 212 215 usage
+2 -2
tests/make.bats
··· 39 39 } 40 40 41 41 test_make_list_m() { #@test 42 - run ../../cuss make -l m 42 + run ../../cuss list markdown 43 43 check_output "${src[@]}" 44 44 } 45 45 46 46 test_make_list_a() { #@test 47 - run ../../cuss make -l a 47 + run ../../cuss list asset 48 48 check_output "${ass[@]}" 49 49 } 50 50