Nuke User Guide v2.1

Nuke User Guide v2.1

By: CS2113T-T13-2 Since: Feb 2020
Go to Webpage



Table of Contents

Introduction

Setting Up

General Usage
        • Nuke Structure
        • Command Format
        • Command Prefixes

Features
        1. Add
                a. Add a Module into your Module List
                b. Add a Category into your Category List
                c. Add a Task into your Task List
                d. Add a File into your File List
                e. Add a Tag to your Task
        2. List
                a. List your Modules
                b. List your Categories
                c. List your Tasks
                d. List your Tasks Sorted by Deadline or Priority
                e. List your Tasks at Specified Time Period
                f. List your Files
                g. List your Task’s Tags
        3. Delete
                a. Delete Modules from your Module Lists
                b. Delete Categories from your Category Lists
                c. Delete Tasks from your Task Lists
                d. Delete Files from your File Lists
                e. Delete Tags from your Task
        4. Edit
                a. Edit a Module in your Module List
                b. Edit a Category in your Category List
                c. Edit a Task in your Task List
                d. Edit a File in your File List
                e. Mark a Task as Done
        5. Change Directory
        6. Open File
        7. Info
        8. Undo
        9. Redo

Miscellaneous Information
        • Help
        • Exiting the Nuke Program
        • Loading and Saving
                – Loading
                – Saving
        • Date Time Formats
                – Date Formats
                – Time Formats
                – Time Specifier Formats

Command Summary

FAQ
        • Can I not enter the Full Path
        • How does the Filtering Process works?

Contact Us



Introduction

This Nuke application is a simple yet powerful task management system that is dedicated to providing NUS students a more efficient way to organise their modules and tasks.

You will be interacting with the application via the command line. With the Nuke application, you will be able to perform various operations to manage your modules and tasks such as adding, deleting and listing your modules and tasks. You may also add additional properties to your tasks such as files, deadlines, and priorities.

Nuke facilitates users by automatically sorting user-added tasks and displaying the most important and urgent ones to the users. In the long term, it strives to enhance the quality of NUS students’ lives by serving as the one-stop platform for efficient management of module tasks.

If you are an NUS student and have not tried out Nuke yet...
What are you waiting for? Give Nuke a shot, and you will see how amazing it is!

Back To Top



Setting Up

1.1. Prerequisites

  1. JDK 11
  2. IntelliJ IDE

1.2. Setting up the project

  1. Fork this repository, and clone the fork to your computer

  2. Open the IntelliJ IDE. If you are not in the welcome screen, click File > Close Project to close the existing project.

  3. Set up the correct JDK version for Gradle

    1. Click Configure > Project Defaults > Project Structure

    2. Click New... and find the directory of the JDK

  4. Click on Import Project

  5. Locate and select the build.gradle file, then click OK

  6. Click Open as Project

  7. Click OK to use the default settings provided

1.3. Verifying the Setup

  1. In an IntelliJ terminal, run gradlew build

  2. Navigate to the folder build > libs by executing cd build/libs/ and then run: java -jar nuke-2.0.jar

    1. To use Nuke, type a valid command into the terminal and press the enter key to run the command. e.g. Typing help and pressing the enter key will show the available commands and their respective command usage help messages.

    2. Some example commands you can try to get familiar with Nuke:

      • help: Lists the commands that Nuke supports.
        • addm cs2113t: Adds a module with module code cs2113t, Nuke will recognize it as the module Software Engineering & Object-Oriented Programming and add it to your Module List.
      • addt assignment2 -m cs2113t -c Assignment -d tmr 23:59 -p 20 : Adds a task named assignment2 which belongs to module cs2113t and category Assignment with a deadline tomorrow 23:59 and priority of 20
        • bye: Exits Nuke.

Back To Top



General Usage

This section will explain the fundamental structure of the Nuke application, and important guidelines to follow to ensure smooth usage of the application.

Nuke Structure

Nuke follows the structure of a Directory Tree 🌳 (i.e. folder sub-folder structure). This Directory Tree comprises various levels:

Table Directory Levels
Directory Level Description
Root The base of the Directory Tree. Only one root exists in the entire Tree.
Added modules are in this level.
Module The second level of the Directory Tree.
Added categories are in this level.
Category The third level of the Directory Tree.
Added tasks are in this level.
Task The fourth level of the Directory Tree.
Added files are in this level.
File The last level of the Directory Tree.
Nothing else can be added.


Below is an illustration of a possible Directory Tree structure:


Directory Tree Image
Figure Sample Directory Tree


Root

The Root Directory is the base of the entire Directory Tree. Only one root exists in the entire Tree. Modules are added into this level into a Module List. A module consists of both a module code and a module title.

Note
Only NUS modules are allowed to be added in Nuke.

Module

