Files
SabreTools/SabreTools.Library/Help/TopLevel.cs

117 lines
3.5 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.IO;
using SabreTools.Library.Data;
namespace SabreTools.Library.Help
{
/// <summary>
/// Represents an actionable top-level feature
/// </summary>
public abstract class TopLevel : Feature
{
public List<string> Inputs = new List<string>();
/// <summary>
/// Process args list based on current feature
/// </summary>
public virtual bool ProcessArgs(string[] args, Help help)
{
for (int i = 1; i < args.Length; i++)
{
// Verify that the current flag is proper for the feature
if (!ValidateInput(args[i]))
{
2020-08-17 14:37:37 -07:00
// Special precautions for files and directories
if (File.Exists(args[i]) || Directory.Exists(args[i]))
{
Inputs.Add(args[i]);
}
2020-08-17 14:37:37 -07:00
// Special precautions for wildcarded inputs (potential paths)
else if (args[i].Contains("*") || args[i].Contains("?"))
{
Inputs.Add(args[i]);
}
2020-08-08 21:53:34 -07:00
2020-08-17 14:37:37 -07:00
// Everything else isn't a file
else
{
Globals.Logger.Error($"Invalid input detected: {args[i]}");
help.OutputIndividualFeature(this.Name);
Globals.Logger.Close();
return false;
}
}
}
return true;
}
/// <summary>
/// Process and extract variables based on current feature
/// </summary>
public virtual void ProcessFeatures(Dictionary<string, Feature> features) { }
#region Generic Extraction
/// <summary>
/// Get boolean value from nullable feature
/// </summary>
protected bool GetBoolean(Dictionary<string, Feature> features, string key)
{
if (!features.ContainsKey(key))
return false;
return true;
}
/// <summary>
/// Get int value from nullable feature
/// </summary>
protected int GetInt32(Dictionary<string, Feature> features, string key)
{
if (!features.ContainsKey(key))
return Int32.MinValue;
return features[key].GetInt32Value();
}
/// <summary>
/// Get long value from nullable feature
/// </summary>
protected long GetInt64(Dictionary<string, Feature> features, string key)
{
if (!features.ContainsKey(key))
return Int64.MinValue;
return features[key].GetInt64Value();
}
/// <summary>
/// Get list value from nullable feature
/// </summary>
protected List<string> GetList(Dictionary<string, Feature> features, string key)
{
if (!features.ContainsKey(key))
return new List<string>();
return features[key].GetListValue() ?? new List<string>();
}
/// <summary>
/// Get string value from nullable feature
/// </summary>
protected string GetString(Dictionary<string, Feature> features, string key)
{
if (!features.ContainsKey(key))
return null;
return features[key].GetStringValue();
}
#endregion
}
}