MCPcopy Create free account
hub / github.com/dropbox/dbxcli / ls

Function ls

cmd/ls.go:107–171  ·  view source on GitHub ↗
(cmd *cobra.Command, args []string)

Source from the content-addressed store, hash-verified

105}
106
107func ls(cmd *cobra.Command, args []string) (err error) {
108
109 path := ""
110 if len(args) > 0 {
111 if path, err = validatePath(args[0]); err != nil {
112 return err
113 }
114 }
115
116 arg := files.NewListFolderArg(path)
117 arg.Recursive = lsRecursive(cmd)
118 arg.IncludeDeleted, _ = cmd.Flags().GetBool("include-deleted")
119 onlyDeleted, _ := cmd.Flags().GetBool("only-deleted")
120 arg.IncludeDeleted = arg.IncludeDeleted || onlyDeleted
121 opts, err := parseListOptions(cmd)
122 if err != nil {
123 return err
124 }
125 if opts.limit > 0 {
126 if opts.limit > maxListFolderLimit {
127 return invalidArgumentsErrorWithDetails("`ls --limit` is too large", flagErrorDetails("limit"))
128 }
129 arg.Limit = uint32(opts.limit)
130 }
131
132 dbx := filesNewFunc(config)
133
134 var entries []files.IsMetadata
135 if path != "" {
136 var metaRes files.IsMetadata
137 metaRes, err = getFileMetadata(dbx, path)
138 if err != nil {
139 return err
140 }
141
142 switch f := metaRes.(type) {
143 case *files.FileMetadata:
144 if !onlyDeleted {
145 entries = []files.IsMetadata{f}
146 return renderLsOutput(cmd, path, arg, onlyDeleted, opts, entries)
147 }
148 }
149 }
150
151 res, err := dbx.ListFolderContext(currentContext(), arg)
152
153 if err != nil {
154 if !isListFolderNotFolderError(err) {
155 return err
156 }
157 // Don't treat a "not_folder" error as fatal; recover by sending a
158 // get_metadata request for the same path and using that response instead.
159 var metaRes files.IsMetadata
160 metaRes, _ = getFileMetadata(dbx, path)
161 entries = []files.IsMetadata{metaRes}
162 entries, err = finalizeLsEntries(dbx, entries, onlyDeleted, opts)
163 } else {
164 entries, err = collectAndPrepareLsEntries(dbx, res, opts.limit, onlyDeleted, opts)

Calls 12

validatePathFunction · 0.85
lsRecursiveFunction · 0.85
parseListOptionsFunction · 0.85
flagErrorDetailsFunction · 0.85
getFileMetadataFunction · 0.85
renderLsOutputFunction · 0.85
currentContextFunction · 0.85
finalizeLsEntriesFunction · 0.85
ListFolderContextMethod · 0.65