예제 #1
0
        /// <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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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());
            }
        }