The Module Directory is the second level of the Directory Tree. Each module has a Category List that has several categories to categorise your tasks, such as Lecture, Tutorial and Assignment, so that you can further organise your tasks. A category consists of a name and a priority to indicate the importance of the tasks in that category.

Info
Upon adding a module, Nuke automatically adds four categories into the module. They are Lecture, Tutorial, Assignment and Lab. So, you don't have to add those categories yourself!

Category

The Category Directory is the third level of the Directory Tree. Each category has a Task List that can contain any number of tasks, which are ideally related to the category. A task has several attributes, namely the description, deadline of the task if any, priority and the done status of the task.

Task

The Task Directory is the fourth level of the Directory Tree. Each task can have files attached to the it. Files are stored in the File List. The file must have a file name and the path to the file.

File

The File Directory is the last level of the Directory Tree. It contains no other directories.

Note
The Nuke application adheres to this Directory Tree structure strictly. It is important to note that you can only add a directory into a directory which is exactly one level lower.
For example, you can only add a task into the Category directory, and not directly into the Module directory.
Tip
You can shorten the commands you enter by first entering into a directory. Then you do not need to enter the full directory path in your command!

To learn how to traverse the various directories, see the Change Directory command.

Back To Top


Command Format

In this User Guide, the format for each feature (command) will usually be of this form:
CommandWord <attr0> -pfix1 <attr1> ... [ -pfix2 <attr2> ... ] { -pfix3 <attr3> -pfix4 <attr4> ... }

Command Word

Each command you give to Nuke has to begin with its corresponding unique command word. This helps Nuke to know that you want it to execute a particular command.

Attribute

Attributes are information to be provided in the command. An attribute for the command will be wrapped in angular brackets < > to help you to recognise it.

Prefix

A prefix is used to provide additional supplementary information to the command. More information on the various command prefixes can be found here.

Optional

Some attributes and prefixes are optional and the command can still execute properly even when omitted. However, they may be useful if you want to provide a more specific information to the command. Optional attributes and prefixes will be wrapped in square brackets [ ] to help you to recognise them.

Any

There are times when you may have to include at least one from a set of attributes and prefixes. You may choose to include one or more from the set, but not none of them. Such attributes and prefixes will be wrapped in curly brackets { } to help you to recognise them.

Back To Top


Command Prefixes

On many occasions, you may be required to enter more information to describe the commands you give to Nuke. For example, when adding a task, you may need to specify the module and category to add the task into. You may also want to include additional attributes such as the deadline and priority. All these information can only be recognised by Nuke if they are preceded by the correct prefix.

All command prefixes in Nuke begins with a - and followed by a letter. Below is the exhaustive list of command prefixes and general information that should follow after.

Table Command Prefixes
Command Prefix General Definition
-m The module code of the module
-c The name of the category
-t The description of the task
-f The name or path of the file
-d The deadline of the task
-p The priority of the category or task
-e To indicate whether filtering is done exactly
-a To indicate whether filtering is done across all directories


Note
Because each prefix begins with a -, Nuke has to unfortunately restrict your choice of names for the directories.
Specifically, each word in the name of your directory has to begin with a alpha-numeric (i.e. non-symbol) or underscore character.

Back To Top



Features

1. Add

Adds a module, category, task or file into their respective lists.

As mentioned previously, Nuke follows the structure of a Directory Tree (i.e. folder sub-folder structure). Nuke complements the Linux shell command by offering a generic add command word for creating a directory: mkdir

Below sums up what mkdir does at each level of the Directory.

Table Generic Add
Current Level What Happens?
Root mkdir <module code> adds a module into the current directory
Module mkdir <category name> adds a category into the current directory
Category mkdir <task description> adds a task into the current directory
Task mkdir <file name> adds a file into the current directory
File You cannot mkdir here! 😔

The above commands have to be done in their corresponding directories. Conversely, the commands below can be done in any directory, but may require you to enter additional information.

Tip
In many of the Add commands, you have to enter the directory path of the directory you wish to add the item into. You can shorten the commands you enter by first entering into a directory. Then you do not need to enter the full directory path in your command! 😊

To learn how to traverse the various directories, see the Change Directory command.

For more information on how and if you can not enter the full directory path, see here.

Back To Top

a. Add a Module into your Module List

addm adds a module into your Module List. The Module List contains all your added modules and can be viewed via the List Module command.

Format

addm <module code>

Note
The module code is case-insensitive. However, it must correspond to a valid NUS module. Only NUS modules can be added in this version of Nuke.
Example Usage
addm cs2113t  
Expected Outcome

addm command

Before
image-20200330234001037

After
image-20200330233926681

Back To Top


b. Add a Category into your Category List

addc adds a category into your Category List. The Category List contains all your added categories in the module and can be viewed via the List Category command.

