[Issue #13] - adding install parameter to install a new config file
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful

This commit is contained in:
Gregory Ballantine 2025-02-27 01:02:53 -05:00
parent 5f8df35171
commit 37f2bf0268
3 changed files with 44 additions and 1 deletions

View File

@ -182,7 +182,7 @@
<packager>Bit Goblin</packager> <packager>Bit Goblin</packager>
<prefix>/opt</prefix> <prefix>/opt</prefix>
<changelogFile>${project.basedir}/src/build/changelog.txt</changelogFile> <changelogFile>${project.basedir}/src/build/changelog.txt</changelogFile>
<targetOs>linux</targetOs> <targetOs>${os.name}</targetOs>
<mappings> <mappings>
<mapping> <mapping>
<directory>/opt/dragoon</directory> <directory>/opt/dragoon</directory>

View File

@ -1,7 +1,16 @@
package tech.bitgoblin.config; package tech.bitgoblin.config;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import org.apache.commons.cli.*; import org.apache.commons.cli.*;
import tech.bitgoblin.Logger;
import tech.bitgoblin.io.IOUtils;
public class Cmd { public class Cmd {
private String helpHeader = "Start the Dragoon video transcoder."; private String helpHeader = "Start the Dragoon video transcoder.";
@ -16,6 +25,10 @@ public class Cmd {
Option helpOption = new Option("h", "help", false, "Display CLI usage and options."); Option helpOption = new Option("h", "help", false, "Display CLI usage and options.");
options.addOption(helpOption); options.addOption(helpOption);
// install a config file in the user's home directory
Option installOption = new Option("i", "install", false, "Install configuration file in the user's home directory (or specify a location with -c).");
options.addOption(installOption);
// allow the user to specify a config file manually // allow the user to specify a config file manually
Option configPath = new Option("c", "configPath", true, "Configuration file path (defaults to " + this.configPath + ")"); Option configPath = new Option("c", "configPath", true, "Configuration file path (defaults to " + this.configPath + ")");
configPath.setRequired(false); configPath.setRequired(false);
@ -29,6 +42,17 @@ public class Cmd {
this.printHelp(options); this.printHelp(options);
} }
// check if the install option was called
if (cmd.hasOption("install")) {
try {
this.installConfig();
} catch (IOException e) {
e.printStackTrace();
Logger.logger.error("Unable to install new configuration file; please refer to the stack trace above to resolve the error.");
System.exit(2);
}
}
// set the configPath variable if the option was passed to the program // set the configPath variable if the option was passed to the program
if (cmd.hasOption("configPath")) { if (cmd.hasOption("configPath")) {
this.configPath = cmd.getOptionValue("configPath"); this.configPath = cmd.getOptionValue("configPath");
@ -42,6 +66,15 @@ public class Cmd {
System.exit(0); System.exit(0);
} }
public void installConfig() throws IOException {
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
InputStream is = classloader.getResourceAsStream("example.config");
Files.copy(is, Paths.get(IOUtils.resolveTilda(this.configPath)), StandardCopyOption.REPLACE_EXISTING);
Logger.logger.info("A new configuration file has been installed at " + this.configPath + ".");
System.exit(0);
}
public String getConfigPath() { public String getConfigPath() {
return this.configPath; return this.configPath;
} }

View File

@ -0,0 +1,10 @@
[transcoder]
repo_path = '~/dragoon'
interval = 15
video_format = 'mov'
video_codec = 'dnxhd'
video_profile = 'dnxhr_hq'
video_resolution = '1920x1080'
video_framerate = '60'
video_color = 'yuv422p'
audio_codec = 'pcm_s16le'