diff --git a/docs/content/api/openapi.yaml b/docs/content/api/openapi.yaml index a0e2e30867..d343614ad6 100644 --- a/docs/content/api/openapi.yaml +++ b/docs/content/api/openapi.yaml @@ -857,6 +857,14 @@ paths: explode: true schema: type: boolean + - name: count + description: return the number of names matching the search terms or other options + required: false + style: form + in: query + explode: true + schema: + type: boolean - name: dryRun description: only available with --clean or --autoname, outputs changes to stdout instead of updating databases required: false @@ -1010,6 +1018,14 @@ paths: explode: true schema: type: boolean + - name: details + description: show the functions and events instead of summaries for all abi files + required: false + style: form + in: query + explode: true + schema: + type: boolean - name: count description: show the number of abis downloaded required: false diff --git a/docs/content/chifra/accounts.md b/docs/content/chifra/accounts.md index 04cea87241..d1468475ed 100644 --- a/docs/content/chifra/accounts.md +++ b/docs/content/chifra/accounts.md @@ -223,7 +223,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] @@ -282,6 +282,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true -x, --fmt string export format, one of [none|json*|txt|csv] @@ -342,7 +343,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/sdk b/sdk index 838047ea0b..0f9b628c89 160000 --- a/sdk +++ b/sdk @@ -1 +1 @@ -Subproject commit 838047ea0bda7ddfe1db98fd4dd7ad14c2b6d118 +Subproject commit 0f9b628c8954a0de5fe160afd0751d58ef41c5ec diff --git a/src/apps/chifra/cmd/abis.go b/src/apps/chifra/cmd/abis.go index da3a250af5..ec1f469109 100644 --- a/src/apps/chifra/cmd/abis.go +++ b/src/apps/chifra/cmd/abis.go @@ -59,7 +59,8 @@ func init() { abisCmd.Flags().BoolVarP(&abisPkg.GetOptions().Known, "known", "k", false, `load common 'known' ABIs from cache`) abisCmd.Flags().StringVarP(&abisPkg.GetOptions().ProxyFor, "proxy_for", "r", "", `redirects the query to this implementation`) abisCmd.Flags().BoolVarP(&abisPkg.GetOptions().List, "list", "l", false, `a list of downloaded abi files`) - abisCmd.Flags().BoolVarP(&abisPkg.GetOptions().Count, "count", "c", false, `show the number of abis downloaded`) + abisCmd.Flags().BoolVarP(&abisPkg.GetOptions().Details, "details", "d", false, `show the functions and events instead of summaries for all abi files`) + abisCmd.Flags().BoolVarP(&abisPkg.GetOptions().Count, "count", "U", false, `show the number of abis downloaded`) abisCmd.Flags().StringSliceVarP(&abisPkg.GetOptions().Find, "find", "f", nil, `search for function or event declarations given a four- or 32-byte code(s)`) abisCmd.Flags().StringSliceVarP(&abisPkg.GetOptions().Hint, "hint", "n", nil, `for the --find option only, provide hints to speed up the search`) abisCmd.Flags().StringVarP(&abisPkg.GetOptions().Encode, "encode", "e", "", `generate the 32-byte encoding for a given canonical function or event signature`) diff --git a/src/apps/chifra/cmd/monitors.go b/src/apps/chifra/cmd/monitors.go index 1ba86336aa..0c967fa1ff 100644 --- a/src/apps/chifra/cmd/monitors.go +++ b/src/apps/chifra/cmd/monitors.go @@ -62,7 +62,7 @@ func init() { monitorsCmd.Flags().BoolVarP(&monitorsPkg.GetOptions().Remove, "remove", "", false, `remove a previously deleted monitor`) monitorsCmd.Flags().BoolVarP(&monitorsPkg.GetOptions().Clean, "clean", "C", false, `clean (i.e. remove duplicate appearances) from monitors, optionally clear stage`) monitorsCmd.Flags().BoolVarP(&monitorsPkg.GetOptions().List, "list", "l", false, `list monitors in the cache (--verbose for more detail)`) - monitorsCmd.Flags().BoolVarP(&monitorsPkg.GetOptions().Count, "count", "c", false, `show the number of active monitors (included deleted but not removed monitors)`) + monitorsCmd.Flags().BoolVarP(&monitorsPkg.GetOptions().Count, "count", "U", false, `show the number of active monitors (included deleted but not removed monitors)`) monitorsCmd.Flags().BoolVarP(&monitorsPkg.GetOptions().Staged, "staged", "S", false, `for --clean, --list, and --count options only, include staged monitors`) globals.InitGlobals("monitors", monitorsCmd, &monitorsPkg.GetOptions().Globals, capabilities) diff --git a/src/apps/chifra/cmd/names.go b/src/apps/chifra/cmd/names.go index c385db8946..996e22cc86 100644 --- a/src/apps/chifra/cmd/names.go +++ b/src/apps/chifra/cmd/names.go @@ -65,6 +65,7 @@ func init() { namesCmd.Flags().BoolVarP(&namesPkg.GetOptions().Tags, "tags", "g", false, `export the list of tags and subtags only`) namesCmd.Flags().BoolVarP(&namesPkg.GetOptions().Clean, "clean", "C", false, `clean the data (addrs to lower case, sort by addr)`) namesCmd.Flags().BoolVarP(&namesPkg.GetOptions().Regular, "regular", "r", false, `only available with --clean, cleans regular names database`) + namesCmd.Flags().BoolVarP(&namesPkg.GetOptions().Count, "count", "U", false, `return the number of names matching the search terms or other options`) namesCmd.Flags().BoolVarP(&namesPkg.GetOptions().DryRun, "dry_run", "d", false, `only available with --clean or --autoname, outputs changes to stdout instead of updating databases`) namesCmd.Flags().StringVarP(&namesPkg.GetOptions().Autoname, "autoname", "A", "", `an address assumed to be a token, added automatically to names database if true`) namesCmd.Flags().BoolVarP(&namesPkg.GetOptions().Create, "create", "", false, `create a new name record (hidden)`) diff --git a/src/apps/chifra/internal/abis/README.md b/src/apps/chifra/internal/abis/README.md index 16a62778a0..87ab0268dd 100644 --- a/src/apps/chifra/internal/abis/README.md +++ b/src/apps/chifra/internal/abis/README.md @@ -37,7 +37,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/src/apps/chifra/internal/abis/handle_details.go b/src/apps/chifra/internal/abis/handle_details.go new file mode 100644 index 0000000000..3a9b76f370 --- /dev/null +++ b/src/apps/chifra/internal/abis/handle_details.go @@ -0,0 +1,55 @@ +package abisPkg + +import ( + "errors" + "fmt" + "path/filepath" + "strings" + + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/base" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/output" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/rpc" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/types" +) + +func (opts *AbisOptions) HandleDetails(rCtx *output.RenderCtx) (err error) { + if len(opts.Addrs) == 0 { + vFunc := func(fn string, vP any) (bool, error) { + _ = vP + _, name := filepath.Split(fn) + if strings.HasSuffix(name, ".json") { + if base.IsValidAddress(strings.TrimSuffix(name, ".json")) { + // silent ignore + opts.Addrs = append(opts.Addrs, strings.TrimSuffix(name, ".json")) + } + } + return true, nil + } + opts.ForEveryAbi(true, vFunc, nil) + } + + fetchData := func(modelChan chan types.Modeler, errorChan chan error) { + for _, addr := range opts.Addrs { + functions, which, err := opts.LoadAbis([]string{addr}, false /* known */) + if err != nil { + if errors.Is(err, rpc.ErrNotAContract) { + msg := fmt.Errorf("address %s is not a smart contract", which) + errorChan <- msg + // Report but don't quit processing + } else { + // Cancel on all other errors + errorChan <- err + rCtx.Cancel() + // } else if len(opts.ProxyFor) > 0 { + // TODO: We need to copy the proxied-to ABI to the proxy (replacing) + } + } + + for _, f := range functions { + modelChan <- f + } + } + } + + return output.StreamMany(rCtx, fetchData, opts.Globals.OutputOpts()) +} diff --git a/src/apps/chifra/internal/abis/handle_list.go b/src/apps/chifra/internal/abis/handle_list.go index 6837e4dbb1..e6ebb6acc4 100644 --- a/src/apps/chifra/internal/abis/handle_list.go +++ b/src/apps/chifra/internal/abis/handle_list.go @@ -25,12 +25,17 @@ func (opts *AbisOptions) HandleList(rCtx *output.RenderCtx) error { abiArray := make([]types.Abi, 0, 100) vFunc := func(fn string, vP any) (bool, error) { _ = vP + isKnown := strings.Contains(fn, "known") + if opts.Known && !isKnown { + return true, nil + } + if strings.HasSuffix(fn, ".json") { info, _ := os.Stat(fn) abi := types.Abi{ FileSize: file.FileSize(fn), LastModDate: info.ModTime().Format("2006-01-02 15:04:05"), - IsKnown: strings.Contains(fn, "known"), + IsKnown: isKnown, } abi.Path, abi.Name = filepath.Split(fn) if len(abi.Name) > 0 { diff --git a/src/apps/chifra/internal/abis/options.go b/src/apps/chifra/internal/abis/options.go index 95557ea128..c1be202f81 100644 --- a/src/apps/chifra/internal/abis/options.go +++ b/src/apps/chifra/internal/abis/options.go @@ -32,6 +32,7 @@ type AbisOptions struct { Known bool `json:"known,omitempty"` // Load common 'known' ABIs from cache ProxyFor string `json:"proxyFor,omitempty"` // Redirects the query to this implementation List bool `json:"list,omitempty"` // A list of downloaded abi files + Details bool `json:"details,omitempty"` // Show the functions and events instead of summaries for all abi files Count bool `json:"count,omitempty"` // Show the number of abis downloaded Find []string `json:"find,omitempty"` // Search for function or event declarations given a four- or 32-byte code(s) Hint []string `json:"hint,omitempty"` // For the --find option only, provide hints to speed up the search @@ -52,6 +53,7 @@ func (opts *AbisOptions) testLog() { logger.TestLog(opts.Known, "Known: ", opts.Known) logger.TestLog(len(opts.ProxyFor) > 0, "ProxyFor: ", opts.ProxyFor) logger.TestLog(opts.List, "List: ", opts.List) + logger.TestLog(opts.Details, "Details: ", opts.Details) logger.TestLog(opts.Count, "Count: ", opts.Count) logger.TestLog(len(opts.Find) > 0, "Find: ", opts.Find) logger.TestLog(len(opts.Hint) > 0, "Hint: ", opts.Hint) @@ -92,6 +94,8 @@ func AbisFinishParseInternal(w io.Writer, values url.Values) *AbisOptions { opts.ProxyFor = value[0] case "list": opts.List = true + case "details": + opts.Details = true case "count": opts.Count = true case "find": diff --git a/src/apps/chifra/internal/abis/output.go b/src/apps/chifra/internal/abis/output.go index b2ff9ebe07..a938d97b75 100644 --- a/src/apps/chifra/internal/abis/output.go +++ b/src/apps/chifra/internal/abis/output.go @@ -61,6 +61,8 @@ func (opts *AbisOptions) AbisInternal(rCtx *output.RenderCtx) error { err = opts.HandleFind(rCtx) } else if opts.Count { err = opts.HandleCount(rCtx) + } else if opts.Details { + err = opts.HandleDetails(rCtx) } else if opts.List { err = opts.HandleList(rCtx) } else if len(opts.Encode) > 0 { diff --git a/src/apps/chifra/internal/abis/validate.go b/src/apps/chifra/internal/abis/validate.go index 1005dd4de9..6650bf039a 100644 --- a/src/apps/chifra/internal/abis/validate.go +++ b/src/apps/chifra/internal/abis/validate.go @@ -43,6 +43,7 @@ func (opts *AbisOptions) validateAbis() error { len(opts.Find) == 0 && !opts.Count && !opts.List && + !opts.Details && !opts.Known && !opts.Globals.Decache { // If we're not find and not known we better have at least one address diff --git a/src/apps/chifra/internal/monitors/README.md b/src/apps/chifra/internal/monitors/README.md index 65db74804f..93e08cface 100644 --- a/src/apps/chifra/internal/monitors/README.md +++ b/src/apps/chifra/internal/monitors/README.md @@ -33,7 +33,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/src/apps/chifra/internal/names/README.md b/src/apps/chifra/internal/names/README.md index 559205b0cb..457b4670c6 100644 --- a/src/apps/chifra/internal/names/README.md +++ b/src/apps/chifra/internal/names/README.md @@ -34,6 +34,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/src/apps/chifra/internal/names/crud.go b/src/apps/chifra/internal/names/crud.go index 8cbfbd4eaf..1bf99e3da9 100644 --- a/src/apps/chifra/internal/names/crud.go +++ b/src/apps/chifra/internal/names/crud.go @@ -11,6 +11,7 @@ package namesPkg import ( "net/http" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/base" "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/crud" "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/types" ) @@ -30,6 +31,10 @@ func (opts *NamesOptions) getType() types.Parts { ret |= types.Regular } + if opts.All && !base.IsTestMode() { + ret |= types.Baddress + } + if opts.MatchCase { ret |= types.MatchCase } diff --git a/src/apps/chifra/internal/names/handle_count.go b/src/apps/chifra/internal/names/handle_count.go new file mode 100644 index 0000000000..ec0b535abe --- /dev/null +++ b/src/apps/chifra/internal/names/handle_count.go @@ -0,0 +1,61 @@ +// Copyright 2021 The TrueBlocks Authors. All rights reserved. +// Use of this source code is governed by a license that can +// be found in the LICENSE file. + +package namesPkg + +import ( + "path/filepath" + + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/config" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/file" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/names" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/output" + "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/types" +) + +// HandleCount handles the chifra abis --count command. +func (opts *NamesOptions) HandleCount(rCtx *output.RenderCtx) error { + testMode := opts.Globals.TestMode + chain := opts.Globals.Chain + + fetchData := func(modelChan chan types.Modeler, errorChan chan error) { + s := types.Count{} + if testMode { + s.Count = 199 + } else { + configPath := config.MustGetPathToChainConfig(chain) + t := opts.getType() + if t&types.Custom != 0 { + if n, err := file.WordCount(filepath.Join(configPath, "names_custom.tab"), true); err != nil { + errorChan <- err + return + } else { + s.Count += uint64(n) + } + } + if t&types.Prefund != 0 { + if n, err := file.WordCount(filepath.Join(configPath, "allocs.csv"), true); err != nil { + errorChan <- err + return + } else { + s.Count += uint64(n) + } + } + if t&types.Regular != 0 { + if n, err := file.WordCount(filepath.Join(configPath, "names.tab"), true); err != nil { + errorChan <- err + return + } else { + s.Count += uint64(n) + } + } + if t&types.Baddress != 0 { + s.Count += uint64(names.BaddressCount()) + } + } + modelChan <- &s + } + + return output.StreamMany(rCtx, fetchData, opts.Globals.OutputOpts()) +} diff --git a/src/apps/chifra/internal/names/options.go b/src/apps/chifra/internal/names/options.go index 401ceef4a2..648cb27e7a 100644 --- a/src/apps/chifra/internal/names/options.go +++ b/src/apps/chifra/internal/names/options.go @@ -39,6 +39,7 @@ type NamesOptions struct { Tags bool `json:"tags,omitempty"` // Export the list of tags and subtags only Clean bool `json:"clean,omitempty"` // Clean the data (addrs to lower case, sort by addr) Regular bool `json:"regular,omitempty"` // Only available with --clean, cleans regular names database + Count bool `json:"count,omitempty"` // Return the number of names matching the search terms or other options DryRun bool `json:"dryRun,omitempty"` // Only available with --clean or --autoname, outputs changes to stdout instead of updating databases Autoname string `json:"autoname,omitempty"` // An address assumed to be a token, added automatically to names database if true Create bool `json:"create,omitempty"` // Create a new name record @@ -70,6 +71,7 @@ func (opts *NamesOptions) testLog() { logger.TestLog(opts.Tags, "Tags: ", opts.Tags) logger.TestLog(opts.Clean, "Clean: ", opts.Clean) logger.TestLog(opts.Regular, "Regular: ", opts.Regular) + logger.TestLog(opts.Count, "Count: ", opts.Count) logger.TestLog(opts.DryRun, "DryRun: ", opts.DryRun) logger.TestLog(len(opts.Autoname) > 0, "Autoname: ", opts.Autoname) logger.TestLog(opts.Create, "Create: ", opts.Create) @@ -125,6 +127,8 @@ func NamesFinishParseInternal(w io.Writer, values url.Values) *NamesOptions { opts.Clean = true case "regular": opts.Regular = true + case "count": + opts.Count = true case "dryRun": opts.DryRun = true case "autoname": diff --git a/src/apps/chifra/internal/names/output.go b/src/apps/chifra/internal/names/output.go index beff867c57..5f991747b6 100644 --- a/src/apps/chifra/internal/names/output.go +++ b/src/apps/chifra/internal/names/output.go @@ -63,7 +63,9 @@ func (opts *NamesOptions) NamesInternal(rCtx *output.RenderCtx) error { msg := "chifra names" // EXISTING_CODE // EXISTING_CODE - if len(opts.Autoname) > 0 { + if opts.Count { + err = opts.HandleCount(rCtx) + } else if len(opts.Autoname) > 0 { err = opts.HandleAutoname(rCtx) } else if opts.Clean { err = opts.HandleClean(rCtx) diff --git a/src/apps/chifra/internal/names/validate.go b/src/apps/chifra/internal/names/validate.go index 6c7ee129e9..d37f37cb95 100644 --- a/src/apps/chifra/internal/names/validate.go +++ b/src/apps/chifra/internal/names/validate.go @@ -24,6 +24,21 @@ func (opts *NamesOptions) validateNames() error { return validate.Usage("chain {0} is not properly configured.", chain) } + if opts.Count { + if opts.Clean || len(opts.Autoname) > 0 || opts.anyCrud() { + return validate.Usage("You may not use the {0} option when editing names.", "--count") + } + if len(opts.Terms) > 0 { + return validate.Usage("The {0} option is not available{1}.", "--count", " with search terms") + } + /* + Custom bool `json:"custom,omitempty"` // Include only custom named accounts in the search + Prefund bool `json:"prefund,omitempty"` // Include prefund accounts in the search + Regular bool `json:"regular,omitempty"` // Only available with --clean, cleans regular names database + Tags bool `json:"tags,omitempty"` // Export the list of tags and subtags only + */ + } + if len(opts.Terms) != 1 { if opts.Delete { return validate.Usage("The {0} option requires exactly one address.", "--delete") diff --git a/src/apps/chifra/pkg/file/wc.go b/src/apps/chifra/pkg/file/wc.go index 5f02379cd5..486a777448 100644 --- a/src/apps/chifra/pkg/file/wc.go +++ b/src/apps/chifra/pkg/file/wc.go @@ -11,6 +11,10 @@ func WordCount(fileName string, ignoreHeader bool) (int, error) { // fmt.Println("-------------------------------------------") // fmt.Println(fileName, FileExists(fileName)) // fmt.Println("-------------------------------------------") + if !FileExists(fileName) { + return 0, os.ErrNotExist + } + r, _ := os.OpenFile(fileName, os.O_RDONLY, 0) defer r.Close() diff --git a/src/apps/chifra/pkg/names/regular.go b/src/apps/chifra/pkg/names/regular.go index 27a13a5f43..0084f06051 100644 --- a/src/apps/chifra/pkg/names/regular.go +++ b/src/apps/chifra/pkg/names/regular.go @@ -15,6 +15,12 @@ var regularNamesMutex sync.Mutex // loadRegularMap loads the regular names from the cache func loadRegularMap(chain string, terms []string, parts types.Parts, ret *map[base.Address]types.Name) error { + regularNamesMutex.Lock() + defer func() { + regularNamesLoaded = true + regularNamesMutex.Unlock() + }() + if regularNamesLoaded { for _, name := range regularNames { if doSearch(&name, terms, parts) { @@ -28,12 +34,6 @@ func loadRegularMap(chain string, terms []string, parts types.Parts, ret *map[ba return nil } - regularNamesMutex.Lock() - defer func() { - regularNamesLoaded = true - regularNamesMutex.Unlock() - }() - db, err := openDatabaseForRead(chain, DatabaseRegular) if err != nil { return err @@ -99,3 +99,9 @@ func loadKnownBadresses(unused string, terms []string, parts types.Parts, ret *m } return nil } + +func BaddressCount() int { + m := make(map[base.Address]types.Name) + _ = loadKnownBadresses("unused", []string{}, types.Baddress, &m) + return len(m) +} diff --git a/src/apps/chifra/pkg/types/sort.go b/src/apps/chifra/pkg/types/sort.go index 1e40ddc2be..a3468bd698 100644 --- a/src/apps/chifra/pkg/types/sort.go +++ b/src/apps/chifra/pkg/types/sort.go @@ -6,3 +6,10 @@ const ( Ascending SortOrder = true Descending SortOrder = false ) + +func (o SortOrder) String() string { + if o == Ascending { + return "ascending" + } + return "descending" +} diff --git a/src/apps/chifra/pkg/types/types_abi_sort.go b/src/apps/chifra/pkg/types/types_abi_sort.go index 85e5faf997..1f92c04ad9 100644 --- a/src/apps/chifra/pkg/types/types_abi_sort.go +++ b/src/apps/chifra/pkg/types/types_abi_sort.go @@ -16,13 +16,9 @@ const ( AbiName AbiField = "name" ) -// IsValidAbiField returns true if the given field is a valid sortable Abi field. -func IsValidAbiField(field string) bool { - switch field { - case "address", "fileSize", "hasConstructor", "hasFallback", "isEmpty", "isKnown", "lastModDate", "nEvents", "nFunctions", "name": - return true - } - return false +// GetSortFieldsAbi returns a []string of valid sort fields for the type. +func GetSortFieldsAbi() []string { + return []string{"address", "fileSize", "hasConstructor", "hasFallback", "isEmpty", "isKnown", "lastModDate", "nEvents", "nFunctions", "name"} } // AbiBy returns a comparison function for sorting Abi instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_cacheitem_sort.go b/src/apps/chifra/pkg/types/types_cacheitem_sort.go index c7284d67ef..dd9e551d77 100644 --- a/src/apps/chifra/pkg/types/types_cacheitem_sort.go +++ b/src/apps/chifra/pkg/types/types_cacheitem_sort.go @@ -12,13 +12,9 @@ const ( CacheItemType CacheItemField = "type" ) -// IsValidCacheItemField returns true if the given field is a valid sortable CacheItem field. -func IsValidCacheItemField(field string) bool { - switch field { - case "lastCached", "nFiles", "nFolders", "path", "sizeInBytes", "type": - return true - } - return false +// GetSortFieldsCacheItem returns a []string of valid sort fields for the type. +func GetSortFieldsCacheItem() []string { + return []string{"lastCached", "nFiles", "nFolders", "path", "sizeInBytes", "type"} } // CacheItemBy returns a comparison function for sorting CacheItem instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_chain_sort.go b/src/apps/chifra/pkg/types/types_chain_sort.go index 6f8aa541e7..1aca58ae00 100644 --- a/src/apps/chifra/pkg/types/types_chain_sort.go +++ b/src/apps/chifra/pkg/types/types_chain_sort.go @@ -13,13 +13,9 @@ const ( ChainSymbol ChainField = "symbol" ) -// IsValidChainField returns true if the given field is a valid sortable Chain field. -func IsValidChainField(field string) bool { - switch field { - case "chain", "chainId", "ipfsGateway", "localExplorer", "remoteExplorer", "rpcProvider", "symbol": - return true - } - return false +// GetSortFieldsChain returns a []string of valid sort fields for the type. +func GetSortFieldsChain() []string { + return []string{"chain", "chainId", "ipfsGateway", "localExplorer", "remoteExplorer", "rpcProvider", "symbol"} } // ChainBy returns a comparison function for sorting Chain instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_chunkrecord_sort.go b/src/apps/chifra/pkg/types/types_chunkrecord_sort.go index 2bb3dcc0c6..5f3cb061d2 100644 --- a/src/apps/chifra/pkg/types/types_chunkrecord_sort.go +++ b/src/apps/chifra/pkg/types/types_chunkrecord_sort.go @@ -10,13 +10,9 @@ const ( ChunkRecordRangeDates ChunkRecordField = "rangeDates" ) -// IsValidChunkRecordField returns true if the given field is a valid sortable ChunkRecord field. -func IsValidChunkRecordField(field string) bool { - switch field { - case "bloomSize", "indexSize", "range", "rangeDates": - return true - } - return false +// GetSortFieldsChunkRecord returns a []string of valid sort fields for the type. +func GetSortFieldsChunkRecord() []string { + return []string{"bloomSize", "indexSize", "range", "rangeDates"} } // ChunkRecordBy returns a comparison function for sorting ChunkRecord instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_chunkstats_sort.go b/src/apps/chifra/pkg/types/types_chunkstats_sort.go index 5315b79b50..958845a85d 100644 --- a/src/apps/chifra/pkg/types/types_chunkstats_sort.go +++ b/src/apps/chifra/pkg/types/types_chunkstats_sort.go @@ -18,13 +18,9 @@ const ( ChunkStatsRatio ChunkStatsField = "ratio" ) -// IsValidChunkStatsField returns true if the given field is a valid sortable ChunkStats field. -func IsValidChunkStatsField(field string) bool { - switch field { - case "addrsPerBlock", "appsPerAddr", "appsPerBlock", "bloomSz", "chunkSz", "nAddrs", "nApps", "nBlocks", "nBlooms", "range", "rangeDates", "ratio": - return true - } - return false +// GetSortFieldsChunkStats returns a []string of valid sort fields for the type. +func GetSortFieldsChunkStats() []string { + return []string{"addrsPerBlock", "appsPerAddr", "appsPerBlock", "bloomSz", "chunkSz", "nAddrs", "nApps", "nBlocks", "nBlooms", "range", "rangeDates", "ratio"} } // ChunkStatsBy returns a comparison function for sorting ChunkStats instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_function_sort.go b/src/apps/chifra/pkg/types/types_function_sort.go index fdb15b1355..51083e198c 100644 --- a/src/apps/chifra/pkg/types/types_function_sort.go +++ b/src/apps/chifra/pkg/types/types_function_sort.go @@ -11,13 +11,9 @@ const ( FunctionType FunctionField = "type" ) -// IsValidFunctionField returns true if the given field is a valid sortable Function field. -func IsValidFunctionField(field string) bool { - switch field { - case "encoding", "name", "signature", "stateMutability", "type": - return true - } - return false +// GetSortFieldsFunction returns a []string of valid sort fields for the type. +func GetSortFieldsFunction() []string { + return []string{"encoding", "name", "signature", "stateMutability", "type"} } // FunctionBy returns a comparison function for sorting Function instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_monitor_sort.go b/src/apps/chifra/pkg/types/types_monitor_sort.go index 2cbd60a6c7..fcfe318629 100644 --- a/src/apps/chifra/pkg/types/types_monitor_sort.go +++ b/src/apps/chifra/pkg/types/types_monitor_sort.go @@ -13,13 +13,9 @@ const ( MonitorNRecords MonitorField = "nRecords" ) -// IsValidMonitorField returns true if the given field is a valid sortable Monitor field. -func IsValidMonitorField(field string) bool { - switch field { - case "address", "deleted", "fileSize", "isEmpty", "isStaged", "lastScanned", "nRecords": - return true - } - return false +// GetSortFieldsMonitor returns a []string of valid sort fields for the type. +func GetSortFieldsMonitor() []string { + return []string{"address", "deleted", "fileSize", "isEmpty", "isStaged", "lastScanned", "nRecords"} } // MonitorBy returns a comparison function for sorting Monitor instances by the given field. diff --git a/src/apps/chifra/pkg/types/types_name_sort.go b/src/apps/chifra/pkg/types/types_name_sort.go index 7716dfcd9f..fef76ce069 100644 --- a/src/apps/chifra/pkg/types/types_name_sort.go +++ b/src/apps/chifra/pkg/types/types_name_sort.go @@ -18,13 +18,9 @@ const ( NameTags NameField = "tags" ) -// IsValidNameField returns true if the given field is a valid sortable Name field. -func IsValidNameField(field string) bool { - switch field { - case "address", "decimals", "deleted", "isContract", "isCustom", "isErc20", "isErc721", "isPrefund", "name", "source", "symbol", "tags": - return true - } - return false +// GetSortFieldsName returns a []string of valid sort fields for the type. +func GetSortFieldsName() []string { + return []string{"address", "decimals", "deleted", "isContract", "isCustom", "isErc20", "isErc721", "isPrefund", "name", "source", "symbol", "tags"} } // NameBy returns a comparison function for sorting Name instances by the given field. diff --git a/src/dev_tools/goMaker/templates/cmd-line-options.csv b/src/dev_tools/goMaker/templates/cmd-line-options.csv index ac48bbaac2..94cdf81b2d 100644 --- a/src/dev_tools/goMaker/templates/cmd-line-options.csv +++ b/src/dev_tools/goMaker/templates/cmd-line-options.csv @@ -18,13 +18,13 @@ num,folder,group,route,tool,longName,hotKey,def_val,attributes,handler,option_ty 12150,apps,Accounts,list,acctExport,n2,,,,,note,,,,,,No other options are permitted when --silent is selected. # 13000,apps,Accounts,export,acctExport,,,,visible|docs,,command,,,Export details,[flags]
[address...] [topics...] [fourbytes...],default|caching|ether|names|,Export full details of transactions for one or more addresses. -13020,apps,Accounts,export,acctExport,addrs,,,required|visible|docs,13,positional,list,transaction,,,,one or more addresses (0x...) to export +13020,apps,Accounts,export,acctExport,addrs,,,required|visible|docs,12,positional,list,transaction,,,,one or more addresses (0x...) to export 13030,apps,Accounts,export,acctExport,topics,,,visible|docs,,positional,list,,,,,filter by one or more log topics (only for --logs option) 13040,apps,Accounts,export,acctExport,fourbytes,,,visible|docs,,positional,list,,,,,filter by one or more fourbytes (only for transactions and trace options) 13050,apps,Accounts,export,acctExport,appearances,p,,visible|docs,5,switch,,appearance,,,,export a list of appearances 13060,apps,Accounts,export,acctExport,receipts,r,,visible|docs,2,switch,,receipt,,,,export receipts instead of transactional data 13070,apps,Accounts,export,acctExport,logs,l,,visible|docs,3,switch,,log,,,,export logs instead of transactional data -13080,apps,Accounts,export,acctExport,traces,t,,visible|docs,12,switch,,trace,,,,export traces instead of transactional data +13080,apps,Accounts,export,acctExport,traces,t,,visible|docs,11,switch,,trace,,,,export traces instead of transactional data 13090,apps,Accounts,export,acctExport,neighbors,n,,visible|docs,8,switch,,message,,,,export the neighbors of the given address 13110,apps,Accounts,export,acctExport,statements,A,,visible|docs,9,switch,,statement,,,,export only statements 13110,apps,Accounts,export,acctExport,transfers,X,,visible|docs,10,switch,,transfer,,,,export only eth or token transfers @@ -64,30 +64,31 @@ num,folder,group,route,tool,longName,hotKey,def_val,attributes,handler,option_ty 13430,apps,Accounts,export,acctExport,n12,,,,,note,,,,,,The --traces option requires your RPC to provide trace data. See the README for more information. # 14000,apps,Accounts,monitors,acctExport,,,,visible|docs,,command,,,Manage monitors,[flags]
[address...],default|caching|names|,Add, remove, clean, and list address monitors. -14020,apps,Accounts,monitors,acctExport,addrs,,,visible|docs,5,positional,list,message,,,,one or more addresses (0x...) to process +14020,apps,Accounts,monitors,acctExport,addrs,,,visible|docs,4,positional,list,message,,,,one or more addresses (0x...) to process 14030,apps,Accounts,monitors,acctExport,delete,,,visible|docs|crud,,switch,,,,,,delete a monitor, but do not remove it 14040,apps,Accounts,monitors,acctExport,undelete,,,visible|docs|crud,,switch,,,,,,undelete a previously deleted monitor 14050,apps,Accounts,monitors,acctExport,remove,,,visible|docs|crud,,switch,,,,,,remove a previously deleted monitor 14060,apps,Accounts,monitors,acctExport,clean,C,,visible|docs,2,switch,,monitorClean,,,,clean (i.e. remove duplicate appearances) from monitors, optionally clear stage 14070,apps,Accounts,monitors,acctExport,list,l,,visible|docs,3,switch,,monitor,,,,list monitors in the cache (--verbose for more detail) -14075,apps,Accounts,monitors,acctExport,count,c,,visible|docs,1,switch,,count,,,,show the number of active monitors (included deleted but not removed monitors) +14075,apps,Accounts,monitors,acctExport,count,U,,visible|docs,1,switch,,count,,,,show the number of active monitors (included deleted but not removed monitors) 14065,apps,Accounts,monitors,acctExport,staged,S,,visible|docs,,switch,,,,,,for --clean, --list, and --count options only, include staged monitors 14140,apps,Accounts,monitors,acctExport,n1,,,,,note,,,,,,An `address` must be either an ENS name or start with '0x' and be forty-two characters long. 14150,apps,Accounts,monitors,acctExport,n2,,,,,note,,,,,,If no address is presented to the --clean command, all existing monitors will be cleaned. # 15000,tools,Accounts,names,ethNames,,,,visible|docs,,command,,,Manage names,[flags] [term...],default|,Query addresses or names of well-known accounts. -15020,tools,Accounts,names,ethNames,terms,,,required|visible|docs,4,positional,list,name,,,,a space separated list of one or more search terms +15020,tools,Accounts,names,ethNames,terms,,,required|visible|docs,5,positional,list,name,,,,a space separated list of one or more search terms 15030,tools,Accounts,names,ethNames,expand,e,,visible|docs,,switch,,,,,,expand search to include all fields (search name, address, and symbol otherwise) 15040,tools,Accounts,names,ethNames,match_case,m,,visible|docs,,switch,,,,,,do case-sensitive search 15050,tools,Accounts,names,ethNames,all,a,,visible|docs,,switch,,,,,,include all (including custom) names in the search 15060,tools,Accounts,names,ethNames,custom,c,,visible|docs,,switch,,,,,,include only custom named accounts in the search 15070,tools,Accounts,names,ethNames,prefund,p,,visible|docs,,switch,,,,,,include prefund accounts in the search 15080,tools,Accounts,names,ethNames,addr,s,,visible|docs,,switch,,name,,,,display only addresses in the results (useful for scripting, assumes --no_header) -15090,tools,Accounts,names,ethNames,tags,g,,visible|docs,3,switch,,name,,,,export the list of tags and subtags only -15100,tools,Accounts,names,ethNames,clean,C,,visible|docs,2,switch,,message,,,,clean the data (addrs to lower case, sort by addr) +15090,tools,Accounts,names,ethNames,tags,g,,visible|docs,4,switch,,name,,,,export the list of tags and subtags only +15100,tools,Accounts,names,ethNames,clean,C,,visible|docs,3,switch,,message,,,,clean the data (addrs to lower case, sort by addr) 15110,tools,Accounts,names,ethNames,regular,r,,visible|docs,,switch,,,,,,only available with --clean, cleans regular names database +15115,tools,Accounts,names,ethNames,count,U,,visible|docs,1,switch,,count,,,,return the number of names matching the search terms or other options 15120,tools,Accounts,names,ethNames,dry_run,d,,visible|docs,,switch,,,,,,only available with --clean or --autoname, outputs changes to stdout instead of updating databases -15130,tools,Accounts,names,ethNames,autoname,A,,visible|docs,1,flag,
,message,,,,an address assumed to be a token, added automatically to names database if true +15130,tools,Accounts,names,ethNames,autoname,A,,visible|docs,2,flag,
,message,,,,an address assumed to be a token, added automatically to names database if true 15140,tools,Accounts,names,ethNames,create,,,docs|crud,,switch,,name,,,,create a new name record 15150,tools,Accounts,names,ethNames,update,,,docs|crud,,switch,,name,,,,edit an existing name 15160,tools,Accounts,names,ethNames,delete,,,docs|crud,,switch,,name,,,,delete a name, but do not remove it @@ -97,14 +98,15 @@ num,folder,group,route,tool,longName,hotKey,def_val,attributes,handler,option_ty 15200,tools,Accounts,names,ethNames,n2,,,,,note,,,,,,The `--match_case` option enables case sensitive matching. # 16000,tools,Accounts,abis,grabABI,,,,visible|docs,,command,,,Manage Abi files,[flags]
[address...],default|caching|names|,Fetches the ABI for a smart contract. -16020,tools,Accounts,abis,grabABI,addrs,,,required|visible|docs,5,positional,list,function,,,,a list of one or more smart contracts whose ABIs to display +16020,tools,Accounts,abis,grabABI,addrs,,,required|visible|docs,6,positional,list,function,,,,a list of one or more smart contracts whose ABIs to display 16030,tools,Accounts,abis,grabABI,known,k,,visible|docs,,switch,,,,,,load common 'known' ABIs from cache 16040,tools,Accounts,abis,grabABI,proxy_for,r,,visible|docs,,flag,
,,,,,redirects the query to this implementation -16050,tools,Accounts,abis,grabABI,list,l,,visible|docs,3,switch,,abi,,,,a list of downloaded abi files -16060,tools,Accounts,abis,grabABI,count,c,,visible|docs,2,switch,,count,,,,show the number of abis downloaded +16050,tools,Accounts,abis,grabABI,list,l,,visible|docs,4,switch,,abi,,,,a list of downloaded abi files +16055,tools,Accounts,abis,grabABI,details,d,,visible|docs,3,switch,,function,,,,show the functions and events instead of summaries for all abi files +16060,tools,Accounts,abis,grabABI,count,U,,visible|docs,2,switch,,count,,,,show the number of abis downloaded 16070,tools,Accounts,abis,grabABI,find,f,,visible|docs,1,flag,list,function,,,,search for function or event declarations given a four- or 32-byte code(s) 16080,tools,Accounts,abis,grabABI,hint,n,,visible|docs,,flag,list,,,,,for the --find option only, provide hints to speed up the search -16090,tools,Accounts,abis,grabABI,encode,e,,visible|docs,4,flag,,function,,,,generate the 32-byte encoding for a given canonical function or event signature +16090,tools,Accounts,abis,grabABI,encode,e,,visible|docs,5,flag,,function,,,,generate the 32-byte encoding for a given canonical function or event signature 16100,tools,Accounts,abis,grabABI,n1,,,,,note,,,,,,Search for either four byte signatures or event signatures with the --find option. # 21000,,Chain Data,,,,,,,,group,,,,,,Access and cache blockchain-related data @@ -135,10 +137,10 @@ num,folder,group,route,tool,longName,hotKey,def_val,attributes,handler,option_ty 22280,tools,Chain Data,blocks,getBlocks,n10,,,,,note,,,,,,The --traces option requires your RPC to provide trace data. See the README for more information. # 23000,tools,Chain Data,transactions,getTrans,,,,visible|docs,,command,,,Get transactions,[flags] [tx_id...],default|caching|ether|names|,Retrieve one or more transactions from the chain or local cache. -23020,tools,Chain Data,transactions,getTrans,transactions,,,required|visible|docs,4,positional,list,transaction,,,,a space-separated list of one or more transaction identifiers +23020,tools,Chain Data,transactions,getTrans,transactions,,,required|visible|docs,3,positional,list,transaction,,,,a space-separated list of one or more transaction identifiers 23030,tools,Chain Data,transactions,getTrans,articulate,a,,visible|docs,,switch,,,,,,articulate the retrieved data if ABIs can be found 23040,tools,Chain Data,transactions,getTrans,traces,t,,visible|docs,,switch,,trace,,,,include the transaction's traces in the results -23050,tools,Chain Data,transactions,getTrans,uniq,u,,visible|docs,3,switch,,appearance,,,,display a list of uniq addresses found in the transaction +23050,tools,Chain Data,transactions,getTrans,uniq,u,,visible|docs,2,switch,,appearance,,,,display a list of uniq addresses found in the transaction 23060,tools,Chain Data,transactions,getTrans,flow,f,,visible|docs,,flag,enum[from|to],,,,,for the uniq option only, export only from or to (including trace from or to) 23070,tools,Chain Data,transactions,getTrans,logs,l,,visible|docs,1,switch,,log,,,,display only the logs found in the transaction(s) 23080,tools,Chain Data,transactions,getTrans,emitter,m,,visible|docs,,flag,list,,,,,for the --logs option only, filter logs to show only those logs emitted by the given address(es) diff --git a/src/dev_tools/goMaker/templates/generators/codebase/sdk_sorts.go.tmpl b/src/dev_tools/goMaker/templates/generators/codebase/sdk_sorts.go.tmpl index bd493e6762..0871bf3345 100644 --- a/src/dev_tools/goMaker/templates/generators/codebase/sdk_sorts.go.tmpl +++ b/src/dev_tools/goMaker/templates/generators/codebase/sdk_sorts.go.tmpl @@ -15,6 +15,22 @@ type SortSpec struct { Order []SortOrder `json:"orders"` } +// String returns a string representation of the SortSpec. +func (s SortSpec) String() string { + if len(s.Fields) == 0 { + return "empty sort specification" + } + + result := "sort by " + for i, field := range s.Fields { + if i > 0 { + result += ", " + } + result += field + " (" + s.Order[i].String() + ")" + } + return result +} + {{range .Structures}} {{ if .HasSorts }}{{.Sorts2}}{{end}} {{end}} diff --git a/src/dev_tools/goMaker/templates/generators/types/src_apps_chifra_pkg_types_type+sort.go.tmpl b/src/dev_tools/goMaker/templates/generators/types/src_apps_chifra_pkg_types_type+sort.go.tmpl index d97533a808..01579d57f4 100644 --- a/src/dev_tools/goMaker/templates/generators/types/src_apps_chifra_pkg_types_type+sort.go.tmpl +++ b/src/dev_tools/goMaker/templates/generators/types/src_apps_chifra_pkg_types_type+sort.go.tmpl @@ -5,13 +5,9 @@ type {{.Class}}Field string // Fields in the {{.Class}} struct available for sorting. {{.SortFields}} -// IsValid{{.Class}}Field returns true if the given field is a valid sortable {{.Class}} field. -func IsValid{{.Class}}Field(field string) bool { - switch field { - case {{.SortString}}: - return true - } - return false +// GetSortFields{{.Class}} returns a []string of valid sort fields for the type. +func GetSortFields{{.Class}}() []string { + return []string{ {{.SortString}} } } // {{.Class}}By returns a comparison function for sorting {{.Class}} instances by the given field. diff --git a/src/dev_tools/goMaker/types/types_command.go b/src/dev_tools/goMaker/types/types_command.go index 8583992270..42bd26908a 100644 --- a/src/dev_tools/goMaker/types/types_command.go +++ b/src/dev_tools/goMaker/types/types_command.go @@ -6,6 +6,7 @@ import ( "path/filepath" "sort" "strings" + "unicode" "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/file" "github.com/TrueBlocks/trueblocks-core/src/apps/chifra/pkg/logger" @@ -167,6 +168,61 @@ func (c *Command) Clean() { } } + // Validate LongName and Handler properties of each Option in cleaned + // Rule 1: LongName should not contain any capital letters. + // Rule 2: Handler (if present) must represent a sequence of integers + // starting from 1 without any gaps or duplicates. + handlerValues := make(map[int]bool) + maxHandler := 0 + + for _, op := range cleaned { + // Rule 1: Check for capital letters in LongName + if op.LongName != strings.ToLower(op.LongName) { + suggestion := "" + for i, char := range op.LongName { + if unicode.IsUpper(char) { + if i > 0 { // Only add underscore if not the first character + suggestion += "_" + } + suggestion += strings.ToLower(string(char)) + } else { + suggestion += string(char) + } + } + logger.Warn(fmt.Sprintf("Option '%s' in command '%s': LongName '%s' should not contain capital letters. Suggestion: '%s'", op.LongName, c.Route, op.LongName, suggestion)) + } + + // Rule 2: Check Handler values + // Assuming 0.0 indicates that the handler is not set. + if op.Handler != 0.0 { + handlerVal := int(op.Handler) // Convert float64 to int + + if handlerVal <= 0 { // Handlers should be positive integers + logger.Warn(fmt.Sprintf("Option '%s' in command '%s': Handler value '%f' must be a positive integer.", op.LongName, c.Route, op.Handler)) + continue + } + + if _, exists := handlerValues[handlerVal]; exists { + logger.Warn(fmt.Sprintf("Option '%s' in command '%s': Duplicate Handler value '%d'.", op.LongName, c.Route, handlerVal)) + } else { + handlerValues[handlerVal] = true + } + + if handlerVal > maxHandler { + maxHandler = handlerVal + } + } + } + + // After collecting all handlers, check for gaps in the sequence from 1 to maxHandler + if maxHandler > 0 { + for i := 1; i <= maxHandler; i++ { + if _, exists := handlerValues[i]; !exists { + logger.Warn(fmt.Sprintf("Command '%s': Missing Handler value '%d' in the sequence.", c.Route, i)) + } + } + } + c.Options = cleaned } diff --git a/src/dev_tools/goMaker/types/types_sorts.go b/src/dev_tools/goMaker/types/types_sorts.go index d4d73f876e..96d93a2b06 100644 --- a/src/dev_tools/goMaker/types/types_sorts.go +++ b/src/dev_tools/goMaker/types/types_sorts.go @@ -15,13 +15,18 @@ if len(sortSpec.Fields) != len(sortSpec.Order) { sorts := make([]func(p1, p2 types.{{.Class}}) bool, len(sortSpec.Fields)) for i, field := range sortSpec.Fields { - if !types.IsValid{{.Class}}Field(field) { + if field == "" { + continue + } + if !slices.Contains(types.GetSortFields{{.Class}}(), field) { return fmt.Errorf("%s is not an {{.Class}} sort field", field) } sorts[i] = types.{{.Class}}By(types.{{.Class}}Field(field), types.SortOrder(sortSpec.Order[i])) } -sort.Slice({{toLowerPlural .Class}}, types.{{.Class}}Cmp({{toLowerPlural .Class}}, sorts...)) +if len(sorts) > 0 { + sort.SliceStable({{toLowerPlural .Class}}, types.{{.Class}}Cmp({{toLowerPlural .Class}}, sorts...)) +} return nil } ` diff --git a/src/dev_tools/sdkFuzzer/abis.go b/src/dev_tools/sdkFuzzer/abis.go index 5012257afa..1993691c94 100644 --- a/src/dev_tools/sdkFuzzer/abis.go +++ b/src/dev_tools/sdkFuzzer/abis.go @@ -135,6 +135,16 @@ func TestAbis(which, value, fn string, opts *sdk.AbisOptions) { ReportOkay(fn) } } + case "details": + if details, _, err := opts.AbisDetails(); err != nil { + ReportError(fn, opts, err) + } else { + if err := SaveToFile(fn, details); err != nil { + ReportError2(fn, err) + } else { + ReportOkay(fn) + } + } case "count": if count, _, err := opts.AbisCount(); err != nil { ReportError(fn, opts, err) diff --git a/src/dev_tools/sdkFuzzer/names.go b/src/dev_tools/sdkFuzzer/names.go index 6207cfaaec..a92dd4a7a9 100644 --- a/src/dev_tools/sdkFuzzer/names.go +++ b/src/dev_tools/sdkFuzzer/names.go @@ -134,6 +134,16 @@ func TestNames(which, value, fn string, opts *sdk.NamesOptions) { ReportOkay(fn) } } + case "count": + if count, _, err := opts.NamesCount(); err != nil { + ReportError(fn, opts, err) + } else { + if err := SaveToFile(fn, count); err != nil { + ReportError2(fn, err) + } else { + ReportOkay(fn) + } + } case "autoname": if autoname, _, err := opts.NamesAutoname(base.HexToAddress(value)); err != nil { ReportError(fn, opts, err) diff --git a/src/dev_tools/testRunner/testCases/abis.csv b/src/dev_tools/testRunner/testCases/abis.csv index 7a7b49ecd1..5d0352566b 100644 --- a/src/dev_tools/testRunner/testCases/abis.csv +++ b/src/dev_tools/testRunner/testCases/abis.csv @@ -65,7 +65,10 @@ on ,both ,fast ,abis ,tools ,grabABI ,no_abi_found_2 ,y ,addrs = on ,both ,fast ,abis ,tools ,grabABI ,clean_alone ,y ,decache on ,both ,fast ,abis ,tools ,grabABI ,list ,y ,list +on ,both ,fast ,abis ,tools ,grabABI ,list_known ,y ,list & known on ,both ,fast ,abis ,tools ,grabABI ,list_verbose ,y ,list & verbose +on ,both ,fast ,abis ,tools ,grabABI ,list_funcs ,y ,list & details & addrs = 0xe94327d07fc17907b4db788e5adf2ed424addff6 +on ,both ,fast ,abis ,tools ,grabABI ,list_events ,y ,list & details & addrs = 0xe94327d07fc17907b4db788e5adf2ed424addff6 on ,both ,fast ,abis ,tools ,grabABI ,count ,y ,count on ,both ,fast ,abis ,tools ,grabABI ,count_v ,y ,count & no_header on ,both ,fast ,abis ,tools ,grabABI ,count_list ,y ,count & list diff --git a/src/dev_tools/testRunner/testCases/daemon.csv b/src/dev_tools/testRunner/testCases/daemon.csv index 4999fa7886..8ccc68ecaa 100644 --- a/src/dev_tools/testRunner/testCases/daemon.csv +++ b/src/dev_tools/testRunner/testCases/daemon.csv @@ -1,8 +1,8 @@ enabled ,mode ,speed ,route ,path ,tool ,filename ,post ,options on ,cmd ,fast ,daemon ,apps ,daemon ,help ,n ,@h on ,cmd ,fast ,daemon ,apps ,daemon ,help_long ,n ,help -on ,both ,fast ,daemon ,apps ,daemon ,bad_cmd ,n ,not-an-option -on ,both ,fast ,daemon ,apps ,daemon ,port ,n ,not-an-option & port = :8080 +off ,both ,fast ,daemon ,apps ,daemon ,bad_cmd ,n ,not-an-option +off ,both ,fast ,daemon ,apps ,daemon ,port ,n ,not-an-option & port = :8080 # Capabilities # chain & fmt & help & nocolor & noop & version & verbose & no_header & file & output & append & cache & ether diff --git a/tests/gold/apps/acctExport/acctExport_caps_allowed_m.txt b/tests/gold/apps/acctExport/acctExport_caps_allowed_m.txt index c34d6f05c1..0dee733f15 100644 --- a/tests/gold/apps/acctExport/acctExport_caps_allowed_m.txt +++ b/tests/gold/apps/acctExport/acctExport_caps_allowed_m.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_caps_disallowed_1_m.txt b/tests/gold/apps/acctExport/acctExport_caps_disallowed_1_m.txt index 7e9eb70be7..a2e984f026 100644 --- a/tests/gold/apps/acctExport/acctExport_caps_disallowed_1_m.txt +++ b/tests/gold/apps/acctExport/acctExport_caps_disallowed_1_m.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_caps_disallowed_3_m.txt b/tests/gold/apps/acctExport/acctExport_caps_disallowed_3_m.txt index 652616f7cd..3049eb443e 100644 --- a/tests/gold/apps/acctExport/acctExport_caps_disallowed_3_m.txt +++ b/tests/gold/apps/acctExport/acctExport_caps_disallowed_3_m.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_caps_disallowed_4_m.txt b/tests/gold/apps/acctExport/acctExport_caps_disallowed_4_m.txt index f5891846d6..a6eb4bae99 100644 --- a/tests/gold/apps/acctExport/acctExport_caps_disallowed_4_m.txt +++ b/tests/gold/apps/acctExport/acctExport_caps_disallowed_4_m.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_delete_1_fail.txt b/tests/gold/apps/acctExport/acctExport_monitors_delete_1_fail.txt index 35f132acd5..f7c1c35cbd 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_delete_1_fail.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_delete_1_fail.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_err_batch_size2.txt b/tests/gold/apps/acctExport/acctExport_monitors_err_batch_size2.txt index bf9ed4ba35..19b08bf93d 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_err_batch_size2.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_err_batch_size2.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_err_not_both1.txt b/tests/gold/apps/acctExport/acctExport_monitors_err_not_both1.txt index d48fb2c262..de513dcf24 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_err_not_both1.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_err_not_both1.txt @@ -17,7 +17,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_err_not_both2.txt b/tests/gold/apps/acctExport/acctExport_monitors_err_not_both2.txt index 5af0a15141..d5f16fe926 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_err_not_both2.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_err_not_both2.txt @@ -17,7 +17,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_err_run_once.txt b/tests/gold/apps/acctExport/acctExport_monitors_err_run_once.txt index 21ffe7f71f..ae45438a5e 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_err_run_once.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_err_run_once.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_err_sleep.txt b/tests/gold/apps/acctExport/acctExport_monitors_err_sleep.txt index cf66ffaec6..44c25184b1 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_err_sleep.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_err_sleep.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_err_watch.txt b/tests/gold/apps/acctExport/acctExport_monitors_err_watch.txt index 7cbf4c203a..62cff235fc 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_err_watch.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_err_watch.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_help.txt b/tests/gold/apps/acctExport/acctExport_monitors_help.txt index cdfc89fdd0..815080d5fc 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_help.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_help.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_list1.txt b/tests/gold/apps/acctExport/acctExport_monitors_list1.txt index 5f182be47d..9482ccc3e8 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_list1.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_list1.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_list1_v.txt b/tests/gold/apps/acctExport/acctExport_monitors_list1_v.txt index 73429a0dbb..80df980952 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_list1_v.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_list1_v.txt @@ -17,7 +17,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_list2.txt b/tests/gold/apps/acctExport/acctExport_monitors_list2.txt index 4e89523982..72e0b5ddf3 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_list2.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_list2.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_list2_v.txt b/tests/gold/apps/acctExport/acctExport_monitors_list2_v.txt index e9cca34d7f..472c649268 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_list2_v.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_list2_v.txt @@ -17,7 +17,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_list_not_in.txt b/tests/gold/apps/acctExport/acctExport_monitors_list_not_in.txt index 1edfde2da1..6fcebf3d07 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_list_not_in.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_list_not_in.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_long_help.txt b/tests/gold/apps/acctExport/acctExport_monitors_long_help.txt index 4a0e89dbbd..aeec9977af 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_long_help.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_long_help.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_no_params.txt b/tests/gold/apps/acctExport/acctExport_monitors_no_params.txt index d49fc32abd..db43b88d33 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_no_params.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_no_params.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_remove_fail.txt b/tests/gold/apps/acctExport/acctExport_monitors_remove_fail.txt index ac6aee684b..829c99774b 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_remove_fail.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_remove_fail.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_undelete2.txt b/tests/gold/apps/acctExport/acctExport_monitors_undelete2.txt index 93ce103784..012bca01ce 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_undelete2.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_undelete2.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/acctExport/acctExport_monitors_undelete_fail.txt b/tests/gold/apps/acctExport/acctExport_monitors_undelete_fail.txt index 33b2eca1e7..ba45939fc0 100644 --- a/tests/gold/apps/acctExport/acctExport_monitors_undelete_fail.txt +++ b/tests/gold/apps/acctExport/acctExport_monitors_undelete_fail.txt @@ -16,7 +16,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/apps/chifra/chifra_help_abis.txt b/tests/gold/apps/chifra/chifra_help_abis.txt index 621977cadc..09d466974a 100644 --- a/tests/gold/apps/chifra/chifra_help_abis.txt +++ b/tests/gold/apps/chifra/chifra_help_abis.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/apps/chifra/chifra_help_names.txt b/tests/gold/apps/chifra/chifra_help_names.txt index 06a88df363..096246ac97 100644 --- a/tests/gold/apps/chifra/chifra_help_names.txt +++ b/tests/gold/apps/chifra/chifra_help_names.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/apps/chifra/chifra_help_rm.txt b/tests/gold/apps/chifra/chifra_help_rm.txt index daff2cb792..dacf074edc 100644 --- a/tests/gold/apps/chifra/chifra_help_rm.txt +++ b/tests/gold/apps/chifra/chifra_help_rm.txt @@ -14,7 +14,7 @@ Flags: --remove remove a previously deleted monitor -C, --clean clean (i.e. remove duplicate appearances) from monitors, optionally clear stage -l, --list list monitors in the cache (--verbose for more detail) - -c, --count show the number of active monitors (included deleted but not removed monitors) + -U, --count show the number of active monitors (included deleted but not removed monitors) -S, --staged for --clean, --list, and --count options only, include staged monitors -D, --decache removes related items from the cache -x, --fmt string export format, one of [none|json*|txt|csv] diff --git a/tests/gold/tools/ethNames/ethNames_caps_allowed.txt b/tests/gold/tools/ethNames/ethNames_caps_allowed.txt index bb21a33abb..d92c4c0b02 100644 --- a/tests/gold/tools/ethNames/ethNames_caps_allowed.txt +++ b/tests/gold/tools/ethNames/ethNames_caps_allowed.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_caps_disallowed_1.txt b/tests/gold/tools/ethNames/ethNames_caps_disallowed_1.txt index c387aaa097..805e247422 100644 --- a/tests/gold/tools/ethNames/ethNames_caps_disallowed_1.txt +++ b/tests/gold/tools/ethNames/ethNames_caps_disallowed_1.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_caps_disallowed_3.txt b/tests/gold/tools/ethNames/ethNames_caps_disallowed_3.txt index b4639d5cc1..28cde781d9 100644 --- a/tests/gold/tools/ethNames/ethNames_caps_disallowed_3.txt +++ b/tests/gold/tools/ethNames/ethNames_caps_disallowed_3.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_caps_disallowed_4.txt b/tests/gold/tools/ethNames/ethNames_caps_disallowed_4.txt index 7c30b419bb..3babf6ea61 100644 --- a/tests/gold/tools/ethNames/ethNames_caps_disallowed_4.txt +++ b/tests/gold/tools/ethNames/ethNames_caps_disallowed_4.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_caps_disallowed_5.txt b/tests/gold/tools/ethNames/ethNames_caps_disallowed_5.txt index d230464a0d..b5f4d12707 100644 --- a/tests/gold/tools/ethNames/ethNames_caps_disallowed_5.txt +++ b/tests/gold/tools/ethNames/ethNames_caps_disallowed_5.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_edit_custom_delete.txt b/tests/gold/tools/ethNames/ethNames_edit_custom_delete.txt index 659534ada8..ac0b6b9833 100644 --- a/tests/gold/tools/ethNames/ethNames_edit_custom_delete.txt +++ b/tests/gold/tools/ethNames/ethNames_edit_custom_delete.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_edit_custom_undelete.txt b/tests/gold/tools/ethNames/ethNames_edit_custom_undelete.txt index 4414a45037..7bdff38ed5 100644 --- a/tests/gold/tools/ethNames/ethNames_edit_custom_undelete.txt +++ b/tests/gold/tools/ethNames/ethNames_edit_custom_undelete.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_edit_invalid.txt b/tests/gold/tools/ethNames/ethNames_edit_invalid.txt index 6d8a3a85eb..2b9c9a3f76 100644 --- a/tests/gold/tools/ethNames/ethNames_edit_invalid.txt +++ b/tests/gold/tools/ethNames/ethNames_edit_invalid.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_fmt_api.txt b/tests/gold/tools/ethNames/ethNames_fmt_api.txt index e2fa8c11ca..572f373077 100644 --- a/tests/gold/tools/ethNames/ethNames_fmt_api.txt +++ b/tests/gold/tools/ethNames/ethNames_fmt_api.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_fmt_junk.txt b/tests/gold/tools/ethNames/ethNames_fmt_junk.txt index d7b33e01fc..1b75f8f8dd 100644 --- a/tests/gold/tools/ethNames/ethNames_fmt_junk.txt +++ b/tests/gold/tools/ethNames/ethNames_fmt_junk.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_help.txt b/tests/gold/tools/ethNames/ethNames_help.txt index 0981b1c7f6..cb4059ea65 100644 --- a/tests/gold/tools/ethNames/ethNames_help.txt +++ b/tests/gold/tools/ethNames/ethNames_help.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_help_long.txt b/tests/gold/tools/ethNames/ethNames_help_long.txt index 1d1bbd5564..d09035a227 100644 --- a/tests/gold/tools/ethNames/ethNames_help_long.txt +++ b/tests/gold/tools/ethNames/ethNames_help_long.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_invalid_param_2.txt b/tests/gold/tools/ethNames/ethNames_invalid_param_2.txt index 4e1b0329d0..d54214d094 100644 --- a/tests/gold/tools/ethNames/ethNames_invalid_param_2.txt +++ b/tests/gold/tools/ethNames/ethNames_invalid_param_2.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_invalid_param_3.txt b/tests/gold/tools/ethNames/ethNames_invalid_param_3.txt index b808885b05..668c19cc96 100644 --- a/tests/gold/tools/ethNames/ethNames_invalid_param_3.txt +++ b/tests/gold/tools/ethNames/ethNames_invalid_param_3.txt @@ -18,6 +18,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/ethNames/ethNames_tags_with_addr.txt b/tests/gold/tools/ethNames/ethNames_tags_with_addr.txt index ed56d61724..c29b8b35e7 100644 --- a/tests/gold/tools/ethNames/ethNames_tags_with_addr.txt +++ b/tests/gold/tools/ethNames/ethNames_tags_with_addr.txt @@ -19,6 +19,7 @@ Flags: -g, --tags export the list of tags and subtags only -C, --clean clean the data (addrs to lower case, sort by addr) -r, --regular only available with --clean, cleans regular names database + -U, --count return the number of names matching the search terms or other options -d, --dry_run only available with --clean or --autoname, outputs changes to stdout instead of updating databases -A, --autoname string an address assumed to be a token, added automatically to names database if true --create create a new name record (hidden) diff --git a/tests/gold/tools/grabABI/api_tests/grabABI_list_events.txt b/tests/gold/tools/grabABI/api_tests/grabABI_list_events.txt new file mode 100644 index 0000000000..2af9ee27c1 --- /dev/null +++ b/tests/gold/tools/grabABI/api_tests/grabABI_list_events.txt @@ -0,0 +1,159 @@ +abis?list&details&addrs=0xe94327d07fc17907b4db788e5adf2ed424addff6 +{ + "data": [ + { + "encoding": "0x06fdde03", + "name": "name", + "signature": "name()", + "type": "function" + }, + { + "encoding": "0x095ea7b3", + "name": "approve", + "signature": "approve(address,uint256)", + "type": "function" + }, + { + "encoding": "0x158ef93e", + "name": "initialized", + "signature": "initialized()", + "type": "function" + }, + { + "encoding": "0x18160ddd", + "name": "totalSupply", + "signature": "totalSupply()", + "type": "function" + }, + { + "encoding": "0x23b872dd", + "name": "transferFrom", + "signature": "transferFrom(address,address,uint256)", + "type": "function" + }, + { + "encoding": "0x2988e36b", + "name": "migrateBalance", + "signature": "migrateBalance(address)", + "type": "function" + }, + { + "encoding": "0x2a1eafd9", + "name": "targetSupply", + "signature": "targetSupply()", + "type": "function" + }, + { + "encoding": "0x313ce567", + "name": "decimals", + "signature": "decimals()", + "type": "function" + }, + { + "encoding": "0x3f4ba83a", + "name": "unpause", + "signature": "unpause()", + "type": "function" + }, + { + "encoding": "0x4b92738e", + "name": "migrateBalances", + "signature": "migrateBalances(address[])", + "type": "function" + }, + { + "encoding": "0x5c975abb", + "name": "paused", + "signature": "paused()", + "type": "function" + }, + { + "encoding": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625", + "name": "Pause", + "signature": "Pause()", + "type": "event" + }, + { + "encoding": "0x70a08231", + "name": "balanceOf", + "signature": "balanceOf(address)", + "type": "function" + }, + { + "encoding": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33", + "name": "Unpause", + "signature": "Unpause()", + "type": "event" + }, + { + "encoding": "0x8456cb59", + "name": "pause", + "signature": "pause()", + "type": "function" + }, + { + "encoding": "0x8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc", + "name": "Migrated", + "signature": "Migrated(address,uint256)", + "type": "event" + }, + { + "encoding": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "signature": "Approval(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0x8da5cb5b", + "name": "owner", + "signature": "owner()", + "type": "function" + }, + { + "encoding": "0x95d89b41", + "name": "symbol", + "signature": "symbol()", + "type": "function" + }, + { + "encoding": "0xa9059cbb", + "name": "transfer", + "signature": "transfer(address,uint256)", + "type": "function" + }, + { + "encoding": "0xb85e0aca", + "name": "legacyRepContract", + "signature": "legacyRepContract()", + "type": "function" + }, + { + "encoding": "0xdd62ed3e", + "name": "allowance", + "signature": "allowance(address,address)", + "type": "function" + }, + { + "encoding": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "signature": "Transfer(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0xf2fde38b", + "name": "transferOwnership", + "signature": "transferOwnership(address)", + "type": "function" + } + ], + "meta": { + "client": "0xdeadbeef", + "finalized": "0xdeadbeef", + "staging": "0xdeadbeef", + "ripe": "0xdeadbeef", + "unripe": "0xdeadbeef", + "chainId": 1, + "networkId": 1, + "chain": "mainnet" + } +} diff --git a/tests/gold/tools/grabABI/api_tests/grabABI_list_funcs.txt b/tests/gold/tools/grabABI/api_tests/grabABI_list_funcs.txt new file mode 100644 index 0000000000..2af9ee27c1 --- /dev/null +++ b/tests/gold/tools/grabABI/api_tests/grabABI_list_funcs.txt @@ -0,0 +1,159 @@ +abis?list&details&addrs=0xe94327d07fc17907b4db788e5adf2ed424addff6 +{ + "data": [ + { + "encoding": "0x06fdde03", + "name": "name", + "signature": "name()", + "type": "function" + }, + { + "encoding": "0x095ea7b3", + "name": "approve", + "signature": "approve(address,uint256)", + "type": "function" + }, + { + "encoding": "0x158ef93e", + "name": "initialized", + "signature": "initialized()", + "type": "function" + }, + { + "encoding": "0x18160ddd", + "name": "totalSupply", + "signature": "totalSupply()", + "type": "function" + }, + { + "encoding": "0x23b872dd", + "name": "transferFrom", + "signature": "transferFrom(address,address,uint256)", + "type": "function" + }, + { + "encoding": "0x2988e36b", + "name": "migrateBalance", + "signature": "migrateBalance(address)", + "type": "function" + }, + { + "encoding": "0x2a1eafd9", + "name": "targetSupply", + "signature": "targetSupply()", + "type": "function" + }, + { + "encoding": "0x313ce567", + "name": "decimals", + "signature": "decimals()", + "type": "function" + }, + { + "encoding": "0x3f4ba83a", + "name": "unpause", + "signature": "unpause()", + "type": "function" + }, + { + "encoding": "0x4b92738e", + "name": "migrateBalances", + "signature": "migrateBalances(address[])", + "type": "function" + }, + { + "encoding": "0x5c975abb", + "name": "paused", + "signature": "paused()", + "type": "function" + }, + { + "encoding": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625", + "name": "Pause", + "signature": "Pause()", + "type": "event" + }, + { + "encoding": "0x70a08231", + "name": "balanceOf", + "signature": "balanceOf(address)", + "type": "function" + }, + { + "encoding": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33", + "name": "Unpause", + "signature": "Unpause()", + "type": "event" + }, + { + "encoding": "0x8456cb59", + "name": "pause", + "signature": "pause()", + "type": "function" + }, + { + "encoding": "0x8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc", + "name": "Migrated", + "signature": "Migrated(address,uint256)", + "type": "event" + }, + { + "encoding": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "signature": "Approval(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0x8da5cb5b", + "name": "owner", + "signature": "owner()", + "type": "function" + }, + { + "encoding": "0x95d89b41", + "name": "symbol", + "signature": "symbol()", + "type": "function" + }, + { + "encoding": "0xa9059cbb", + "name": "transfer", + "signature": "transfer(address,uint256)", + "type": "function" + }, + { + "encoding": "0xb85e0aca", + "name": "legacyRepContract", + "signature": "legacyRepContract()", + "type": "function" + }, + { + "encoding": "0xdd62ed3e", + "name": "allowance", + "signature": "allowance(address,address)", + "type": "function" + }, + { + "encoding": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "signature": "Transfer(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0xf2fde38b", + "name": "transferOwnership", + "signature": "transferOwnership(address)", + "type": "function" + } + ], + "meta": { + "client": "0xdeadbeef", + "finalized": "0xdeadbeef", + "staging": "0xdeadbeef", + "ripe": "0xdeadbeef", + "unripe": "0xdeadbeef", + "chainId": 1, + "networkId": 1, + "chain": "mainnet" + } +} diff --git a/tests/gold/tools/grabABI/api_tests/grabABI_list_known.txt b/tests/gold/tools/grabABI/api_tests/grabABI_list_known.txt new file mode 100644 index 0000000000..8fe0fcf99d --- /dev/null +++ b/tests/gold/tools/grabABI/api_tests/grabABI_list_known.txt @@ -0,0 +1,189 @@ +abis?list&known +{ + "data": [ + { + "fileSize": 3754, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00020.json" + }, + { + "fileSize": 8051, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00721.json" + }, + { + "fileSize": 4355, + "isKnown": true, + "lastModDate": "--date--", + "name": "gitcoin.json" + }, + { + "fileSize": 137261, + "isKnown": true, + "lastModDate": "--date--", + "name": "openzeppelin.json" + }, + { + "fileSize": 6972, + "isKnown": true, + "lastModDate": "--date--", + "name": "proxy.json" + }, + { + "fileSize": 1748, + "isKnown": true, + "lastModDate": "--date--", + "name": "unchained.json" + }, + { + "fileSize": 3368, + "isKnown": true, + "lastModDate": "--date--", + "name": "unchainedV2.json" + }, + { + "fileSize": 14333, + "isKnown": true, + "lastModDate": "--date--", + "name": "uniswap-pair.json" + }, + { + "fileSize": 40367, + "isKnown": true, + "lastModDate": "--date--", + "name": "uniswap.json" + }, + { + "fileSize": 16133, + "isKnown": true, + "lastModDate": "--date--", + "name": "wallet_abis.json" + }, + { + "fileSize": 349, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00165.json" + }, + { + "fileSize": 7076, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00777.json" + }, + { + "fileSize": 62261, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00998.json" + }, + { + "fileSize": 32557, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_01155.json" + }, + { + "fileSize": 4638, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_01594.json" + }, + { + "fileSize": 5342, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_01820.json" + }, + { + "fileSize": 39649, + "isKnown": true, + "lastModDate": "--date--", + "name": "loose.json" + }, + { + "fileSize": 215572, + "isKnown": true, + "lastModDate": "--date--", + "name": "aragon.json" + }, + { + "fileSize": 19296, + "isKnown": true, + "lastModDate": "--date--", + "name": "cryptokitties.json" + }, + { + "fileSize": 12869, + "isKnown": true, + "lastModDate": "--date--", + "name": "ens-old.json" + }, + { + "fileSize": 92096, + "isKnown": true, + "lastModDate": "--date--", + "name": "ens.json" + }, + { + "fileSize": 24220, + "isKnown": true, + "lastModDate": "--date--", + "name": "kickback.json" + }, + { + "fileSize": 5305, + "isKnown": true, + "lastModDate": "--date--", + "name": "maker-v1.json" + }, + { + "fileSize": 91116, + "isKnown": true, + "lastModDate": "--date--", + "name": "truebit.json" + }, + { + "fileSize": 4071, + "isKnown": true, + "lastModDate": "--date--", + "name": "diamond.json" + }, + { + "fileSize": 32865, + "isKnown": true, + "lastModDate": "--date--", + "name": "moloch.json" + }, + { + "fileSize": 10909, + "isKnown": true, + "lastModDate": "--date--", + "name": "populous.json" + }, + { + "fileSize": 115696, + "isKnown": true, + "lastModDate": "--date--", + "name": "sabilier.json" + }, + { + "fileSize": 81144, + "isKnown": true, + "lastModDate": "--date--", + "name": "set.json" + } + ], + "meta": { + "client": "0xdeadbeef", + "finalized": "0xdeadbeef", + "staging": "0xdeadbeef", + "ripe": "0xdeadbeef", + "unripe": "0xdeadbeef", + "chainId": 1, + "networkId": 1, + "chain": "mainnet" + } +} diff --git a/tests/gold/tools/grabABI/grabABI_caps_allowed.txt b/tests/gold/tools/grabABI/grabABI_caps_allowed.txt index 4179a5295a..4896f8eb84 100644 --- a/tests/gold/tools/grabABI/grabABI_caps_allowed.txt +++ b/tests/gold/tools/grabABI/grabABI_caps_allowed.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_caps_disallowed_2.txt b/tests/gold/tools/grabABI/grabABI_caps_disallowed_2.txt index cac930ce97..2633d90354 100644 --- a/tests/gold/tools/grabABI/grabABI_caps_disallowed_2.txt +++ b/tests/gold/tools/grabABI/grabABI_caps_disallowed_2.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_caps_disallowed_3.txt b/tests/gold/tools/grabABI/grabABI_caps_disallowed_3.txt index e084e13ac0..d6ea0548fb 100644 --- a/tests/gold/tools/grabABI/grabABI_caps_disallowed_3.txt +++ b/tests/gold/tools/grabABI/grabABI_caps_disallowed_3.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_clean_fail_1.txt b/tests/gold/tools/grabABI/grabABI_clean_fail_1.txt index 361c885ddb..65e652b0f0 100644 --- a/tests/gold/tools/grabABI/grabABI_clean_fail_1.txt +++ b/tests/gold/tools/grabABI/grabABI_clean_fail_1.txt @@ -14,7 +14,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_clean_fail_2.txt b/tests/gold/tools/grabABI/grabABI_clean_fail_2.txt index ac47c3c998..662d444adf 100644 --- a/tests/gold/tools/grabABI/grabABI_clean_fail_2.txt +++ b/tests/gold/tools/grabABI/grabABI_clean_fail_2.txt @@ -14,7 +14,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_clean_fail_3.txt b/tests/gold/tools/grabABI/grabABI_clean_fail_3.txt index 8dcc6b2149..d6bf79e586 100644 --- a/tests/gold/tools/grabABI/grabABI_clean_fail_3.txt +++ b/tests/gold/tools/grabABI/grabABI_clean_fail_3.txt @@ -15,7 +15,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_count_fail.txt b/tests/gold/tools/grabABI/grabABI_count_fail.txt index cced60ebf2..2d7937529d 100644 --- a/tests/gold/tools/grabABI/grabABI_count_fail.txt +++ b/tests/gold/tools/grabABI/grabABI_count_fail.txt @@ -14,7 +14,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_findSig_junk.txt b/tests/gold/tools/grabABI/grabABI_findSig_junk.txt index 6a7323c621..20f71eb4e8 100644 --- a/tests/gold/tools/grabABI/grabABI_findSig_junk.txt +++ b/tests/gold/tools/grabABI/grabABI_findSig_junk.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_findSig_toolong.txt b/tests/gold/tools/grabABI/grabABI_findSig_toolong.txt index e89759058a..fcb5c6e3ce 100644 --- a/tests/gold/tools/grabABI/grabABI_findSig_toolong.txt +++ b/tests/gold/tools/grabABI/grabABI_findSig_toolong.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_findSig_toolongevt1.txt b/tests/gold/tools/grabABI/grabABI_findSig_toolongevt1.txt index 730be1368d..9a807dcf27 100644 --- a/tests/gold/tools/grabABI/grabABI_findSig_toolongevt1.txt +++ b/tests/gold/tools/grabABI/grabABI_findSig_toolongevt1.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_findSig_toolongevt2.txt b/tests/gold/tools/grabABI/grabABI_findSig_toolongevt2.txt index a6617bc5fd..e4ab8867b2 100644 --- a/tests/gold/tools/grabABI/grabABI_findSig_toolongevt2.txt +++ b/tests/gold/tools/grabABI/grabABI_findSig_toolongevt2.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_findSig_tooshort.txt b/tests/gold/tools/grabABI/grabABI_findSig_tooshort.txt index 8760c980dd..09dfc0192f 100644 --- a/tests/gold/tools/grabABI/grabABI_findSig_tooshort.txt +++ b/tests/gold/tools/grabABI/grabABI_findSig_tooshort.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_fmt_api.txt b/tests/gold/tools/grabABI/grabABI_fmt_api.txt index 43fc6b5fc0..900cb74c28 100644 --- a/tests/gold/tools/grabABI/grabABI_fmt_api.txt +++ b/tests/gold/tools/grabABI/grabABI_fmt_api.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_fmt_junk.txt b/tests/gold/tools/grabABI/grabABI_fmt_junk.txt index 3d0c0c6f46..abef6b0841 100644 --- a/tests/gold/tools/grabABI/grabABI_fmt_junk.txt +++ b/tests/gold/tools/grabABI/grabABI_fmt_junk.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_help.txt b/tests/gold/tools/grabABI/grabABI_help.txt index 10b721cadc..6f397af6b8 100644 --- a/tests/gold/tools/grabABI/grabABI_help.txt +++ b/tests/gold/tools/grabABI/grabABI_help.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_help_long.txt b/tests/gold/tools/grabABI/grabABI_help_long.txt index 1ae8e23a79..d15588f22e 100644 --- a/tests/gold/tools/grabABI/grabABI_help_long.txt +++ b/tests/gold/tools/grabABI/grabABI_help_long.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_invalid_1.txt b/tests/gold/tools/grabABI/grabABI_invalid_1.txt index d893242d82..6123c37a82 100644 --- a/tests/gold/tools/grabABI/grabABI_invalid_1.txt +++ b/tests/gold/tools/grabABI/grabABI_invalid_1.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_invalid_option.txt b/tests/gold/tools/grabABI/grabABI_invalid_option.txt index 8c3c94086b..718cce166e 100644 --- a/tests/gold/tools/grabABI/grabABI_invalid_option.txt +++ b/tests/gold/tools/grabABI/grabABI_invalid_option.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_known_trueara.txt b/tests/gold/tools/grabABI/grabABI_known_trueara.txt index b38511a834..8b3a9ca380 100644 --- a/tests/gold/tools/grabABI/grabABI_known_trueara.txt +++ b/tests/gold/tools/grabABI/grabABI_known_trueara.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_known_trueclasses.txt b/tests/gold/tools/grabABI/grabABI_known_trueclasses.txt index 454afffeae..b89e558609 100644 --- a/tests/gold/tools/grabABI/grabABI_known_trueclasses.txt +++ b/tests/gold/tools/grabABI/grabABI_known_trueclasses.txt @@ -12,7 +12,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/grabABI_list_events.txt b/tests/gold/tools/grabABI/grabABI_list_events.txt new file mode 100644 index 0000000000..cbaf2f7350 --- /dev/null +++ b/tests/gold/tools/grabABI/grabABI_list_events.txt @@ -0,0 +1,31 @@ +chifra abis --list --details 0xe94327d07fc17907b4db788e5adf2ed424addff6 +TEST[DATE|TIME] Addrs: [0xe94327d07fc17907b4db788e5adf2ed424addff6] +TEST[DATE|TIME] List: true +TEST[DATE|TIME] Details: true +TEST[DATE|TIME] Caps: cache,decache +TEST[DATE|TIME] Format: txt +encoding type name signature +0x06fdde03 function name name() +0x095ea7b3 function approve approve(address,uint256) +0x158ef93e function initialized initialized() +0x18160ddd function totalSupply totalSupply() +0x23b872dd function transferFrom transferFrom(address,address,uint256) +0x2988e36b function migrateBalance migrateBalance(address) +0x2a1eafd9 function targetSupply targetSupply() +0x313ce567 function decimals decimals() +0x3f4ba83a function unpause unpause() +0x4b92738e function migrateBalances migrateBalances(address[]) +0x5c975abb function paused paused() +0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625 event Pause Pause() +0x70a08231 function balanceOf balanceOf(address) +0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33 event Unpause Unpause() +0x8456cb59 function pause pause() +0x8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc event Migrated Migrated(address,uint256) +0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 event Approval Approval(address,address,uint256) +0x8da5cb5b function owner owner() +0x95d89b41 function symbol symbol() +0xa9059cbb function transfer transfer(address,uint256) +0xb85e0aca function legacyRepContract legacyRepContract() +0xdd62ed3e function allowance allowance(address,address) +0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef event Transfer Transfer(address,address,uint256) +0xf2fde38b function transferOwnership transferOwnership(address) diff --git a/tests/gold/tools/grabABI/grabABI_list_funcs.txt b/tests/gold/tools/grabABI/grabABI_list_funcs.txt new file mode 100644 index 0000000000..cbaf2f7350 --- /dev/null +++ b/tests/gold/tools/grabABI/grabABI_list_funcs.txt @@ -0,0 +1,31 @@ +chifra abis --list --details 0xe94327d07fc17907b4db788e5adf2ed424addff6 +TEST[DATE|TIME] Addrs: [0xe94327d07fc17907b4db788e5adf2ed424addff6] +TEST[DATE|TIME] List: true +TEST[DATE|TIME] Details: true +TEST[DATE|TIME] Caps: cache,decache +TEST[DATE|TIME] Format: txt +encoding type name signature +0x06fdde03 function name name() +0x095ea7b3 function approve approve(address,uint256) +0x158ef93e function initialized initialized() +0x18160ddd function totalSupply totalSupply() +0x23b872dd function transferFrom transferFrom(address,address,uint256) +0x2988e36b function migrateBalance migrateBalance(address) +0x2a1eafd9 function targetSupply targetSupply() +0x313ce567 function decimals decimals() +0x3f4ba83a function unpause unpause() +0x4b92738e function migrateBalances migrateBalances(address[]) +0x5c975abb function paused paused() +0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625 event Pause Pause() +0x70a08231 function balanceOf balanceOf(address) +0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33 event Unpause Unpause() +0x8456cb59 function pause pause() +0x8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc event Migrated Migrated(address,uint256) +0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 event Approval Approval(address,address,uint256) +0x8da5cb5b function owner owner() +0x95d89b41 function symbol symbol() +0xa9059cbb function transfer transfer(address,uint256) +0xb85e0aca function legacyRepContract legacyRepContract() +0xdd62ed3e function allowance allowance(address,address) +0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef event Transfer Transfer(address,address,uint256) +0xf2fde38b function transferOwnership transferOwnership(address) diff --git a/tests/gold/tools/grabABI/grabABI_list_known.txt b/tests/gold/tools/grabABI/grabABI_list_known.txt new file mode 100644 index 0000000000..e6dce81cb1 --- /dev/null +++ b/tests/gold/tools/grabABI/grabABI_list_known.txt @@ -0,0 +1,35 @@ +chifra abis --list --known +TEST[DATE|TIME] Known: true +TEST[DATE|TIME] List: true +TEST[DATE|TIME] Caps: cache,decache +TEST[DATE|TIME] Format: txt +address name lastModDate fileSize isKnown + erc_00020.json --date-- 3754 true + erc_00721.json --date-- 8051 true + gitcoin.json --date-- 4355 true + openzeppelin.json --date-- 137261 true + proxy.json --date-- 6972 true + unchained.json --date-- 1748 true + unchainedV2.json --date-- 3368 true + uniswap-pair.json --date-- 14333 true + uniswap.json --date-- 40367 true + wallet_abis.json --date-- 16133 true + erc_00165.json --date-- 349 true + erc_00777.json --date-- 7076 true + erc_00998.json --date-- 62261 true + erc_01155.json --date-- 32557 true + erc_01594.json --date-- 4638 true + erc_01820.json --date-- 5342 true + loose.json --date-- 39649 true + aragon.json --date-- 215572 true + cryptokitties.json --date-- 19296 true + ens-old.json --date-- 12869 true + ens.json --date-- 92096 true + kickback.json --date-- 24220 true + maker-v1.json --date-- 5305 true + truebit.json --date-- 91116 true + diamond.json --date-- 4071 true + moloch.json --date-- 32865 true + populous.json --date-- 10909 true + sabilier.json --date-- 115696 true + set.json --date-- 81144 true diff --git a/tests/gold/tools/grabABI/grabABI_proxy_fail.txt b/tests/gold/tools/grabABI/grabABI_proxy_fail.txt index d46a5d52db..c10828e9be 100644 --- a/tests/gold/tools/grabABI/grabABI_proxy_fail.txt +++ b/tests/gold/tools/grabABI/grabABI_proxy_fail.txt @@ -13,7 +13,8 @@ Flags: -k, --known load common 'known' ABIs from cache -r, --proxy_for string redirects the query to this implementation -l, --list a list of downloaded abi files - -c, --count show the number of abis downloaded + -d, --details show the functions and events instead of summaries for all abi files + -U, --count show the number of abis downloaded -f, --find strings search for function or event declarations given a four- or 32-byte code(s) -n, --hint strings for the --find option only, provide hints to speed up the search -e, --encode string generate the 32-byte encoding for a given canonical function or event signature diff --git a/tests/gold/tools/grabABI/sdk_tests/grabABI_list_events.txt b/tests/gold/tools/grabABI/sdk_tests/grabABI_list_events.txt new file mode 100644 index 0000000000..07937ca0c0 --- /dev/null +++ b/tests/gold/tools/grabABI/sdk_tests/grabABI_list_events.txt @@ -0,0 +1,166 @@ +abis?list&details&addrs=0xe94327d07fc17907b4db788e5adf2ed424addff6 +Args: [list details addrs=0xe94327d07fc17907b4db788e5adf2ed424addff6] +Opts: {"addrs":["0xe94327d07fc17907b4db788e5adf2ed424addff6"],"proxyFor":"0x0","list":true,"details":true} +Addrs: [0xe94327d07fc17907b4db788e5adf2ed424addff6] +List: true +Details: true +Caps: cache,decache +Format: json +{ + "data": [ + { + "encoding": "0x06fdde03", + "name": "name", + "signature": "name()", + "type": "function" + }, + { + "encoding": "0x095ea7b3", + "name": "approve", + "signature": "approve(address,uint256)", + "type": "function" + }, + { + "encoding": "0x158ef93e", + "name": "initialized", + "signature": "initialized()", + "type": "function" + }, + { + "encoding": "0x18160ddd", + "name": "totalSupply", + "signature": "totalSupply()", + "type": "function" + }, + { + "encoding": "0x23b872dd", + "name": "transferFrom", + "signature": "transferFrom(address,address,uint256)", + "type": "function" + }, + { + "encoding": "0x2988e36b", + "name": "migrateBalance", + "signature": "migrateBalance(address)", + "type": "function" + }, + { + "encoding": "0x2a1eafd9", + "name": "targetSupply", + "signature": "targetSupply()", + "type": "function" + }, + { + "encoding": "0x313ce567", + "name": "decimals", + "signature": "decimals()", + "type": "function" + }, + { + "encoding": "0x3f4ba83a", + "name": "unpause", + "signature": "unpause()", + "type": "function" + }, + { + "encoding": "0x4b92738e", + "name": "migrateBalances", + "signature": "migrateBalances(address[])", + "type": "function" + }, + { + "encoding": "0x5c975abb", + "name": "paused", + "signature": "paused()", + "type": "function" + }, + { + "encoding": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625", + "name": "Pause", + "signature": "Pause()", + "type": "event" + }, + { + "encoding": "0x70a08231", + "name": "balanceOf", + "signature": "balanceOf(address)", + "type": "function" + }, + { + "encoding": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33", + "name": "Unpause", + "signature": "Unpause()", + "type": "event" + }, + { + "encoding": "0x8456cb59", + "name": "pause", + "signature": "pause()", + "type": "function" + }, + { + "encoding": "0x8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc", + "name": "Migrated", + "signature": "Migrated(address,uint256)", + "type": "event" + }, + { + "encoding": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "signature": "Approval(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0x8da5cb5b", + "name": "owner", + "signature": "owner()", + "type": "function" + }, + { + "encoding": "0x95d89b41", + "name": "symbol", + "signature": "symbol()", + "type": "function" + }, + { + "encoding": "0xa9059cbb", + "name": "transfer", + "signature": "transfer(address,uint256)", + "type": "function" + }, + { + "encoding": "0xb85e0aca", + "name": "legacyRepContract", + "signature": "legacyRepContract()", + "type": "function" + }, + { + "encoding": "0xdd62ed3e", + "name": "allowance", + "signature": "allowance(address,address)", + "type": "function" + }, + { + "encoding": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "signature": "Transfer(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0xf2fde38b", + "name": "transferOwnership", + "signature": "transferOwnership(address)", + "type": "function" + } + ], + "meta": { + "client": "0xdeadbeef", + "finalized": "0xdeadbeef", + "staging": "0xdeadbeef", + "ripe": "0xdeadbeef", + "unripe": "0xdeadbeef", + "chainId": 1, + "networkId": 1, + "chain": "mainnet" + } +} diff --git a/tests/gold/tools/grabABI/sdk_tests/grabABI_list_funcs.txt b/tests/gold/tools/grabABI/sdk_tests/grabABI_list_funcs.txt new file mode 100644 index 0000000000..07937ca0c0 --- /dev/null +++ b/tests/gold/tools/grabABI/sdk_tests/grabABI_list_funcs.txt @@ -0,0 +1,166 @@ +abis?list&details&addrs=0xe94327d07fc17907b4db788e5adf2ed424addff6 +Args: [list details addrs=0xe94327d07fc17907b4db788e5adf2ed424addff6] +Opts: {"addrs":["0xe94327d07fc17907b4db788e5adf2ed424addff6"],"proxyFor":"0x0","list":true,"details":true} +Addrs: [0xe94327d07fc17907b4db788e5adf2ed424addff6] +List: true +Details: true +Caps: cache,decache +Format: json +{ + "data": [ + { + "encoding": "0x06fdde03", + "name": "name", + "signature": "name()", + "type": "function" + }, + { + "encoding": "0x095ea7b3", + "name": "approve", + "signature": "approve(address,uint256)", + "type": "function" + }, + { + "encoding": "0x158ef93e", + "name": "initialized", + "signature": "initialized()", + "type": "function" + }, + { + "encoding": "0x18160ddd", + "name": "totalSupply", + "signature": "totalSupply()", + "type": "function" + }, + { + "encoding": "0x23b872dd", + "name": "transferFrom", + "signature": "transferFrom(address,address,uint256)", + "type": "function" + }, + { + "encoding": "0x2988e36b", + "name": "migrateBalance", + "signature": "migrateBalance(address)", + "type": "function" + }, + { + "encoding": "0x2a1eafd9", + "name": "targetSupply", + "signature": "targetSupply()", + "type": "function" + }, + { + "encoding": "0x313ce567", + "name": "decimals", + "signature": "decimals()", + "type": "function" + }, + { + "encoding": "0x3f4ba83a", + "name": "unpause", + "signature": "unpause()", + "type": "function" + }, + { + "encoding": "0x4b92738e", + "name": "migrateBalances", + "signature": "migrateBalances(address[])", + "type": "function" + }, + { + "encoding": "0x5c975abb", + "name": "paused", + "signature": "paused()", + "type": "function" + }, + { + "encoding": "0x6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff625", + "name": "Pause", + "signature": "Pause()", + "type": "event" + }, + { + "encoding": "0x70a08231", + "name": "balanceOf", + "signature": "balanceOf(address)", + "type": "function" + }, + { + "encoding": "0x7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b33", + "name": "Unpause", + "signature": "Unpause()", + "type": "event" + }, + { + "encoding": "0x8456cb59", + "name": "pause", + "signature": "pause()", + "type": "function" + }, + { + "encoding": "0x8b80bd19aea7b735bc6d75db8d6adbe18b28c30d62b3555245eb67b2340caedc", + "name": "Migrated", + "signature": "Migrated(address,uint256)", + "type": "event" + }, + { + "encoding": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "name": "Approval", + "signature": "Approval(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0x8da5cb5b", + "name": "owner", + "signature": "owner()", + "type": "function" + }, + { + "encoding": "0x95d89b41", + "name": "symbol", + "signature": "symbol()", + "type": "function" + }, + { + "encoding": "0xa9059cbb", + "name": "transfer", + "signature": "transfer(address,uint256)", + "type": "function" + }, + { + "encoding": "0xb85e0aca", + "name": "legacyRepContract", + "signature": "legacyRepContract()", + "type": "function" + }, + { + "encoding": "0xdd62ed3e", + "name": "allowance", + "signature": "allowance(address,address)", + "type": "function" + }, + { + "encoding": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "name": "Transfer", + "signature": "Transfer(address,address,uint256)", + "type": "event" + }, + { + "encoding": "0xf2fde38b", + "name": "transferOwnership", + "signature": "transferOwnership(address)", + "type": "function" + } + ], + "meta": { + "client": "0xdeadbeef", + "finalized": "0xdeadbeef", + "staging": "0xdeadbeef", + "ripe": "0xdeadbeef", + "unripe": "0xdeadbeef", + "chainId": 1, + "networkId": 1, + "chain": "mainnet" + } +} diff --git a/tests/gold/tools/grabABI/sdk_tests/grabABI_list_known.txt b/tests/gold/tools/grabABI/sdk_tests/grabABI_list_known.txt new file mode 100644 index 0000000000..e70803f410 --- /dev/null +++ b/tests/gold/tools/grabABI/sdk_tests/grabABI_list_known.txt @@ -0,0 +1,195 @@ +abis?list&known +Args: [list known] +Opts: {"known":true,"proxyFor":"0x0","list":true} +Known: true +List: true +Caps: cache,decache +Format: json +{ + "data": [ + { + "fileSize": 3754, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00020.json" + }, + { + "fileSize": 8051, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00721.json" + }, + { + "fileSize": 4355, + "isKnown": true, + "lastModDate": "--date--", + "name": "gitcoin.json" + }, + { + "fileSize": 137261, + "isKnown": true, + "lastModDate": "--date--", + "name": "openzeppelin.json" + }, + { + "fileSize": 6972, + "isKnown": true, + "lastModDate": "--date--", + "name": "proxy.json" + }, + { + "fileSize": 1748, + "isKnown": true, + "lastModDate": "--date--", + "name": "unchained.json" + }, + { + "fileSize": 3368, + "isKnown": true, + "lastModDate": "--date--", + "name": "unchainedV2.json" + }, + { + "fileSize": 14333, + "isKnown": true, + "lastModDate": "--date--", + "name": "uniswap-pair.json" + }, + { + "fileSize": 40367, + "isKnown": true, + "lastModDate": "--date--", + "name": "uniswap.json" + }, + { + "fileSize": 16133, + "isKnown": true, + "lastModDate": "--date--", + "name": "wallet_abis.json" + }, + { + "fileSize": 349, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00165.json" + }, + { + "fileSize": 7076, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00777.json" + }, + { + "fileSize": 62261, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_00998.json" + }, + { + "fileSize": 32557, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_01155.json" + }, + { + "fileSize": 4638, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_01594.json" + }, + { + "fileSize": 5342, + "isKnown": true, + "lastModDate": "--date--", + "name": "erc_01820.json" + }, + { + "fileSize": 39649, + "isKnown": true, + "lastModDate": "--date--", + "name": "loose.json" + }, + { + "fileSize": 215572, + "isKnown": true, + "lastModDate": "--date--", + "name": "aragon.json" + }, + { + "fileSize": 19296, + "isKnown": true, + "lastModDate": "--date--", + "name": "cryptokitties.json" + }, + { + "fileSize": 12869, + "isKnown": true, + "lastModDate": "--date--", + "name": "ens-old.json" + }, + { + "fileSize": 92096, + "isKnown": true, + "lastModDate": "--date--", + "name": "ens.json" + }, + { + "fileSize": 24220, + "isKnown": true, + "lastModDate": "--date--", + "name": "kickback.json" + }, + { + "fileSize": 5305, + "isKnown": true, + "lastModDate": "--date--", + "name": "maker-v1.json" + }, + { + "fileSize": 91116, + "isKnown": true, + "lastModDate": "--date--", + "name": "truebit.json" + }, + { + "fileSize": 4071, + "isKnown": true, + "lastModDate": "--date--", + "name": "diamond.json" + }, + { + "fileSize": 32865, + "isKnown": true, + "lastModDate": "--date--", + "name": "moloch.json" + }, + { + "fileSize": 10909, + "isKnown": true, + "lastModDate": "--date--", + "name": "populous.json" + }, + { + "fileSize": 115696, + "isKnown": true, + "lastModDate": "--date--", + "name": "sabilier.json" + }, + { + "fileSize": 81144, + "isKnown": true, + "lastModDate": "--date--", + "name": "set.json" + } + ], + "meta": { + "client": "0xdeadbeef", + "finalized": "0xdeadbeef", + "staging": "0xdeadbeef", + "ripe": "0xdeadbeef", + "unripe": "0xdeadbeef", + "chainId": 1, + "networkId": 1, + "chain": "mainnet" + } +}