AddDependentPackage() { var packageNameArgument = new Options.PackageName(); var packageName = CommandLineProcessor.Evaluate(packageNameArgument); if (null == packageName) { throw new Exception("No name was defined. Use {0} on the command line to specify it.", (packageNameArgument as ICommandLineArgument).LongName); } var packageVersion = CommandLineProcessor.Evaluate(new Options.PackageVersion()); var masterPackage = GetMasterPackage(); // TODO: no checking if this package exists // TODO: is this dependent already present? if (null != masterPackage.Dependents.Where(item => item.Item1 == packageName && item.Item2 == packageVersion).FirstOrDefault()) { if (null != packageVersion) { throw new Exception("Dependency {0}, version {1}, already exists", packageName, packageVersion); } else { throw new Exception("Dependency {0} already exists", packageName); } } masterPackage.Dependents.Add(new System.Tuple <string, string, bool?>(packageName, packageVersion, null)); masterPackage.Write(); }
MakePackage() { var packageDir = Graph.Instance.ProcessState.WorkingDirectory; var bamDir = System.IO.Path.Combine(packageDir, BamSubFolder); if (System.IO.Directory.Exists(bamDir)) { throw new Exception("A Bam package already exists at {0}", packageDir); } var packageNameArgument = new Options.PackageName(); var packageName = CommandLineProcessor.Evaluate(packageNameArgument); if (null == packageName) { throw new Exception("No name was defined. Use {0} on the command line to specify it.", (packageNameArgument as ICommandLineArgument).LongName); } var packageVersion = CommandLineProcessor.Evaluate(new Options.PackageVersion()); var definition = new PackageDefinition(bamDir, packageName, packageVersion); System.IO.Directory.CreateDirectory(bamDir); definition.Write(); var scriptsDir = System.IO.Path.Combine(bamDir, ScriptsSubFolder); System.IO.Directory.CreateDirectory(scriptsDir); var initialScriptFile = System.IO.Path.Combine(scriptsDir, packageName) + ".cs"; using (System.IO.TextWriter writer = new System.IO.StreamWriter(initialScriptFile)) { writer.WriteLine("using Bam.Core;"); writer.WriteLine("namespace {0}", packageName); writer.WriteLine("{"); writer.WriteLine(" // write modules here ..."); writer.WriteLine("}"); } }
AddDependentPackage() { var packageNameArgument = new Options.PackageName(); var packageName = CommandLineProcessor.Evaluate(packageNameArgument); if (null == packageName) { throw new Exception("No name was defined. Use {0} on the command line to specify it.", (packageNameArgument as ICommandLineArgument).LongName); } var packageVersion = CommandLineProcessor.Evaluate(new Options.PackageVersion()); var masterPackage = GetMasterPackage(); if (null != masterPackage.Dependents.FirstOrDefault(item => item.Item1 == packageName && item.Item2 == packageVersion)) { if (null != packageVersion) { throw new Exception("Package dependency {0}, version {1}, is already present", packageName, packageVersion); } else { throw new Exception("Package dependency {0} is already present", packageName); } } var newDepTuple = new System.Tuple <string, string, bool?>(packageName, packageVersion, null); masterPackage.Dependents.Add(newDepTuple); // TODO: this is unfortunate having to write the file in order to use it with IdentifyAllPackages masterPackage.Write(); // validate that the addition is ok try { PackageUtilities.IdentifyAllPackages(); } catch (Exception exception) { masterPackage.Dependents.Remove(newDepTuple); masterPackage.Write(); throw new Exception(exception, "Failed to add dependent. Are all necessary package repositories specified?"); } }
MakePackage() { var packageDir = Graph.Instance.ProcessState.WorkingDirectory; var bamDir = System.IO.Path.Combine(packageDir, BamSubFolder); if (System.IO.Directory.Exists(bamDir)) { throw new Exception("Cannot create new package: A Bam package already exists at {0}", packageDir); } var packageNameArgument = new Options.PackageName(); var packageName = CommandLineProcessor.Evaluate(packageNameArgument); if (null == packageName) { throw new Exception("Cannot create new package: No name was defined. Use {0} on the command line to specify it.", (packageNameArgument as ICommandLineArgument).LongName); } var packageVersion = CommandLineProcessor.Evaluate(new Options.PackageVersion()); var definition = new PackageDefinition(bamDir, packageName, packageVersion); IOWrapper.CreateDirectory(bamDir); definition.Write(); var scriptsDir = System.IO.Path.Combine(bamDir, ScriptsSubFolder); IOWrapper.CreateDirectory(scriptsDir); var initialScriptFile = System.IO.Path.Combine(scriptsDir, packageName) + ".cs"; using (System.IO.TextWriter writer = new System.IO.StreamWriter(initialScriptFile)) { writer.NewLine = "\n"; writer.WriteLine("using Bam.Core;"); writer.WriteLine("namespace {0}", packageName); writer.WriteLine("{"); writer.WriteLine(" // write modules here ..."); writer.WriteLine("}"); } Log.Info("Package {0} was successfully created at {1}", definition.FullName, packageDir); }
AddDependentPackage() { var packageNameArgument = new Options.PackageName(); var packageName = CommandLineProcessor.Evaluate(packageNameArgument); if (null == packageName) { throw new Exception("No name was defined. Use {0} on the command line to specify it.", (packageNameArgument as ICommandLineArgument).LongName); } var packageVersion = CommandLineProcessor.Evaluate(new Options.PackageVersion()); var masterPackage = GetMasterPackage(); // TODO: no checking if this package exists // TODO: is this dependent already present? if (null != masterPackage.Dependents.Where(item => item.Item1 == packageName && item.Item2 == packageVersion).FirstOrDefault()) { if (null != packageVersion) { throw new Exception("Dependency {0}, version {1}, already exists", packageName, packageVersion); } else { throw new Exception("Dependency {0} already exists", packageName); } } masterPackage.Dependents.Add(new System.Tuple<string, string, bool?>(packageName, packageVersion, null)); masterPackage.Write(); }