a.go

 1// SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
 2//
 3// SPDX-License-Identifier: AGPL-3.0-or-later
 4
 5package cmd
 6
 7import (
 8	"fmt"
 9
10	"git.secluded.site/np/cmd/shared"
11	"github.com/spf13/cobra"
12)
13
14var aCmd = &cobra.Command{
15	Use:   "a",
16	Short: "Archive session",
17	Long:  `Archive the current session`,
18	RunE:  runArchiveSession,
19}
20
21func init() {
22	rootCmd.AddCommand(aCmd)
23}
24
25func runArchiveSession(cmd *cobra.Command, args []string) error {
26	env, err := shared.Environment(cmd)
27	if err != nil {
28		return err
29	}
30
31	sessionDoc, found, err := shared.ActiveSession(cmd, env)
32	if err != nil {
33		return err
34	}
35	if !found {
36		return nil
37	}
38
39	archived, err := env.SessionStore.Archive(cmd.Context(), sessionDoc.SID)
40	if err != nil {
41		return err
42	}
43
44	out := cmd.OutOrStdout()
45	fmt.Fprintf(out, "Session %s archived.\n", archived.SID)
46	return nil
47}