Format

addc <category name> -m <module code> [ -p <priority> ]

Note
The category name cannot exceed 15 characters. 😖
The priority that you give must be a number between 0 and 20 inclusive. The bigger the number, the more important the category. If the priority is not given, then it will be set to 0.
Example Usage
addc Project -m cs2113t -p 3  
Expected Outcome

addm command

Before
image-20200331000048607

After
image-20200331000110946

Back To Top


c. Add a Task into your Task List

addt adds a task into your Task List. The Task List contains all your added tasks in the category and can be viewed via the List Task command.

Format

addt <task description> -m <module code> -c <category name> [ -d <deadline> -p <priority> ]

Note
The task description cannot exceed 25 characters. 😖
The priority that you give must be a number between 0 and 20 inclusive. The bigger the number, the more important the category. If the priority is not given, then it will be set to the same priority as it's category.

The deadline provided consists of a date, followed by a time. If the date is omitted, Nuke will set it to the current date on your device. If time is omitted, Nuke will set it to be 11:59PM.
The deadline provided must adhere to the set of accepted Date Time formats. 😑
Example Usage
addt urgent assignment -m cs2113t -c Assignment -d tmr 2359 -p 15  
Expected Outcome

image-20200331000315462

Before
image-20200331000255994

After
image-20200331000315462

Back To Top


d. Add a File into your File List

addf adds a file into your task’s File List. The File List contains all your added files and can be viewed via the List File command.

Format

addf [ <file name> ] -m <module code> -c <category name> -t <task description> -f <file path>

Note
The file path provided must exist. Otherwise, an error message will be displayed. 😟
Also, the file name cannot exceed 30 characters. 😶
Info
The file path should be the absolute path of the file. For Windows, the absolute path will usually start as such: C:\Users\...

The file name provided can be different from the real file name that is stored in the disk.
You can choose to leave the file name blank. In this case, Nuke will set your file name to be the name of your file without the extension at the back. For example, sample_file.pdf will become sample_file.
Example Usage
addf textbook -m CS2113t -c Assignment -t urgent assignment -f C:\Users\\Desktop\CS2113T_Textbook.pdf  
addf textbook.pdf -t urgent assignment -f C:\Users\\Desktop\CS2113T_Textbook.pdf  
addf textbook.pdf -f C:\Users\\Desktop\CS2113T_Textbook.pdf  
Expected Outcome image-20200331000315462

Before
image-20200331000315462

After
image-20200331000315462

Back To Top

e. Add a Tag to your Task

Adds a tag to your task’s Tag List. The Tag List contains all your added tags to the task.

Format

addg <tag name> -m <module code> -c <category name> -t <task description>

Example Usage
addg urgent -m CS2113t -c Lab -t tp  
addg urgent -t tp  
addg urgent  
Expected Outcome

image-20200331000315462

Before
ug addg before

After
ug addg after

Back To Top



2. List

Lists filtered modules, categories, tasks or files.

Similar to a Linux shell, Nuke has a generic command word for listing child directories: ls

In the table below, you can find what ls does at each level of the Directory.

Table Generic List Command
Current Level What Happens?
Root ls shows all your modules in your Module List
ls <module code> shows all the categories in the Category List of that module
Module ls shows all your categories in the module’s Category List
ls <category name> shows all the tasks in the Task List of that category
Category ls shows all your tasks in the category’s Task List
ls <task description> shows all the files in the File List of that task
Task ls shows all your files in the task’s File List
File You cannot ls here! 😦

The above commands have to be done in their corresponding directories. On the other hand, the commands below can be done in any directory, but may require you to enter additional information.

Info
Both List commands (with the exception of List your Tasks Sorted by Deadline or Priority and List your Tasks at Specified Time Period) and Delete commands function by first filtering the relevant items from the keywords that you provide. You can further choose to enter -e to filter using the exact keyword, and -a to filter across all the directories.
For more information on how filtering is done, see here.

Back To Top

a. List your Modules

lsm will show your filtered module(s) in your Module List.

Format

lsm [ <module keyword> -e -a ]

Info
If the module keyword is provided, lsm will list out all modules with module code containing the module keyword. Otherwise, it will show all your modules.
Example Usage
lsm  
Expected Outcome

image-20200401011642619

Back To Top

b. List your Categories

lsc will show your filtered category(s).

Format

lsc [ <category keyword> -m <module code> -e -a ]

Example Usage
lsc -m cs2113t  
lsc  
Expected Outcome

image-20200401012031973

Back To Top

c. List your Tasks

lst will show your filtered task(s).

Format

lst [ <task keyword> -m <module keyword> -c <category keyword> -e -a ]

Example Usage
lst -m cs2113t -c Assignment  
lst -c Assignment  
lst  
Expected Outcome

