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

+ +
+ +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...