From 9541ab571823848c2e1a8a212a954654b5385cee Mon Sep 17 00:00:00 2001 From: Capelier-Marla Date: Mon, 12 Dec 2022 22:46:18 +0100 Subject: [PATCH 1/3] added working arguments parser with doc --- src/main/java/fr/packageviewer/ArgParse.java | 47 +++++++++++++++++++ .../fr/packageviewer/CommandLineParams.java | 26 ++++++++++ src/main/java/fr/packageviewer/Main.java | 32 +++++++++++-- 3 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 src/main/java/fr/packageviewer/ArgParse.java create mode 100644 src/main/java/fr/packageviewer/CommandLineParams.java diff --git a/src/main/java/fr/packageviewer/ArgParse.java b/src/main/java/fr/packageviewer/ArgParse.java new file mode 100644 index 0000000..b037ad1 --- /dev/null +++ b/src/main/java/fr/packageviewer/ArgParse.java @@ -0,0 +1,47 @@ +package fr.packageviewer; + +import com.beust.jcommander.JCommander; + + +/** + * Class to parse the command line arguments given by the user + * @author Capelier-Marla + */ +public class ArgParse { + + /* distribution the user want */ + private static String distribution; + + /** + * Get the command line argument given by the user, parse it with the parser and store it in the corresponding variable + * @author Capelier-Marla + * @param args the command line arguments given by the user + * @return void + */ + static void parseArguments(String[] args) { + // create JCommander and CommandLineParams objects + JCommander jCommander = new JCommander(); + CommandLineParams params = new CommandLineParams(); + // add argument required by the params to the JCommander object + jCommander.addObject(params); + try { + // parse the argument from list of String + jCommander.parse(args); + // store the argument parsed in the variable + distribution = params.distribution; + } catch (Exception e) { + // if the parsing failed, print the error message and exit the program + System.out.println("You forgot the distribution name."); + System.exit(0); + } + } + + /** + * Get the distribution name. If the user didn't give any or we didn't parsed, return null + * @author Capelier-Marla + * @return String: the distribution name + */ + public static String getDistribution() { + return distribution; + } +} diff --git a/src/main/java/fr/packageviewer/CommandLineParams.java b/src/main/java/fr/packageviewer/CommandLineParams.java new file mode 100644 index 0000000..25418b3 --- /dev/null +++ b/src/main/java/fr/packageviewer/CommandLineParams.java @@ -0,0 +1,26 @@ +package fr.packageviewer; + +import java.util.ArrayList; +import java.util.List; + +import com.beust.jcommander.Parameter; + +/** + * Class to store and get the command line arguments given by the user + * @author Capelier-Marla + */ +public class CommandLineParams { + /** + * List of parameters given by the user + */ + @Parameter + public List parameters = new ArrayList<>(); + + /** + * Distribution the user want to search packages in + */ + @Parameter(names = {"--distro", "-d"}, + description = "Linux distribution to search in", + required = false) + public String distribution; +} diff --git a/src/main/java/fr/packageviewer/Main.java b/src/main/java/fr/packageviewer/Main.java index 7ef537b..1a6b561 100644 --- a/src/main/java/fr/packageviewer/Main.java +++ b/src/main/java/fr/packageviewer/Main.java @@ -1,7 +1,33 @@ package fr.packageviewer; +import com.beust.jcommander.JCommander; + public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); + + /* distribution the user want */ + private static String distribution; + + /** + * Get the command line argument given by the user, parse it with the parser and store it in the corresponding variable + * @author Capelier-Marla + * @param args the command line arguments given by the user + * @return void + */ + static void parseArguments(String[] args) { + // create JCommander and CommandLineParams objects + JCommander jCommander = new JCommander(); + CommandLineParams params = new CommandLineParams(); + // add argument required by the params to the JCommander object + jCommander.addObject(params); + // parse the argument from list of String + jCommander.parse(args); + // store the argument parsed in the variable + distribution = params.distribution; } -} \ No newline at end of file + + public static void main(String[] args) { + // send the command line arguments to the parser + parseArguments(args); + System.out.println(distribution); + } +} From e2c82e24a3627693a93f6b874954054c6935f165 Mon Sep 17 00:00:00 2001 From: Capelier-Marla Date: Mon, 12 Dec 2022 22:50:43 +0100 Subject: [PATCH 2/3] added dep for parser --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 40ee406..2a53d46 100644 --- a/build.gradle +++ b/build.gradle @@ -40,10 +40,11 @@ configurations { dependencies { bundle 'org.json:json:20220924' + bundle 'com.beust:jcommander:1.78' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } test { useJUnitPlatform() -} \ No newline at end of file +} From a8f44010b82bbfcd6c18aee92bd698bd59b4abf7 Mon Sep 17 00:00:00 2001 From: Capelier-Marla Date: Mon, 12 Dec 2022 23:07:35 +0100 Subject: [PATCH 3/3] refactored to use a class for the argument parser --- src/main/java/fr/packageviewer/Main.java | 27 ++---------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/src/main/java/fr/packageviewer/Main.java b/src/main/java/fr/packageviewer/Main.java index 1a6b561..b74f7d2 100644 --- a/src/main/java/fr/packageviewer/Main.java +++ b/src/main/java/fr/packageviewer/Main.java @@ -1,33 +1,10 @@ package fr.packageviewer; -import com.beust.jcommander.JCommander; - public class Main { - /* distribution the user want */ - private static String distribution; - - /** - * Get the command line argument given by the user, parse it with the parser and store it in the corresponding variable - * @author Capelier-Marla - * @param args the command line arguments given by the user - * @return void - */ - static void parseArguments(String[] args) { - // create JCommander and CommandLineParams objects - JCommander jCommander = new JCommander(); - CommandLineParams params = new CommandLineParams(); - // add argument required by the params to the JCommander object - jCommander.addObject(params); - // parse the argument from list of String - jCommander.parse(args); - // store the argument parsed in the variable - distribution = params.distribution; - } - public static void main(String[] args) { // send the command line arguments to the parser - parseArguments(args); - System.out.println(distribution); + ArgParse.parseArguments(args); + System.out.println(ArgParse.getDistribution()); } }