diff --git a/levels/tower_of_knowledge/level.json b/levels/tower_of_knowledge/level.json
index 19e5ba6..05a2e12 100644
--- a/levels/tower_of_knowledge/level.json
+++ b/levels/tower_of_knowledge/level.json
@@ -12,6 +12,7 @@
"fs-02-pwd",
"fs-03-ls",
"fs-04-cd",
- "fs-05-mkdir"
+ "fs-05-mkdir",
+ "fs-10-drawer"
]
}
diff --git a/levels/tower_of_knowledge/objectives/fs-10-drawer/description.md b/levels/tower_of_knowledge/objectives/fs-10-drawer/description.md
new file mode 100644
index 0000000..313ba69
--- /dev/null
+++ b/levels/tower_of_knowledge/objectives/fs-10-drawer/description.md
@@ -0,0 +1,25 @@
+<% const isWindows = context.systemInfo.os === 'win32'; %>
+
+# Creating a Cutlery Drawer Directory
+
+
+
Requirements
+
+ - Step 1.
+ - Step 2.
+ - Step 3.
+ - Once you're done, press HACK.
+
+
+
+General content here...
+
+<% if(isWindows) { %>
+
+Windows specific content here...
+
+<% } else { %>
+
+\*nix specific content here...
+
+<% } %>
diff --git a/levels/tower_of_knowledge/objectives/fs-10-drawer/objective.json b/levels/tower_of_knowledge/objectives/fs-10-drawer/objective.json
new file mode 100644
index 0000000..f81af68
--- /dev/null
+++ b/levels/tower_of_knowledge/objectives/fs-10-drawer/objective.json
@@ -0,0 +1,16 @@
+{
+ "title": "Creating a Cutlery Drawer Directory",
+ "description": "Create the cutlery drawer directory as described.",
+ "validation_fields": [
+ {
+ "name": "cutleryDrawerDirPath",
+ "type": "text",
+ "placeholder": "/path/to/cutlery/drawer/directory",
+ "label": "What is the path to the cutlery drawer directory you made?"
+ }
+ ],
+ "show_ide": false,
+ "rewards": {
+ "xp": 100
+ }
+}
diff --git a/levels/tower_of_knowledge/objectives/fs-10-drawer/validator.js b/levels/tower_of_knowledge/objectives/fs-10-drawer/validator.js
new file mode 100644
index 0000000..0130548
--- /dev/null
+++ b/levels/tower_of_knowledge/objectives/fs-10-drawer/validator.js
@@ -0,0 +1,44 @@
+const { existsSync } = require("fs");
+
+module.exports = async function (helper) {
+ const cutleryDrawerDirPath = helper.getNormalizedInput(
+ "cutleryDrawerDirPath",
+ {
+ lowerCase: false,
+ }
+ );
+
+ try {
+ if (!cutleryDrawerDirPath) {
+ helper.fail(
+ "You need to provide the path to your cutlery drawer directory in the Hack Interface!"
+ );
+ return;
+ }
+
+ if (!existsSync(cutleryDrawerDirPath)) {
+ helper.fail(
+ `TwilioQuest could not locate the cutlery drawer directory at the path you entered, "${cutleryDrawerDirPath}".`
+ );
+ return;
+ }
+
+ // TODO: Add checks for commands improperly followed, file system not created, partial path, case sensitivity,
+ // and separators once the predefined directory entries for this objective have been determined
+ } catch (err) {
+ helper.fail(`An error occurred while TwilioQuest was trying to validate your cutlery drawer directory.
+
+ ${err}`);
+ return;
+ }
+
+ helper.success(
+ "Your cutlery drawer directory looks clean and organized. Great job!",
+ [
+ {
+ name: "DEV_FUNDAMENTALS_FILE_SYSTEM_CUTLERY_DRAWER_DIR",
+ value: cutleryDrawerDirPath,
+ },
+ ]
+ );
+};
diff --git a/levels/tower_of_knowledge/objectives/fs-10-drawer/walkthrough.md b/levels/tower_of_knowledge/objectives/fs-10-drawer/walkthrough.md
new file mode 100644
index 0000000..90c9c4f
--- /dev/null
+++ b/levels/tower_of_knowledge/objectives/fs-10-drawer/walkthrough.md
@@ -0,0 +1,3 @@
+# Walkthrough
+
+Content here...