예제 #1
0
 public void UpdateSourceTags(int appId, int sourceId, DateTime fetchTime, SourceTagInfo[] sourceTags)
 {
     BuildService.CheckClient();
     using (UserModel m = UserModel.GetAdmin(appId)) {
         VcsSource s = m.GetSource(sourceId);
         s.LastFetchTime = fetchTime;
         m.UpdateSource(s, false);
         IEnumerable <SourceTag> currentTags = m.GetVcsSourceTags(sourceId);
         foreach (SourceTagInfo stInfo in sourceTags)
         {
             SourceTag st = currentTags.FirstOrDefault(t => t.Url == stInfo.Url);
             if (st != null)
             {
                 stInfo.MergeTo(st);
                 m.UpdateSourceTag(st);
             }
             else
             {
                 st           = new SourceTag();
                 st.SourceId  = s.Id;
                 st.ProjectId = s.ProjectId;
                 stInfo.MergeTo(st);
                 m.CreateSourceTag(st);
             }
         }
         foreach (SourceTag st in currentTags)
         {
             if (!sourceTags.Any(t => t.Url == st.Url))
             {
                 m.DeleteSourceTag(st);
             }
         }
     }
 }
예제 #2
0
        public ActionResult DeleteUpload(int sourceId)
        {
            SourceTag st = CurrentUserModel.GetSourceTag(sourceId);

            CurrentUserModel.DeleteSourceTag(st);
            return(RedirectToAction("Index", new { id = st.ProjectId }));
        }
예제 #3
0
 public void MergeTo(SourceTag st)
 {
     st.Name         = Name;
     st.LastRevision = LastRevision;
     st.Url          = Url;
     st.Status       = Status;
 }
 public void RetrievePower(SourceTag st, int pw = 10)
 {
     if (powerDistribution[(int)st].DrawPower(pw))
     {
         ReservePower(pw);
     }
 }
예제 #5
0
        public ActionResult UpdateSource(int sourceTagId)
        {
            CurrentUserModel.CleanSources(sourceTagId);
            SourceTag st = CurrentUserModel.GetSourceTag(sourceTagId);

            BuildService.Build(CurrentUserModel.CurrentApplication.Id, st.ProjectId);
            return(RedirectToAction("Index", new { id = st.ProjectId }));
        }
예제 #6
0
 public void SetSourceTagStatus(int appId, int sourceId, string status)
 {
     BuildService.CheckClient();
     using (UserModel m = UserModel.GetAdmin(appId)) {
         SourceTag stag = m.GetSourceTag(sourceId);
         m.SetSourceTagStatus(stag, status);
     }
 }
예제 #7
0
 public SourceTagAddinInfo(SourceTag stag)
 {
     Id           = stag.Id;
     AddinVersion = stag.AddinVersion;
     AddinId      = stag.AddinId;
     AppVersion   = stag.TargetAppVersion;
     Platforms    = stag.Platforms;
     DevStatus    = stag.DevStatus;
 }
예제 #8
0
 public SourceTagInfo(SourceTag st)
 {
     Id           = st.Id;
     Name         = st.Name;
     LastRevision = st.LastRevision;
     Url          = st.Url;
     Status       = st.Status;
     DevStatus    = st.DevStatus;
 }
 public void TransferPower(SourceTag st, int pw = 10)
 {
     if (powerReserve - pw >= lifeSupport)
     {
         if (powerDistribution[(int)st].StorePower(pw))
         {
             AvailablePower -= pw;
         }
     }
 }
예제 #10
0
 public void SetSourceTagBuilt(int appId, int sourceTagId)
 {
     BuildService.CheckClient();
     using (UserModel m = UserModel.GetAdmin(appId)) {
         SourceTag st = m.GetSourceTag(sourceTagId);
         m.SetSourceTagStatus(st, SourceTagStatus.Ready);
         VcsSource vcs = m.GetVcsSource(st.SourceId);
         if (vcs.AutoPublish)
         {
             Builder.BuildService.PublishRelease(m, st, false);
         }
     }
 }
예제 #11
0
        public ActionResult SetDevStatus(int id, int stagId, int value)
        {
            CurrentUserModel.ValidateProject(id);

            SourceTag stag = CurrentUserModel.GetSourceTag(stagId);

            if (stag.ProjectId != id)
            {
                throw new InvalidOperationException("Invalid source tag");
            }

            stag.DevStatus = (DevStatus)value;
            CurrentUserModel.UpdateSourceTag(stag);
            return(Content("OK"));
        }
예제 #12
0
        public void SetSourceTagBuildData(int appId, int stagId, SourceTagAddinInfo[] addins)
        {
            BuildService.CheckClient();
            SourceTagAddinInfo addin = addins [0];

            using (UserModel m = UserModel.GetAdmin(appId)) {
                SourceTag st = m.GetSourceTag(stagId);
                st.AddinVersion     = addin.AddinVersion;
                st.AddinId          = addin.AddinId;
                st.TargetAppVersion = addin.AppVersion;
                st.Platforms        = addin.Platforms;        // string.Join (" ", addin.Platforms);
                st.Status           = SourceTagStatus.Built;
                st.BuildDate        = DateTime.Now;
                m.UpdateSourceTag(st);
            }
        }
예제 #13
0
        public static Release PublishRelease(UserModel m, SourceTag source, bool activate)
        {
            Release rel = m.GetPublishedRelease(source);

            if (rel != null)
            {
                m.DeleteRelease(rel);
            }

            Project p = m.GetProject(source.ProjectId);

            rel                  = new Release();
            rel.ProjectId        = source.ProjectId;
            rel.Status           = p.HasFlag(ProjectFlag.AllowDirectPublish) || activate ? ReleaseStatus.PendingPublish : ReleaseStatus.PendingReview;
            rel.DevStatus        = source.DevStatus;
            rel.LastChangeTime   = DateTime.Now;
            rel.Platforms        = source.Platforms;
            rel.TargetAppVersion = source.TargetAppVersion;
            rel.Version          = source.AddinVersion;
            rel.SourceTagId      = source.Id;

            string    mpack = rel.GetFilePath(rel.PlatformsList [0]);
            AddinInfo ainfo = UserModel.ReadAddinInfo(mpack);

            rel.AddinId          = Mono.Addins.Addin.GetIdName(ainfo.Id);
            rel.AddinName        = ainfo.Name;
            rel.AddinDescription = ainfo.Description;

            m.CreateRelease(rel);

            if (rel.Status == ReleaseStatus.PendingPublish)
            {
                BuildService.UpdateRepositories(false);
            }

            return(rel);
        }
예제 #14
0
        public ActionResult SourceTagPackage(int id, string platform)
        {
            SourceTag stag = CurrentUserModel.GetSourceTag(id);

            return(File(stag.GetFilePath(platform), "application/x-mpack", stag.AddinId + "-" + stag.AddinVersion + ".mpack"));
        }
예제 #15
0
        public ActionResult BuildLog(int id)
        {
            SourceTag stag = CurrentUserModel.GetSourceTag(id);

            return(File(stag.LogFile, "text/html"));
        }
예제 #16
0
 public PowerSource(SourceTag sourceTag, int maxPower = 50, int currentPower = 0)
 {
     this.maxPower     = maxPower;
     this.currentPower = currentPower;
     this.sourceTag    = sourceTag;
 }