workspace

package
v0.4.11 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2023 License: AGPL-3.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Command = &cli.Command{
	Name:  "workspace",
	Flags: []cli.Flag{},
	Action: func(c *cli.Context) (err error) {

		defer func() {
			if err != nil {
				err = cli.Exit(fmt.Errorf("while getting token: %w", err), 1)
			}
		}()

		tokensMap, err := auth.GetAllTokens()
		if err != nil {
			return fmt.Errorf("could not get server tokens: %w", err)
		}

		if c.Args().Len() != 1 {
			return errors.New("file name must be provided as first argument")
		}

		servers := []string{}

		for s := range tokensMap {
			servers = append(servers, s)
		}

		sort.Strings(servers)

		workspaceFile := &WorkspaceFile{}
		for _, s := range servers {

			token := tokensMap[s]

			u, err := url.Parse(s)
			if err != nil {
				return fmt.Errorf("could not parse URL %s: %w", s, err)
			}

			u.User = url.UserPassword("kartusche", token)
			u = u.JoinPath("dav")

			scheme := u.Scheme
			u.Scheme = "webdav"

			q := u.Query()

			ssl := "0"
			if scheme == "https" {
				ssl = "1"
			}
			q.Set("ssl", ssl)

			u.RawQuery = q.Encode()

			workspaceFile.Folders = append(workspaceFile.Folders, WorkspaceFolder{
				URI:  u.String(),
				Name: s,
			})
		}

		fd, err := json.MarshalIndent(workspaceFile, "", " ")
		if err != nil {
			return fmt.Errorf("could not marshal workspace file: %w", err)
		}

		err = os.WriteFile(c.Args().First(), fd, 0666)
		if err != nil {
			return fmt.Errorf("could not write workspace file %s: %w", c.Args().First(), err)
		}

		return nil

	},
}

Functions

This section is empty.

Types

type WorkspaceFile

type WorkspaceFile struct {
	Folders []WorkspaceFolder `json:"folders"`
}

type WorkspaceFolder

type WorkspaceFolder struct {
	URI  string `json:"uri"`
	Name string `json:"name"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL