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 => {
]}
/>