image-20200401012942212

Back To Top

d. List your Tasks Sorted by Deadline or Priority

lsts shows your undone tasks. By default, the tasks will be sorted by deadline, from the earliest to the latest deadline. You may also specify in the command to sort your tasks by priority instead, in descending order of priority, by including the -p prefix.

Also, you can further choose to view the sorted tasks of a specific module. By default, this command will show you the sorted list of all your tasks. You can enter the module code to view the sorted list of the tasks in that module instead.

Format

lsts [ <module code> -d -p (choose at most one; default -d) ]

module code – The module code of the module for which its sorted list of tasks is to be shown

Note
Since the command sorts by deadline by default, you need not include the -d prefix if you want to sort your tasks by deadline 😉.
However, you must choose between sorting by deadline or by priority. Entering both -d and -p will cause an error message to be shown 😨.
Example Usage
lsts  
lsts -p  
lsts cs2113 -p  
Expected Outcome

Sort by Deadline
image-20200401012942212


Sort by Priority
image-20200401012942212


Sort with Specified Module
lsts command sort by priority

Back To Top

e. List your Tasks at Specified Time Period

due filters through all your tasks according to a specified time period.

A time period is defined by an optional time specifier (e.g. on, before, after) and a date. If the time specifier is left out, the time period is set to be on the date itself.

The filtered tasks are then shown as a list.

Info
By default, only undone tasks will be shown. You can choose to include the done tasks as well by appending -a at the end of the command.
As a bonus, you can also filter for overdue tasks. Simply enter due over to do so! 😉
Format

due <time specifier> <date> [ -a ]

Note
The time specifier and date that you provide must adhere to the set of Nuke's accepted Date formats.
Example Usage
due after sun -a  
due tdy  
due over  
Expected Outcome

With Time Specifier
due command with time specifier


Without Time Specifier
due command without time specifier


Overdue
due command overdue

Back To Top

f. List your Files

lsf will show your filtered files(s).

Format

lsf [ <file keyword> -m <module keyword> -c <category keyword> -t <task keyword> -e -a ]

Example Usage
lsf -m cs2113t -c Assignment -t urgent assignment  
lsf -c Assignment  
lsf -t urgent assignment  
lsf  
Expected Outcome

ug lsf outcome

Back To Top

g. List your Task’s Tags

lsg will show your filtered tag(s).

Format

lsg [ <tag keyword> -m <module keyword> -c <category keyword> -t <task keyword> -e -a ]

Example Usage
lsg 
lsg urgent  
lsg -m CS -c Lab  
lsg -m cs2113t -c Assignment -t assignment1 
Expected Outcome

ug lsg outcome

Back To Top



3. Delete

Deletes modules, categories, tasks, files or tags from their respective lists.
You will be prompted to either enter yes to confirm the deletion or no to abort the deletion after entering the Delete command.


Like the Add Command, Nuke also supports a generic command for deleting a directory: rm

The table below shows you rm does at each level of the Directory.

Table Generic Delete Command
Current Level What Happens?
Root rm <module code> deletes a module from the current directory
Module rm <category name> deletes a category from the current directory
Category rm <task description> deletes a task from the current directory
Task rm <file name> deletes a file from the current directory
File You cannot rm here! 😬

The above commands have to be done in their corresponding directories. However, the commands below can be done in any directory, but may require you to enter additional information.

Info
Just like the List commands, the Delete command works by first filtering the relevant items from the keywords that you provide. You can further choose to enter -e to filter to the exact keyword, and -a to filter across all the directories.
For more information on how filtering is done, see here.

If there are multiple matches after filtering, you will receive a further prompt to let you choose which items you want to delete.
Note
Please do not delete the directory you are in, or any of your current directory's parent directories. Doing so will result in an error message to be shown 😟.

Back To Top

a. Delete Modules from your Module Lists

delm deletes module(s) from your Module Lists. The Module List contains all your added modules and can be viewed via the List Module command.

Format

delm [ <module keyword> -e -a ]

Example Usage
delm cs2113t  
delm cs  
Expected Outcome

Single Deletion
delm command single delete

Before
image-20200401015356560

After
image-20200401015411123



Multiple Deletion

delm command multiple delete

Back To Top

b. Delete Categories from your Category Lists

delc deletes category(s) from your Category Lists. The Category List contains all your added categories of a module and can be viewed via the List Category command.

Format

delc [ <category name> -m <module code> -e -a ]

Example Usage
delc Tutorial  
delc lec -a  
Expected Outcome

Single Deletion
delc command single delete

Before
delc command single delete

After
delc command single delete


Multiple Deletion
delc command multiple delete

Back To Top

c. Delete Tasks from your Task Lists

delt deletes task(s) from your Task Lists. The Task List contains all your added tasks of a category and can be viewed via the List Task command.

