providing one file as an argument will force that file to be used

This commit is contained in:
Valerie Wolfe 2024-03-07 16:16:13 -05:00
parent 3902f5e3b7
commit dec2f6ff19

View file

@ -2,14 +2,31 @@ using System;
using System.IO; using System.IO;
using System.Security.Cryptography; using System.Security.Cryptography;
// use merge function if given multiple arguments var resourcePath = "/usr/share/fortune-cs/";
if(args.Length > 0) {
// pull file arg if 1 argument is provided
string file = null;
if(args.Length == 1) {
file = args[0];
// if the file doens't exist, see if it's in `resourcePath`
if(!File.Exists(file)) {
if(!file.EndsWith(".txt"))
file = file + ".txt";
file = resourcePath + file;
if(!File.Exists(file)) {
// don't try to read a file that doesn't exist
Console.WriteLine($"fortune-cs: no file '{file}' found.");
return 2;
}
}
}
// run merge if more than 1 argument is provided
else if(args.Length > 0) {
Utilities.Merge(args); Utilities.Merge(args);
return 0; return 0;
} }
// make sure fortune directory exists // make sure fortune directory exists
var resourcePath = "/usr/share/fortune-cs/";
if(!Directory.Exists(resourcePath)) { if(!Directory.Exists(resourcePath)) {
Console.WriteLine("fortune-cs: directory '/usr/share/fortune-cs/' does not exist"); Console.WriteLine("fortune-cs: directory '/usr/share/fortune-cs/' does not exist");
return 1; return 1;
@ -18,15 +35,17 @@ if(!Directory.Exists(resourcePath)) {
// pull file list // pull file list
var files = Directory.GetFiles(resourcePath, "*.txt"); var files = Directory.GetFiles(resourcePath, "*.txt");
// choose a file and line // choose file if no arg provided
var file = files[RandomNumberGenerator.GetInt32(files.Length)]; if(file == null)
file = files[RandomNumberGenerator.GetInt32(files.Length)];
// read the file and choose a line
var lines = File.ReadAllLines(file); var lines = File.ReadAllLines(file);
var line = lines[RandomNumberGenerator.GetInt32(lines.Length)]; var line = lines[RandomNumberGenerator.GetInt32(lines.Length)];
// process escape codes // process line breaks
line = line.Replace("\\n", "\n"); line = line.Replace("\\n", "\n");
// write // write the fortune
Console.WriteLine(line); Console.WriteLine(line);
return 0; return 0;