diff --git a/src/components/Generator/Generator.tsx b/src/components/Generator/Generator.tsx index d11f8de..c0d97a8 100644 --- a/src/components/Generator/Generator.tsx +++ b/src/components/Generator/Generator.tsx @@ -18,6 +18,7 @@ export type GeneratorSettings = { checkoutGitRequest: 'none' | 'github' | 'gitlab'; configureGitHooks: boolean; fileUtilities: boolean; + appUtilities: boolean; }; const Generator = (): ReactElement => { diff --git a/src/components/Generator/GeneredTaskfile/SaveFile/SaveFile.tsx b/src/components/Generator/GeneredTaskfile/SaveFile/SaveFile.tsx index 8a94846..baeb701 100644 --- a/src/components/Generator/GeneredTaskfile/SaveFile/SaveFile.tsx +++ b/src/components/Generator/GeneredTaskfile/SaveFile/SaveFile.tsx @@ -1,6 +1,6 @@ 'use client'; -import {ReactElement, useState} from 'react'; +import { ReactElement, useState } from 'react'; import styles from './save-file.module.scss'; diff --git a/src/components/Generator/GeneredTaskfile/addons/addons.ts b/src/components/Generator/GeneredTaskfile/addons/addons.ts index 2a0eb60..6f0dfba 100644 --- a/src/components/Generator/GeneredTaskfile/addons/addons.ts +++ b/src/components/Generator/GeneredTaskfile/addons/addons.ts @@ -4,6 +4,7 @@ import { TaskfileAddons } from '@/components/Generator/GeneredTaskfile/taskfile' import runtime from './runtime'; import git from './git'; import fileUtilities from './fileUtilities'; +import appUtilities from '@/components/Generator/GeneredTaskfile/addons/appUtilities'; /** * Render addons for the Taskfile based on the generator settings @@ -15,6 +16,7 @@ const renderAddons = (settings: GeneratorSettings, addons: TaskfileAddons): void runtime(settings, addons); git(settings, addons); fileUtilities(settings, addons); + appUtilities(settings, addons); }; export default renderAddons; diff --git a/src/components/Generator/GeneredTaskfile/addons/appUtilities/app-utilities.sh b/src/components/Generator/GeneredTaskfile/addons/appUtilities/app-utilities.sh new file mode 100644 index 0000000..891366a --- /dev/null +++ b/src/components/Generator/GeneredTaskfile/addons/appUtilities/app-utilities.sh @@ -0,0 +1,8 @@ +function app:ensure { # Abort if the desired program is not installed + if [ ! $(which "$1") ]; then + echo "Missing required application ${RED}$1${RESET}. Install it before tying again." + exit 1 + else + echo "Application ${GREEN}$1${RESET} is installed."; + fi +} diff --git a/src/components/Generator/GeneredTaskfile/addons/appUtilities/appUtilities.ts b/src/components/Generator/GeneredTaskfile/addons/appUtilities/appUtilities.ts new file mode 100644 index 0000000..6952dfa --- /dev/null +++ b/src/components/Generator/GeneredTaskfile/addons/appUtilities/appUtilities.ts @@ -0,0 +1,12 @@ +import { GeneratorSettings } from '@/components/Generator'; +import { TaskfileAddons } from '@/components/Generator/GeneredTaskfile/taskfile'; +import loadTemplate from '@/helpers/loadTemplate'; +import appUtilitiesSh from './app-utilities.sh'; + +const appUtilities = (settings: GeneratorSettings, addon: TaskfileAddons): void => { + if (settings.appUtilities) { + addon.utilityFunctions.push(loadTemplate(appUtilitiesSh)); + } +}; + +export default appUtilities; diff --git a/src/components/Generator/GeneredTaskfile/addons/appUtilities/index.ts b/src/components/Generator/GeneredTaskfile/addons/appUtilities/index.ts new file mode 100644 index 0000000..8fd73b0 --- /dev/null +++ b/src/components/Generator/GeneredTaskfile/addons/appUtilities/index.ts @@ -0,0 +1 @@ +export { default } from './appUtilities'; diff --git a/src/components/Generator/GeneredTaskfile/addons/fileUtilities/file-utilities.sh b/src/components/Generator/GeneredTaskfile/addons/fileUtilities/file-utilities.sh index a55d6f1..b097b1d 100644 --- a/src/components/Generator/GeneredTaskfile/addons/fileUtilities/file-utilities.sh +++ b/src/components/Generator/GeneredTaskfile/addons/fileUtilities/file-utilities.sh @@ -1,15 +1,17 @@ function file:ensure { # Abort if the desired file is not found if [ ! -f $1 ]; then - echo -e "${RED}Missing required file: ${YELLOW}$1${RESET}" + echo -e "Missing required file ${RED}$1${RESET}, make sure it is created." exit 1 + else + echo "File ${GREEN}$1${RESET} is present."; fi } -function file:ensure-copy { # file:ensure-copy $COPY_TARGET $COPY_SOURCE - if [ ! -f $1 ]; then +function file:ensure-copy { # file:ensure-copy $COPY_DESTINATION $SOURCE + if [ ! -f $1 ]; then cp $2 $1; - echo -e "Created copy of ${YELLOW}$2${RESET} to create ${GREEN}$1${RESET}."; + echo -e "Created copy of ${YELLOW}$2${RESET} to create required file ${GREEN}$1${RESET}."; else - echo "${GREEN}$1${RESET} is present."; - fi + echo "File ${GREEN}$1${RESET} is present."; + fi } diff --git a/src/components/Generator/GeneredTaskfile/taskfile-base.sh b/src/components/Generator/GeneredTaskfile/taskfile-base.sh index 641425d..925c5d3 100644 --- a/src/components/Generator/GeneredTaskfile/taskfile-base.sh +++ b/src/components/Generator/GeneredTaskfile/taskfile-base.sh @@ -72,7 +72,7 @@ function task:shorthand { ## Create CLI shorthand task instead of ./Taskfile banner if [[ ! "$(declare -F task:${@-help})" ]]; then title "Task not found" - echo -e "Task ${YELLOW}$1${RESET} doesn't exist." + echo -e "Task ${RED}$1${RESET} doesn't exist." task:help exit 1 fi diff --git a/src/components/Generator/Settings/Settings.tsx b/src/components/Generator/Settings/Settings.tsx index a6ef81d..4481524 100644 --- a/src/components/Generator/Settings/Settings.tsx +++ b/src/components/Generator/Settings/Settings.tsx @@ -2,7 +2,7 @@ import { ReactElement } from 'react'; -import styles from './settings.module.css'; +import styles from './settings.module.scss'; import TextInput from '@/components/Form/Text'; import RadioInput from '@/components/Form/Radio'; import { useFormContext } from 'react-hook-form'; @@ -80,7 +80,9 @@ const Settings = (): ReactElement => { ]} /> Configure git hooks - File utilities +

Utilities

+ File checks + Application dependencies ); }; diff --git a/src/components/Generator/Settings/settings.module.css b/src/components/Generator/Settings/settings.module.scss similarity index 70% rename from src/components/Generator/Settings/settings.module.css rename to src/components/Generator/Settings/settings.module.scss index 198831d..5dc64b9 100644 --- a/src/components/Generator/Settings/settings.module.css +++ b/src/components/Generator/Settings/settings.module.scss @@ -2,4 +2,8 @@ display: flex; flex-direction: column; gap: 1rem; + + h2 { + font-size: 1rem; + } }