# Brief - A simple Java CLI (part 1) ## Prerequisite - Fulfill "[A simple command-line interpreter](https://hackmd.io/QnsiXMmuSL6dMRTpxB_D_g)" exercise ## Learning objectives - Be comfortable with command execution from a terminal, inputs and outputs of a computer program - Be comfortable with the concept of compiling then running a Java program - Learn about Java syntax and Java keywords - Learn about features common to any programming language, of course available in Java such as: methods, variable declaration and assignment, types, arrays, flow control and so on - Discover and make use of the main Java primitive types and classes (and methods), most often used in enterprise projects ## How to? - Update the existing `Cli` Java program created previously (prerequisite), adding new commands, no new project needed - Constraint: do not use other methods than `String command = scanner.nextLine();` to retrieve the input from the console - Share your project in a new GitHub repository with the same name (`java-simple-cli`). Code source only, never share compiled classes! ## Commands to implement Please note that some of the example outputs may vary from one computer to another. ### Current date - Add a `date` command that prints the current date - Arguments: none - Example output: `2023-10-12` ### Current time - Add a `time` command that prints the current time - Arguments: none - Example output: `10:41:39.576986400` ### Current date and time - Add a `datetime` command that prints the current date and time - Arguments: none - Example output: `2023-10-12T10:41:39.576986400` ### User account name - Add a `useraccount` command that prints the user account name - Arguments: none - Example output: `Frank` - Tip: system property ### User home directory - Add a `userhome` command that prints the user home directory - Arguments: none - Example output: `C:\Users\Frank` - Tip: system property ### Operating system information - Add a `os` command that prints the operating system name and version - Arguments: none - Example output: `Windows 10 (10.0)` that is the name then the version in parentheses - Tip: system properties ### Environment variable - Add a `printenv` command that prints the value of the specified environment variable. If the environement variable does not exist, prints an empty string - Arguments: name of the environment variable (example: `JAVA_HOME`) - Example output: `C:\Program Files\Java\jdk-17.0.5+8` (for `printenv JAVA_HOME`) - Tip: in order to test your command, check that the environment variables exist and have the same values (better to test with a few environment variables than only one) ### Prints all the passed arguments - Add a `echo` command that prints all the arguments passed to the command. If no argument (only the name of the command), prints an empty string - Arguments: from none to any number of arguments - Examples output: `Hello` (for `echo Hello`), `Hello world!` (for `echo Hello world!`)