示例#1
0
        private void Add(IpFsApi api, PackageBundler packageBundler)
        {
            if (!packageBundler.Files.Any())
            {
                return;
            }

            try
            {
                var config = Task.Run(async() => await api.GetAddresses()).GetAwaiter().GetResult();
                IpFsPeerId = config["Identity"]["PeerID"].ToString();
            }catch { }

            Task.Run(async delegate
            {
                L.Info("Addding " + packageBundler.Packed.Count + " packages for " + packageBundler.ProjectKey + " to IPFS");

                var dir = packageBundler.PublishProjectDirectory;

                var hash = await api.Add(dir, true);

                L.Info("Pinned: " + packageBundler.ProjectKey + " " + hash);

                return(packageBundler.Hash = hash);
            }).GetAwaiter().GetResult();
        }
示例#2
0
        public void Start()
        {
            L.Info("Deployment starting");

            var bundlers = new List <PackageBundler>();

            if (Context.DoRadiant)
            {
                bundlers.Add(new PackageBundler(this, "radiant", @"Prime.Radiant\Prime.Radiant.Wpf\bin\Debug"));
            }

            if (Context.DoPrime)
            {
                bundlers.Add(new PackageBundler(this, "prime", @"Prime.Ui\Wpf\bin\Debug"));
            }

            foreach (var b in bundlers)
            {
                _packageFiller.Fill(b);
            }

            var api = new IpFsApi(IpfsDaemon);

            api.Connect();

            IpfsDaemon.WaitTillRunning(async client =>
            {
                foreach (var b in bundlers)
                {
                    Add(api, b);
                }

                await SendSwarmConnectAsync(api);

                return(true);
            });

            if (!string.IsNullOrWhiteSpace(Context.SshUri))
            {
                SendSsh(bundlers);
            }

            if (!string.IsNullOrWhiteSpace(Context.CloudFlareZoneId))
            {
                foreach (var b in bundlers)
                {
                    UpdateDns(b);
                }
            }

            L.Info("Deployment complete");
        }
示例#3
0
 private async Task SendSwarmConnectAsync(IpFsApi api)
 {
     var peerid   = Context.IpfsSeedPeerId;
     var endpoint = "/ipfs/" + peerid;
     await api.SwarmConnect(endpoint);
 }