Format

delt [ <task keyword> -m <module keyword> -c <category keyword> -e -a ]

Example Usage
delt urgent assignment -m cs2113t -c Assignment  
delt assignment -c Assign  
delt urgent assignment  
Expected Outcome

image-20200401020857605

Before
image-20200401020857605

After
image-20200401021025877

Back To Top

d. Delete Files from your File Lists

delf deletes a file from your task’s File List. The File List contains all your added files and can be viewed via the List File command.

Format

delf [ <file keyword> -m <module keyword> -c <category keyword> -t <task keyword> -e -a ]

Expected Outcome

Have Matches
delf command match


No Matches
delf command no match

Back To Top

e. Delete Tags from your Task

delg deletes a tag from your task’s Tag List. The Tag List contains all your added tags to the task. (and can be viewed via the List Tag command).

Format

delg [ <tag keywrod> -m <module keyword> -c <category keyword> -t <task keyword> ]

Example Usage
delg ur -m CS21 -c L  
delg gen -c Lab 
delg urgent  
delg  
Expected Outcome

image-20200401020857605

Before
image-20200401020857605

After
image-20200401021025877 =

Back To Top


4. Edit

Edits a module, category, task or file.

Tip
In many of the Edit commands, you have to enter the directory path of the directory you wish to edit the item. You can shorten the commands you enter by first entering into a directory. Then you do not need to enter the full directory path in your command! 😙

To learn how to traverse the various directories, see the Change Directory command.

For more information on how and if you can not enter the full directory path, see here.

a. Edit a Module in your Module List

edm edits a module in your Module List. The Module List contains all your added modules and can be viewed via the List Module command.

Format

edm <module code> -m <new module code>

Note
Similar to the Add Module command, do make sure that the new module code that you enter is a valid NUS module.
Also, ensure that you do not enter the same new module code as an existing module in the Module List 😮.
Example Usage
edm cs2102 -m cs2101 
Expected Outcome

Correct Edit
edm command correct

Before
delc command single delete

After
delc command single delete


Duplicate Module (Incorrect)
edm command duplicate module


Invalid Module Code (Incorrect)
edm command invalid module code

Back To Top

b. Edit a Category in your Category List

edc edits a category in your Category List. The Category List contains all your added categories of a module and can be viewed via the List Category command.

Format

edc <category name> -m <module code> { -c <new category name> -p <new priority> }

Note
You need to enter at least one of new category name and new priority. If both are omitted, an error message would be shown! 😫

Similar to category name, the new category name cannot exceed 15 characters.
In addition, similar to all the priority attribute in Nuke, the new priority must be between 0 and 20 inclusive.
Example Usage
edc Lab -m cs2113t -c Project -p 8
Expected Outcome

Correct Edit
edc command correct

Before
delc command single delete

After
delc command single delete



Duplicate Category (Incorrect)
edc command duplicate category


Invalid Priority (Incorrect)
edc command invalid priority


Nothing to Edit (Incorrect)
edc command nothing to edit

Back To Top

c. Edit a Task in your Task List

edt edits a task in your Task List. The Task List contains all your added tasks of a category and can be viewed via the List Task command.

Format

edt <task description> -m <module code> -c <category name>
            { -t <new task description> -d <new deadline> -p <new priority> }

Note
You need to enter at least one of new task description, new deadline and new priority. If all are omitted, an error message would be shown! 😫

The new task description cannot exceed 25 characters.
As with all deadline attribute, the new deadline must follow Nuke's accepted Date Time Formats. If the date is omitted, Nuke will set it to the current date on your device. If time is omitted, Nuke will set it to be 11:59PM.

In addition, the new priority should also be between 0 and 20 inclusive.
Example Usage
edt tp -d sat 2359 -p 20  
Expected Outcome

Correct Edit
edt command correct

Before
delc command single delete

After
delc command single delete



Duplicate Category (Incorrect)
edt command duplicate task


Invalid Deadline (Incorrect)
edt command invalid deadline


Invalid Priority (Incorrect)
edt command invalid priority


Nothing to Edit (Incorrect)
edt command nothing to edit

Back To Top

d. Edit a File in your File List

edf edits a file in your File List. The File List contains all your added files of a task and can be viewed via the List File command.

Format

edt <file name> -m <module code> -c <category name> -t <task description> -f <new file name>

Note
Similar to file name, the new file name cannot exceed 30 characters.
Example Usage
edf math report -f math report draft  
Expected Outcome

Correct Edit
edf command correct

Before
delc command single delete

After
delc command single delete


Duplicate File (Incorrect)
edf command duplicate file

Back To Top

e. Mark a Task as Done

Marks a previously undone task as done.

Note
If the task was already done, and you execute the command, you will be shown an error message instead!! 😩
Format

