private FileInfo SavePack(Pack pack) { var targetFile = FileSystem.DistFile; PackHandler.Save(pack, new TargetWriter(targetFile)); return(targetFile); }
public void HasDroppedCorrectly(PackHandler pack) { if (dropArea.onPointer) { pack.cardPack.AddCards(); } }
public void UpgradePackProject(Uri repositoryUri, FileInfo packFile, IEnumerable <Artifact> dependencies) { var pack = PackHandler.Load(packFile); var index = DownloadRepositoryIndex(repositoryUri); var resolver = new DependencyResolver(); var artifacts = resolver.ResolveArtifacts(index, dependencies); var semver = new Semver(); foreach (var artifact in artifacts) { var dep = pack.Deps.Find(a => a.HasSameRadical(artifact)); if (dep == null) { continue; } var current = dep.Version; var upgrade = semver.UpgradePattern(dep.Version, null, artifact.Version); if (current != upgrade) { dep.Version = upgrade; Console.WriteLine($"[upgrade]{dep.Group}/{dep.Name} from {current} to {upgrade}"); } } PackHandler.Save(pack, packFile); }
public void DeployPack(Uri repositoryUri, FileInfo packFile, DirectoryInfo distFolder) { var pack = PackHandler.Load(packFile); var artifactUri = new Uri(repositoryUri, pack.Id + "/"); using (var basket = new PackDeployerBasket()) { var packUri = new Uri(artifactUri, Settings.DefaultPackFile); foreach (var dist in pack.Dist) { var filename = dist.Replace('/', Path.DirectorySeparatorChar); var filepath = Path.Combine(distFolder.FullName, filename); var distFile = new FileInfo(filepath); var distUri = new Uri(artifactUri, dist); basket.Add(distFile, distUri); } // o descritor do artefato será o último arquivo a ser enviado basket.Add(packFile, packUri); basket.Complete(); } }
private void DownloadArtifacts(Uri repositoryUri, DirectoryInfo depsFolder, IEnumerable <Artifact> artifacts) { var depsPath = depsFolder.FullName; foreach (var artifact in artifacts) { using (var basket = new DependencyInstallerBasket()) { // Contém grupo, nome e versao e segue o formato de URL. basket.CloudPath = new Uri(repositoryUri, artifact.Id + "/"); // O caminho local, por padrão, contém grupo e nome e segue o formato de pasta. // Quando FlatFolder é ativado o grupo e o nome não são usados. if (FlatFolder) { var targetName = artifact.Group + "." + artifact.Name + "." + Settings.DefaultPackFile; basket.LocalPath = new DirectoryInfo(depsPath); basket.Add(Settings.DefaultPackFile, targetName); } else { basket.LocalPath = new DirectoryInfo(Path.Combine(depsPath, artifact.Group, artifact.Name)); basket.Add(Settings.DefaultPackFile); } using (var reader = basket.CreateReader(Settings.DefaultPackFile)) { var pack = PackHandler.Load(reader); foreach (var distname in pack.Dist) { basket.Add(distname); } } basket.Complete(); } } }
public static Context Create(Options options) { var conf = CreateConf(options); var fileSystem = CreateFileSystem(options, conf); var settings = new Settings(conf, options); var packFile = fileSystem.PackFile; var pack = packFile.Exists ? PackHandler.Load(packFile) : new Pack(); var credentialsFile = settings.CredentialsFile; var credentials = File.Exists(credentialsFile) ? CredentialsHandler.Load(credentialsFile) : new Credentials(); return(new Context { Pack = pack, Options = options, Settings = settings, FileSystem = fileSystem, Credentials = credentials }); }
protected override void Start() { base.Start(); packHandler = GetComponent<PackHandler>(); }
private FileInfo CreateIndexFile() { var indexFile = new FileInfo(Path.GetTempFileName()); Console.Write("[index]indexing "); Console.WriteLine(folder.FullName); try { using (var stream = indexFile.OpenWrite()) { var writer = new StreamWriter(stream); writer.WriteLine(string.Format( "#\n" + "# Índice do repositório.\n" + "# {0}\n" + "#\n" + "# A indentação com " + " refere-se às dependências da biblioteca.\n" + "# Por exemplo, se o aplicativo App dependende da biblioteca Lib a entrada de\n" + "# índice seria:\n" + "# Grupo/App/1.0.0\n" + "# + Grupo/Lib/1.0.0\n" + "#\n" , DateTime.Now )); var stack = new Stack <DirectoryInfo>(); stack.Push(folder); while (stack.Count > 0) { var directory = stack.Pop(); foreach (var subdirectory in directory.EnumerateDirectories()) { stack.Push(subdirectory); } var files = directory.EnumerateFiles(); var packFile = files.SingleOrDefault(f => f.Name == Settings.DefaultPackFile); if (packFile != null) { try { var pack = PackHandler.Load(packFile); writer.WriteLine(pack.Id); foreach (var dep in pack.Deps) { writer.Write("+ "); writer.WriteLine(dep); } } catch (Exception ex) { Program.DumpException("O arquivo de pacote não pode ser lido: " + packFile, ex); } } } writer.WriteLine(); writer.Flush(); } return(indexFile); } catch (Exception ex) { if (indexFile.Exists) { try { indexFile.Delete(); } catch { // nada a fazer... } } throw ex; } }