/// <summary> /// given input contents, parse it, and return a ScriptData object /// this can throw /// </summary> /// <param name="inputContents">The Bash File or JSON file contents</param> /// <returns></returns> private static ScriptData FromFileContents(string inputContents) { if (inputContents == "") { throw new ArgumentException("The file is empty"); } ScriptData scriptData = null; // is it bash, json, or trash? // bw scripts start with # and JSON with { switch (inputContents[0]) { case '#': { // treat like a Bash Wizard shell script - parse it and echo out a new bash script scriptData = ScriptData.FromBash(inputContents); } break; case '{': { // treat like a JSON file - echo out a new bash script based on the JSON scriptData = ScriptData.FromJson(inputContents, ""); } break; default: throw new Exception($"The input is not a JSON file or a Bash Wizard File because the first character is {inputContents[0]} instead of a # or a {{"); } return(scriptData); }
private static void LoadAndSave(string input, string output) { Console.WriteLine($"updating {input}"); string oldBash = System.IO.File.ReadAllText(input); ScriptData data = ScriptData.FromBash(oldBash); File.WriteAllText(output, data.BashScript); }
/// <summary> /// given file contents, output the JSON for the parameters /// </summary> /// <param name="inputContents"></param> /// <param name="outputFileName"></param> private static void OutputJson(string inputContents, string outputFileName) { var scriptData = ScriptData.FromBash(inputContents); CheckForParseErrors(scriptData); if (outputFileName == "") { Console.WriteLine(scriptData.ToJson()); Console.WriteLine(""); } else { File.WriteAllText(outputFileName, scriptData.ToJson()); } }