done <task description> -m <module code> -c <category name>

Example Usage
done do lab 4 -m cs2106 -c Lab  
Expected Outcome

Done at Root Level
done command root level

Before
delc command single delete

After
delc command single delete


Done at Task Level
done command task level


Done an Already Done Task
done command already

Back To Top



5. Change Directory

cd traverses up and down the Directory Tree from your current directory.

Format

cd <directory name> to traverse down
cd .. to traverse up

Note
There will not be any message shown for successful traversal 😐. Instead, you will be able to see a change in the current directory path as shown in the positive traversing example below.
However, attempting to traverse ahead of the Root Directory (first directory) or beyond the File Directory (last directory) will result in an error message being shown 😨.
Example Usage
cd cs2113t  
cd  
Expected Outcome

Correct Traversal
cd down command correct


cd up command correct


Incorrect Traversal
cd down command incorrect


cd up command incorrect

Back To Top



6. Open File

open opens your file(s) of a specified task. You can choose between opening a single file or all your files in the File List.

Format

open [ <file name> ] -m <module code> -c <category name> -t <task description>

Info
To open a single file, enter its file name.
Otherwise, if you want to open all the files in the list, leave the file name blank.
Example Usage
open lab_4 -m cs2106 -c Lab -t do lab 4   
open lab 4  
Expected Outcome

Opening at Root Level
open file command root level


Opening at Task Level
open file command task level

Back To Top



7. Info

info displays information about your current directory. It shows you the current directory’s attributes, and a list of its child directories, if any.

For example, on the Module directory, the Info command will display the module’s code and title, as well as its Category List.

Format

info

Example Usage
info  
Expected Outcome

info command

Back To Top



8. Undo

undo undoes a change made to the application.

Info
Change here refers to a successful Add, Delete, Edit or Undo command. These commands changes your lists. The Undo command reverts these changes.
Format

undo

Note
On successful undo, you will be moved back to the Root Directory 😦. This is to allow the application to correctly reload the correct state.
Also, do note that attempting to undo when no changes were made will result in an error message being shown 😨.
Example Usage
undo  
Expected Outcome

Correct Undo
undo command correct


Incorrect Undo
undo command incorrect

Back To Top



9. Redo

redo redoes the change made by an earlier Undo command.

Format

redo

Note
On successful redo, you will be moved back to the Root Directory 😦. This is to allow the application to correctly reload the correct state.
Also, do note that attempting to redo when you are at the newest state (i.e. the most recent change was not due to an Undo command) will result in an error message being shown 😨.
Example Usage
redo  
Expected Outcome

Correct Redo
redo command correct


Incorrect Redo
redo command incorrect

Back To Top



Miscellaneous Information

Help

In the event that you ever forget the usage of a command, you can look it up within the Nuke application itself. All you need to do is to enter the keyword help to show a command summary of all the available commands in Nuke.

Back To Top

Exiting the Nuke Program

Exiting the Nuke program is simple. Simply enter bye to exit.
Upon exiting, the program will save your entire Directory List into a file in your device.

Back To Top

Loading and Saving

The Nuke program loads and saves your entire Directory List automatically, so there is no explicit way to freely load or save your file.

Loading

Loading is done once you start up the Nuke program. The data from the saved directory list file in your device is read to initialise your Directory List from when it was last saved.

Saving

Saving is done upon executing each of your commands in the Nuke program. Your Directory List will be saved into a directory list file in your device.

Back To Top

Date Time Formats

Any date time data that you provide has to adhere to certain formats pre-defined by the Nuke program. Failure to do so will likely result in the program to be unable to recognise your input command, and a warning will be shown 😦.
Instances when you may need to enter a date time will be when adding a deadline to your tasks, or when specifying the date in the Due command.

Here are the following date time formats:

Date Formats

There are two types date formats allowed.

1. Words

You may enter only the following date words.

Info
All dates are taken with reference to the current date on your device.
If you specify the date using the day of the week (i.e. monday ... sunday), and the current day is the day itself, the date will be referred to the current date. For example, if you enter wednesday and it is Wednesday today, the date will be the current date.
2. Standard Date Format

This refers to the typical dates that are represented with numbers and delimiter symbols.

In this Nuke program, dates should be in the order of day, month, then an optional year. If the year is not provided, the program will automatically assume it to be the current year. Also, the day, month and year should only be entered as numbers and not words (e.g. January is not accepted for the month attribute).

Regarding delimiters, the program will only consider / and - as valid delimiters for dates. Delimiters are optional and may be omitted provided you include the year of the date (e.g. 1/1/20, 1/1 and 010120 are accepted, but not 0101 😯).

An exhaustive list of the standard date formats is given below for your reference.

