@@ -77,6 +77,12 @@ const (
7777 _partVcsGitIdxTotal = "vcs_git_idx_total"
7878 _partVcsGitIdxIncluded = "vcs_git_idx_incl"
7979 _partVcsGitIdxExcluded = "vcs_git_idx_excl"
80+
81+ _partVcsSaplRev = "vcs_sapling_rev"
82+ _partVcsSaplNode = "vcs_sapling_node"
83+ _partVcsSaplBookmarks = "vcs_sapling_bookmarks"
84+ _partVcsSaplBookmarkActive = "vcs_sapling_bookmarks_active"
85+ _partVcsSaplBookmarksRemote = "vcs_sapling_bookmarks_remote"
8086)
8187
8288func handleQUIT () context.CancelFunc {
@@ -214,6 +220,51 @@ func cmdQueryRun(_ *cobra.Command, _ []string) error {
214220 return nil
215221 })
216222
223+ tasks .Go (func (context.Context ) error {
224+ subTasks := mkWgPool ()
225+ defer subTasks .Wait ()
226+
227+ saplingTemplate := `{rev}\t{node}\t{join(remotenames, "#")}\t{join(bookmarks, "#")}\t{activebookmark}\t{ifcontains(rev, revset("."), "@")}\n`
228+
229+ if _ , err := stringExec ("sl" , "root" ); err == nil {
230+ printPart (_partVcs , "sapling" )
231+ } else {
232+ return nil
233+ }
234+
235+ subTasks .Go (func (ctx context.Context ) error {
236+ if revInfo , err := stringExec ("sl" , "log" , "-r" , "." , "--template" , saplingTemplate ); err == nil {
237+ info := strings .Split (revInfo , "\t " )
238+ printPart (_partVcsSaplRev , info [0 ])
239+ printPart (_partVcsSaplNode , info [1 ])
240+ printPart (_partVcsSaplBookmarks , info [3 ])
241+ if info [4 ] == "" {
242+ printPart (_partVcsSaplBookmarkActive , "@" )
243+ } else {
244+ printPart (_partVcsSaplBookmarkActive , info [4 ])
245+ }
246+ printPart (_partVcsSaplBookmarksRemote , info [2 ])
247+ }
248+
249+ return nil
250+ })
251+
252+
253+ subTasks .Go (func (ctx context.Context ) error {
254+ if saplStatus , err := stringExec ("sl" , "status" ); err == nil {
255+ if len (saplStatus ) == 0 {
256+ printPart (_partVcsDirty , 0 )
257+ return nil
258+ }
259+
260+ printPart (_partVcsDirty , 1 )
261+ }
262+ return nil
263+ })
264+
265+ return nil
266+ })
267+
217268 tasks .Go (func (context.Context ) error {
218269 subTasks := mkWgPool ()
219270 defer subTasks .Wait ()
0 commit comments