public void SaveLoadRun() { var package = new RantPackage { ID = "TestPackage", Description = "This is a test.", Title = "Test Package?!", Version = new RantPackageVersion(1, 1, 0) }; package.AddResource(RantDictionaryTable.FromStream("nouns", File.Open("Tables/nouns.table", FileMode.Open))); package.AddResource(RantProgram.CompileString("TestProgram", @"[case:title]<noun-food-fruit-yellow> [rs:5;,\s]{[rn]}")); package.Save("TestPackage.rantpkg"); package = RantPackage.Load("TestPackage.rantpkg"); rant.LoadPackage(package); Assert.AreEqual("Banana 1, 2, 3, 4, 5", rant.DoName("TestProgram").Main); Assert.AreEqual("TestPackage", package.ID); Assert.AreEqual("This is a test.", package.Description); Assert.AreEqual("Test Package?!", package.Title); Assert.AreEqual("1.1.0", package.Version.ToString()); }
public static void Run() { var pkg = new RantPackage(); var paths = GetPaths(); var compress = Property("compression", "true") == "true"; var stringTableMode = int.Parse(Property("string-table", "1")); if (stringTableMode < 0 || stringTableMode > 2) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Invalid string table mode."); Console.ResetColor(); return; } var modeEnum = (BsonStringTableMode)stringTableMode; Console.WriteLine("Packing..."); var contentDir = Path.GetFullPath(paths.Length == 0 ? Environment.CurrentDirectory : paths[0]); Pack(pkg, contentDir); string outputPath; if (!Flag("old")) { var infoPath = Path.Combine(contentDir, "rantpkg.json"); if (!File.Exists(infoPath)) { throw new FileNotFoundException("rantpkg.json missing from root directory."); } var info = JsonConvert.DeserializeObject <PackInfo>(File.ReadAllText(infoPath)); pkg.Title = info.Title; pkg.Authors = info.Authors; pkg.Version = RantPackageVersion.Parse(!String.IsNullOrWhiteSpace(Property("version")) ? Property("version") : info.Version); pkg.Description = info.Description; pkg.ID = info.ID; pkg.Tags = info.Tags; foreach (var dep in info.Dependencies) { pkg.AddDependency(dep); } if (!String.IsNullOrWhiteSpace(info.OutputPath)) { outputPath = Path.Combine(contentDir, info.OutputPath, $"{pkg.ID}-{pkg.Version}.rantpkg"); Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); } else { outputPath = Path.Combine(Directory.GetParent(contentDir).FullName, $"{pkg.ID}-{pkg.Version}.rantpkg"); } Console.WriteLine($"String table mode: {modeEnum}"); Console.WriteLine($"Compression: {(compress ? "yes" : "no")}"); Console.WriteLine(compress ? "Compressing and saving..." : "Saving..."); pkg.Save(outputPath, compress, modeEnum); } else { outputPath = Property("out", Path.Combine( Directory.GetParent(Environment.CurrentDirectory).FullName, Path.GetFileName(Environment.CurrentDirectory) + ".rantpkg")); Console.WriteLine("Saving..."); pkg.SaveOld(outputPath); } Console.WriteLine("\nPackage saved to " + outputPath); Console.ResetColor(); }
protected override void OnRun() { var pkg = new RantPackage(); var paths = CmdLine.GetPaths(); bool compress = !CmdLine.Flag("no-compress"); Console.WriteLine("Packing..."); string contentDir = Path.GetFullPath(paths.Length == 0 ? Environment.CurrentDirectory : paths[0]); Pack(pkg, contentDir); string outputPath; string infoPath = Path.Combine(contentDir, "rantpkg.json"); if (!File.Exists(infoPath)) { throw new FileNotFoundException("rantpkg.json missing from root directory."); } var info = JsonConvert.DeserializeObject <PackInfo>(File.ReadAllText(infoPath)); pkg.Title = info.Title; pkg.Authors = info.Authors; pkg.Version = RantPackageVersion.Parse(!string.IsNullOrWhiteSpace(CmdLine.Property("version")) ? CmdLine.Property("version") : info.Version); pkg.Description = info.Description; pkg.ID = info.ID; pkg.Tags = info.Tags; foreach (var dep in info.Dependencies) { pkg.AddDependency(dep); } // -out property overrides rantpkg.json's output path if (!string.IsNullOrWhiteSpace(CmdLine.Property("out"))) { outputPath = Path.Combine(CmdLine.Property("out"), $"{pkg.ID}-{pkg.Version}.rantpkg"); Directory.CreateDirectory(CmdLine.Property("out")); } // Otherwise, use rantpkg.json's "out" property else if (!string.IsNullOrWhiteSpace(info.OutputPath)) { outputPath = Path.Combine(contentDir, info.OutputPath, $"{pkg.ID}-{pkg.Version}.rantpkg"); Directory.CreateDirectory(Path.GetDirectoryName(outputPath)); } // If it doesn't have one, put it in the package content directory else { outputPath = Path.Combine(Directory.GetParent(contentDir).FullName, $"{pkg.ID}-{pkg.Version}.rantpkg"); } Console.WriteLine($"Compression: {(compress ? "yes" : "no")}"); Console.WriteLine(compress ? "Compressing and saving..." : "Saving..."); pkg.Save(outputPath, compress); Console.WriteLine("\nPackage saved to " + outputPath.Replace('\\', '/')); Console.ResetColor(); }