01/01/2020, 1/01/2020, 01/1/2020, 1/1/2020,  
01/01/20, 1/01/20, 01/1/20, 1/1/20,  
01/01, 1/01, 01/1, 1/1,  
01-01-2020, 1-01-2020, 01-1-2020, 1-1-2020,  
01-01-20, 1-01-20, 01-1-20, 1-1-20,   
01-01, 1-01, 01-1, 1-1,   
01012020, 010120  

Back To Top

Time Formats

The Nuke program accepts most time formats that are represented with numbers, delimiter symbols and optional am-pm markers.

The time should be in the order of hour, then minute. The seconds attribute of time should not be given. The minute attribute must be a double digit (i.e. single digits must be padded with a 0 in front). The minute attribute is also optional, and should it be omitted, the Nuke program will automatically set the minute to be 0. Both the 12-h format and the 24-h format are valid time formats for this program.

Regarding delimiters, the program will only consider : and . as valid delimiters for time. Delimiters are optional and may be omitted.

Lastly, the am-pm marker is an optional attribute, and should it be omitted, the Nuke program will automatically assume the time to follow the 24-h format.

An exhaustive list of the time formats is given below for your reference.

6:00pm, 18:00pm, 18:00, 
6.00am, 6.00am, 6.00,  
1130pm, 2330pm, 2330,  
3pm, 15pm, 15  

Back To Top

Time Specifier Formats

The time specifier is used in conjunction with a date to define the time period for the Due command. The following words are considered valid time specifiers in the Nuke program.

The time specifier is optional and if omitted, is set to on.

Back To Top



Command Summary

A simple summary of the various commands are shown below:

Table Command Summary
Command
Word
What and How?
mkdir Adds a new child directory
Format: mkdir <directory name>
Example: mkdir cs2113t
addm Adds a new module
Format: addm <module code>
Example: addm cs2113t
addc Adds a new category
Format: addc <category name> -m <module code> [ -p <priority> ]
Example: addc Project -m cs2113t -p 3
addt Adds a new task
Format: addt <task description> -m <module code> -c <category name>
                    [ -d <deadline> -p <priority> ]
Example: addt urgent assignment -m cs2113t -c Assignment -d tmr 2359 -p 15
addf Adds a new file
Format: addf <file name> -m <module code> -c <category name> -t <task description>
                    -f <file path>
Example: addm cs2113t
addg Adds a new tag
Format: addg <tag name> -m <module code> -c <category name> -t <task description>
Example: addg urgent -m CS2113t -c Lab -t tp
ls Shows the child directories; include child directory name to show it child directories instead
Format: ls [ <child directory name> ]
Example: ls     ls cs2113t
lsm Shows filtered modules
Format: lsm [ <module keyword> -e -a ]
Example: lsm cs
lsc Shows filtered categories
Format: lsc [ <category keyword> -m <module code> -e -a ]
Example: lsc tutorial -m cs2113 -e
lst Shows filtered tasks
Format: lst [ <task keyword> -m <module keyword> -c <category keyword> -e -a ]
Example: lst group -m cs -c assignment
lsts Shows undone tasks sorted by deadline or priority
Format: lsts [ <module code> -d -p (choose at most one; default -d) ]
Example: lsts     lsts cs2113t -p
due Shows tasks at a specified time period
Format: due <time specifier> <date> [ -a ]
Example: due after sun -a     due over
lsf Shows filtered files
Format: lsf [ <file keyword> -m <module keyword> -c <category keyword>
                    -t <task keyword> -e -a ]
Example: lsf -m cs -t tp -a
lsg Shows filtered tags
Format: lsg [ <tag keyword> -m <module keyword> -c <category keyword>
                    -t <task keyword> -e -a ]
Example: lsg -m cs2113t -c Assignment -t tp -a
rm Deletes a child directory
Format: rm <child directory name>
Example: rm cs2102
delm Deletes filtered modules
Format: delm [ <module keyword> -e -a ]
Example: lsm cs
delc Deletes filtered categories
Format: delc [ <category keyword> -m <module code> -e -a ]
Example: delc lec -a
delt Deletes filtered tasks
Format: delt [ <task keyword> -m <module keyword> -c <category keyword> -e -a ]
Example: delt assignment -c Assign
delf Deletes filtered files
Format: delf [ <file keyword> -m <module keyword> -c <category keyword>
                    -t <task keyword> -e -a ]
Example: delf -m cs2113 -t tp
delg Deletes filtered tags
Format: delg [ <tag keyword> -m <module keyword> -c <category keyword>
                    -t <task keyword> -e -a ]
Example: delg -m cs2113 -c Assignment -t tp
edm Edits a module
Format: edm <module code> -m <new module code>
Example: edm cs2102 -m cs2101
edc Edits a category
Format: edc <category name> -m <module code>
                    { -c <new category name> -p <new priority> }
Example: edc Lab -m cs2113t -c Project -p 8
edt Edits a task
Format: edt <task description> -m <module code> -c <category name>
                    { -t <new task description> -d <new deadline> -p <new priority> }
Example: edt tp -d sat 2359 -p 20
edf Edits a file
Format: edt <file name> -m <module code> -c <category name> -t <task description>
                    -f <new file name>
Example: edf math report -f math report draft
done Marks a task as done
Format: done <task description> -m <module code> -c <category name>
Example: done do lab 4 -m cs2106 -c Lab
cd Traverses up and down the Directory Tree
Format: cd <next directory name>     cd ..
Example: cd cs2113t     cd ..
open Opens files
Format: open [ <file name> ] -m <module code> -c <category name>
                    -t <task description>
Example: open lab_4 -m cs2106 -c Lab -t do lab 4
info Shows information about current directory
Format: info
Example: info
undo Undoes a change
Format: undo
Example: undo
redo Redoes a change made by an earlier undo
Format: redo
Example: redo
help Shows Command Summary
Format: help
Example: help
bye Exits Nuke 😭
Format: bye
Example: bye



Back To Top



FAQ

Can I not enter the Full Path?

Yes, you can! 😉
You do not have to keep entering the path to the directory at the start of most of the commands in Nuke, in particular the Add and Edit commands.
In other words, you do not have to include the -m <module code>, -c <category name>, -t <task description> and -f <file name>.

Nuke is able to intelligently fill in the missing components in the path for you. Here are various examples on how you can utilise this feature of Nuke to your advantage:

In each of the examples below, we set the context to be at the Category level, and the current path to be root / CS2113T / Project

Commands targeting Current Directory
If you want to add a task into the current category that you are in, that is into the Project category, instead of entering addt new task -m cs2113t -c Project -p 4, you can simply enter addt new task -p 4. 😊

Commands targeting Parent Directory
If you want to edit a file that has the path root / CS2113T / Project / tp / image_1, instead of entering edf image_1 -m cs2113t -c Project -t tp -f new file name you can just enter edf image_1 -t tp -f new file name. 😊

Commands targeting Child Directory
If you want to add a category to the CS2113T module, instead of entering addc new category -m cs2113t -p 3, you can enter addc new category -p 3. 😊

Commands targeting Nearby Directory
If you want to edit a task that has the path root / CS2113T / Lecture / read lecture notes, instead of entering edt read lecture notes -m cs2113t -c Lecture -p 3 -d sun 3pm you can just enter edt read lecture notes -c Lecture -p 3 -d sun 3pm. 😊

Essentially, Nuke will fill the missing components in the path based on your current directory path. Hence, it would be good to use the Change Directory command to move to the corresponding directory first, so you do not have to enter the full path.

Back To Top

How does the Filtering Process works?

Nuke does filtering for List and Delete commands. Nuke filters for the set of items that contains the keywords that you provide in the command. Filtering is always done in a case-insensitive manner. All matched items will be shown as a list.

Consider this example:
Let's assume you have three tasks with directory paths
1. root / CS2113T / Project / do UG,
2. root / CS2113T / Project / peer review and
3. root / CS2113T / group project / do ug faq section.
Now, entering the command lst -m cs -c project -t ug should fetch only the first and third tasks.

Furthermore, if an attribute is left empty, such as lst -m cs -t ug, where the -c <category keyword> attribute is missing, Nuke will simply ignore filtering for all of the categories. In this case, Nuke will select all tasks with module containing cs in their module code and tasks containing ug in their task description.

Another feature of the filtering is that it tries to filter from the current directory. For example, if you are in the path root / CS2113T, then entering lsc will fetch all of the module CS2113T 's categories only, instead of fetching all your categories. Unless you specify the corresponding keyword, or choose to filter all as explained later, Nuke will always behave in such a manner when filtering.

In addition, there are two extra conditions you can include to the filtering process. They are:

Filter Exactly
This can be activated by including a -e at the back of your command. This filters for items that matches exactly the keyword, instead of just containing the keyword.
For example, for modules with paths:
root / CS2113 and
root / CS2113T
when the command delm cs2113 -e is entered, only the first module is shown.
The case-insensitive filtering and empty keyword property still holds even when filtering exactly.

Filter All
Similarly, this can be activated by including a -a at the back of your command. This filters for items in your entire Directory List, and not just limited to the current directory, which is the default setting.

You can mix both -e and -a to filter exactly the way you want. 😉

Back To Top



Contact Us

If you have any further inquiries, or if you realised any bugs while running the Nuke application, feel free to contact us at:

Facebook             Gmail             Yahoo! Mail


We are currently still at the development stage of the Nuke application. Any feedback you give can help us to improve Nuke even further! 😄

Back To Top