Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package actuated-cli for openSUSE:Factory checked in at 2024-11-12 19:22:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/actuated-cli (Old) and /work/SRC/openSUSE:Factory/.actuated-cli.new.2017 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "actuated-cli" Tue Nov 12 19:22:58 2024 rev:3 rq:1223560 version:0.2.10 Changes: -------- --- /work/SRC/openSUSE:Factory/actuated-cli/actuated-cli.changes 2024-10-31 16:10:41.290391334 +0100 +++ /work/SRC/openSUSE:Factory/.actuated-cli.new.2017/actuated-cli.changes 2024-11-12 19:23:50.533542570 +0100 @@ -1,0 +2,16 @@ +Tue Nov 12 08:27:30 UTC 2024 - [email protected] + +- Update to version 0.2.10: + * Show a summary of jobs + +------------------------------------------------------------------- +Tue Nov 12 08:23:32 UTC 2024 - [email protected] + +- Update to version 0.2.9: + * Update message + * Improve error handling for metering command + * Bind command to root + * Update vendor + * Add metering command + +------------------------------------------------------------------- Old: ---- actuated-cli-0.2.8.obscpio New: ---- actuated-cli-0.2.10.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ actuated-cli.spec ++++++ --- /var/tmp/diff_new_pack.7cHJQl/_old 2024-11-12 19:23:51.153568453 +0100 +++ /var/tmp/diff_new_pack.7cHJQl/_new 2024-11-12 19:23:51.153568453 +0100 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: actuated-cli -Version: 0.2.8 +Version: 0.2.10 Release: 0 Summary: CLI for actuated License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.7cHJQl/_old 2024-11-12 19:23:51.189569956 +0100 +++ /var/tmp/diff_new_pack.7cHJQl/_new 2024-11-12 19:23:51.193570123 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/self-actuated/actuated-cli</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.2.8</param> + <param name="revision">v0.2.10</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.7cHJQl/_old 2024-11-12 19:23:51.213570958 +0100 +++ /var/tmp/diff_new_pack.7cHJQl/_new 2024-11-12 19:23:51.217571126 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/self-actuated/actuated-cli</param> - <param name="changesrevision">40de12ccb7d68f99de894d53be6dd0969bab170a</param></service></servicedata> + <param name="changesrevision">3a559f07c1e762802cf4795b50ad9f4b50319c92</param></service></servicedata> (No newline at EOF) ++++++ actuated-cli-0.2.8.obscpio -> actuated-cli-0.2.10.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/README.md new/actuated-cli-0.2.10/README.md --- old/actuated-cli-0.2.8/README.md 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/README.md 2024-11-07 22:29:21.000000000 +0100 @@ -108,6 +108,17 @@ server1 ``` +## View the metering snapshot from a VM + +Use the `--id` flag to specify the runner ID. + +```bash +actuated-cli metering \ + --owner actuated-samples \ + --id ea5c285282620927689d90af3cfa3be2d5e2d004 \ + server1 +``` + ## Check the logs of the actuated agent service Show the logs of the actuated agent binary running on your server. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/cmd/jobs.go new/actuated-cli-0.2.10/cmd/jobs.go --- old/actuated-cli-0.2.8/cmd/jobs.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/cmd/jobs.go 2024-11-07 22:29:21.000000000 +0100 @@ -36,6 +36,8 @@ cmd.Flags().BoolP("json", "j", false, "Request output in JSON format") + cmd.Flags().BoolP("urls", "u", false, "Include the URLs to the job in the output") + return cmd } @@ -51,6 +53,11 @@ return err } + includeURL, err := cmd.Flags().GetBool("urls") + if err != nil { + return err + } + staff, err := cmd.Flags().GetBool("staff") if err != nil { return err @@ -75,7 +82,6 @@ acceptJSON := true res, status, err := c.ListJobs(pat, owner, staff, acceptJSON) - if err != nil { return err } @@ -100,21 +106,40 @@ if err := json.Unmarshal([]byte(res), &statuses); err != nil { return err } - printEvents(os.Stdout, statuses, verbose) + printEvents(os.Stdout, statuses, verbose, includeURL) } return nil } -func printEvents(w io.Writer, statuses []JobStatus, verbose bool) { +func printEvents(w io.Writer, statuses []JobStatus, verbose, includeURL bool) { tabwriter := tabwriter.NewWriter(w, 0, 0, 1, ' ', tabwriter.TabIndent) if verbose { - fmt.Fprintf(tabwriter, "JOB ID\tOWNER\tREPO\tJOB\tRUNNER\tSERVER\tSTATUS\tSTARTED\tAGE\tETA\tLABELS\tURL\n") + + st := "JOB ID\tOWNER\tREPO\tJOB\tRUNNER\tSERVER\tSTATUS\tSTARTED\tAGE\tETA\tLABELS" + if includeURL { + st = st + "\tURL" + } + + fmt.Fprintln(tabwriter, st) } else { - fmt.Fprintf(tabwriter, "OWNER\tREPO\tJOB\tSTATUS\tAGE\tETA\tURL\n") + st := "OWNER\tREPO\tJOB\tSTATUS\tAGE\tETA" + if includeURL { + st = st + "\tURL" + } + + fmt.Fprintln(tabwriter, st) } + var ( + totalJobs int + totalQueued int + totalRunning int + ) + + totalJobs = len(statuses) + for _, status := range statuses { duration := "" @@ -122,6 +147,12 @@ duration = time.Since(*status.StartedAt).Round(time.Second).String() } + if status.Status == "queued" { + totalQueued++ + } else if status.Status == "in_progress" { + totalRunning++ + } + eta := "" if status.Status != "queued" && status.AverageRuntime > time.Second*0 { if status.StartedAt != nil { @@ -138,7 +169,8 @@ } if verbose { - fmt.Fprintf(tabwriter, "%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", + + line := fmt.Sprintf("%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s", status.JobID, status.Owner, status.Repo, @@ -146,26 +178,43 @@ status.RunnerName, status.AgentName, status.Status, - status.StartedAt.Format(time.RFC3339), duration, eta, - strings.Join(status.Labels, ","), - fmt.Sprintf("https://github.com/%s/%s/runs/%d", status.Owner, status.Repo, status.JobID), - ) + strings.Join(status.Labels, ",")) + if includeURL { + line = line + fmt.Sprintf("\thttps://github.com/%s/%s/runs/%d", status.Owner, status.Repo, status.JobID) + } + + fmt.Fprintln(tabwriter, line) } else { - fmt.Fprintf(tabwriter, "%s\t%s\t%s\t%s\t%s\t%s\t%s\n", + line := fmt.Sprintf("%s\t%s\t%s\t%s\t%s\t%s", status.Owner, status.Repo, status.JobName, status.Status, duration, - eta, - fmt.Sprintf("https://github.com/%s/%s/runs/%d", status.Owner, status.Repo, status.JobID)) + eta) - } + if includeURL { + line = line + fmt.Sprintf("\thttps://github.com/%s/%s/runs/%d", status.Owner, status.Repo, status.JobID) + } + + fmt.Fprintln(tabwriter, line) + } } + tabwriter.Flush() + if totalJobs > 0 { + + st := "\nJOBS\tRUNNING\tQUEUED" + + fmt.Fprintln(tabwriter, st) + + fmt.Fprintf(tabwriter, "%d\t%d\t%d\n", totalJobs, totalRunning, totalQueued) + tabwriter.Flush() + + } } type JobStatus struct { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/cmd/logs.go new/actuated-cli-0.2.10/cmd/logs.go --- old/actuated-cli-0.2.8/cmd/logs.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/cmd/logs.go 2024-11-07 22:29:21.000000000 +0100 @@ -21,7 +21,7 @@ Example: `# Logs from all VMs over the past 15 minutes actuated-cli logs --owner=OWNER --age=15m HOST -# All logs from a specific VM using its hostname as the --id +# Get the logs from a specific VM using its hostname as the --id actuated-cli logs --owner=OWNER --id=ID HOST `, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/cmd/metering.go new/actuated-cli-0.2.10/cmd/metering.go --- old/actuated-cli-0.2.8/cmd/metering.go 1970-01-01 01:00:00.000000000 +0100 +++ new/actuated-cli-0.2.10/cmd/metering.go 2024-11-07 22:29:21.000000000 +0100 @@ -0,0 +1,88 @@ +package cmd + +import ( + "fmt" + "net/http" + "os" + "strings" + + "github.com/self-actuated/actuated-cli/pkg" + "github.com/spf13/cobra" +) + +func makeMetering() *cobra.Command { + cmd := &cobra.Command{ + Use: "metering", + Short: "Fetch metering from a VM", + Long: `Fetch the metering snapshot from a specific VM.`, + + Example: `# Get the metering snapshot from a specific VM using its hostname as the --id +actuated-cli metering --owner=OWNER --id=ID HOST + +# Pipe to vmmeter for pretty-printing +actuated-cli metering --owner=OWNER --id=ID HOST | vmmeter +`, + } + + cmd.RunE = runMeteringE + + cmd.Flags().StringP("owner", "o", "", "List logs owned by this user") + cmd.Flags().String("id", "", "ID variable for a specific runner VM hostname") + + return cmd +} + +func runMeteringE(cmd *cobra.Command, args []string) error { + if len(args) < 1 { + return fmt.Errorf("specify the host as an argument") + } + host := strings.TrimSpace(args[0]) + + pat, err := getPat(cmd) + if err != nil { + return err + } + + staff, err := cmd.Flags().GetBool("staff") + if err != nil { + return err + } + + owner, err := cmd.Flags().GetString("owner") + if err != nil { + return err + } + + id, err := cmd.Flags().GetString("id") + if err != nil { + return err + } + + if len(host) == 0 { + return fmt.Errorf("host is required") + } + + if len(owner) == 0 { + return fmt.Errorf("owner is required") + } + + if len(pat) == 0 { + return fmt.Errorf("pat is required") + } + + c := pkg.NewClient(http.DefaultClient, os.Getenv("ACTUATED_URL")) + + res, status, err := c.GetMetering(pat, owner, host, id, staff) + if err != nil { + return err + } + + if status != http.StatusAccepted && status != http.StatusOK { + return fmt.Errorf("unexpected status code: %d, body: %s", status, res) + } + + fmt.Println(res) + + return nil + +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/cmd/root.go new/actuated-cli-0.2.10/cmd/root.go --- old/actuated-cli-0.2.8/cmd/root.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/cmd/root.go 2024-11-07 22:29:21.000000000 +0100 @@ -56,6 +56,8 @@ root.AddCommand(MakeVersion()) root.AddCommand(makeController()) + + root.AddCommand(makeMetering()) } func Execute() error { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/pkg/client.go new/actuated-cli-0.2.10/pkg/client.go --- old/actuated-cli-0.2.8/pkg/client.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/pkg/client.go 2024-11-07 22:29:21.000000000 +0100 @@ -1,6 +1,8 @@ package pkg import ( + "bytes" + "encoding/json" "fmt" "io" "log" @@ -292,6 +294,72 @@ return string(body), res.StatusCode, nil } +func (c *Client) GetMetering(patStr, owner, host, id string, staff bool) (string, int, error) { + + u, _ := url.Parse(c.baseURL) + u.Path = "/api/v1/metering" + + q := u.Query() + q.Set("owner", owner) + q.Set("host", host) + + if len(id) > 0 { + q.Set("id", id) + } else { + return "", http.StatusBadRequest, fmt.Errorf("id is required") + } + + if staff { + q.Set("staff", "1") + } + + u.RawQuery = q.Encode() + + req, err := http.NewRequest(http.MethodGet, u.String(), nil) + if err != nil { + return "", http.StatusBadRequest, err + } + + req.Header.Set("Authorization", "Bearer "+patStr) + + if os.Getenv("DEBUG") == "1" { + sanitised := http.Header{} + for k, v := range req.Header { + + if k == "Authorization" { + v = []string{"redacted"} + } + sanitised[k] = v + } + + fmt.Printf("URL %s\nHeaders: %v\n", u.String(), sanitised) + } + + res, err := c.httpClient.Do(req) + if err != nil { + return "", http.StatusBadRequest, err + } + + var body []byte + if res.Body != nil { + defer res.Body.Close() + body, _ = io.ReadAll(res.Body) + } + + if res.StatusCode != http.StatusOK && + res.StatusCode != http.StatusAccepted { + return string(body), res.StatusCode, nil + } + + var prettyJSON bytes.Buffer + + if err = json.Indent(&prettyJSON, []byte(body), "", " "); err != nil { + return "", http.StatusBadRequest, err + } + + return prettyJSON.String(), res.StatusCode, nil +} + func (c *Client) GetAgentLogs(patStr, owner, host string, age time.Duration, staff bool) (string, int, error) { mins := int(age.Minutes()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/CONTRIBUTING.md new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/CONTRIBUTING.md --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/CONTRIBUTING.md 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/CONTRIBUTING.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,67 +0,0 @@ -# Contributing to go-units - -Want to hack on go-units? Awesome! Here are instructions to get you started. - -go-units is a part of the [Docker](https://www.docker.com) project, and follows -the same rules and principles. If you're already familiar with the way -Docker does things, you'll feel right at home. - -Otherwise, go read Docker's -[contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), -[issue triaging](https://github.com/docker/docker/blob/master/project/ISSUE-TRIAGE.md), -[review process](https://github.com/docker/docker/blob/master/project/REVIEWING.md) and -[branches and tags](https://github.com/docker/docker/blob/master/project/BRANCHES-AND-TAGS.md). - -### Sign your work - -The sign-off is a simple line at the end of the explanation for the patch. Your -signature certifies that you wrote the patch or otherwise have the right to pass -it on as an open-source patch. The rules are pretty simple: if you can certify -the below (from [developercertificate.org](http://developercertificate.org/)): - -``` -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2004, 2006 The Linux Foundation and its contributors. -660 York Street, Suite 102, -San Francisco, CA 94110 USA - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` - -Then you just add a line to every git commit message: - - Signed-off-by: Joe Smith <[email protected]> - -Use your real name (sorry, no pseudonyms or anonymous contributions.) - -If you set your `user.name` and `user.email` git configs, you can sign your -commit automatically with `git commit -s`. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/LICENSE new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/LICENSE --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/LICENSE 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/LICENSE 1970-01-01 01:00:00.000000000 +0100 @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - Copyright 2015 Docker, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - https://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/MAINTAINERS new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/MAINTAINERS --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/MAINTAINERS 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/MAINTAINERS 1970-01-01 01:00:00.000000000 +0100 @@ -1,46 +0,0 @@ -# go-units maintainers file -# -# This file describes who runs the docker/go-units project and how. -# This is a living document - if you see something out of date or missing, speak up! -# -# It is structured to be consumable by both humans and programs. -# To extract its contents programmatically, use any TOML-compliant parser. -# -# This file is compiled into the MAINTAINERS file in docker/opensource. -# -[Org] - [Org."Core maintainers"] - people = [ - "akihirosuda", - "dnephin", - "thajeztah", - "vdemeester", - ] - -[people] - -# A reference list of all people associated with the project. -# All other sections should refer to people by their canonical key -# in the people section. - - # ADD YOURSELF HERE IN ALPHABETICAL ORDER - - [people.akihirosuda] - Name = "Akihiro Suda" - Email = "[email protected]" - GitHub = "AkihiroSuda" - - [people.dnephin] - Name = "Daniel Nephin" - Email = "[email protected]" - GitHub = "dnephin" - - [people.thajeztah] - Name = "Sebastiaan van Stijn" - Email = "[email protected]" - GitHub = "thaJeztah" - - [people.vdemeester] - Name = "Vincent Demeester" - Email = "[email protected]" - GitHub = "vdemeester" \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/README.md new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/README.md --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/README.md 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/README.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,16 +0,0 @@ -[](https://godoc.org/github.com/docker/go-units) - -# Introduction - -go-units is a library to transform human friendly measurements into machine friendly values. - -## Usage - -See the [docs in godoc](https://godoc.org/github.com/docker/go-units) for examples and documentation. - -## Copyright and license - -Copyright © 2015 Docker, Inc. - -go-units is licensed under the Apache License, Version 2.0. -See [LICENSE](LICENSE) for the full text of the license. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/circle.yml new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/circle.yml --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/circle.yml 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/circle.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ -dependencies: - post: - # install golint - - go get golang.org/x/lint/golint - -test: - pre: - # run analysis before tests - - go vet ./... - - test -z "$(golint ./... | tee /dev/stderr)" - - test -z "$(gofmt -s -l . | tee /dev/stderr)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/duration.go new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/duration.go --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/duration.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/duration.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,35 +0,0 @@ -// Package units provides helper function to parse and print size and time units -// in human-readable format. -package units - -import ( - "fmt" - "time" -) - -// HumanDuration returns a human-readable approximation of a duration -// (eg. "About a minute", "4 hours ago", etc.). -func HumanDuration(d time.Duration) string { - if seconds := int(d.Seconds()); seconds < 1 { - return "Less than a second" - } else if seconds == 1 { - return "1 second" - } else if seconds < 60 { - return fmt.Sprintf("%d seconds", seconds) - } else if minutes := int(d.Minutes()); minutes == 1 { - return "About a minute" - } else if minutes < 60 { - return fmt.Sprintf("%d minutes", minutes) - } else if hours := int(d.Hours() + 0.5); hours == 1 { - return "About an hour" - } else if hours < 48 { - return fmt.Sprintf("%d hours", hours) - } else if hours < 24*7*2 { - return fmt.Sprintf("%d days", hours/24) - } else if hours < 24*30*2 { - return fmt.Sprintf("%d weeks", hours/24/7) - } else if hours < 24*365*2 { - return fmt.Sprintf("%d months", hours/24/30) - } - return fmt.Sprintf("%d years", int(d.Hours())/24/365) -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/size.go new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/size.go --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/size.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/size.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,154 +0,0 @@ -package units - -import ( - "fmt" - "strconv" - "strings" -) - -// See: http://en.wikipedia.org/wiki/Binary_prefix -const ( - // Decimal - - KB = 1000 - MB = 1000 * KB - GB = 1000 * MB - TB = 1000 * GB - PB = 1000 * TB - - // Binary - - KiB = 1024 - MiB = 1024 * KiB - GiB = 1024 * MiB - TiB = 1024 * GiB - PiB = 1024 * TiB -) - -type unitMap map[byte]int64 - -var ( - decimalMap = unitMap{'k': KB, 'm': MB, 'g': GB, 't': TB, 'p': PB} - binaryMap = unitMap{'k': KiB, 'm': MiB, 'g': GiB, 't': TiB, 'p': PiB} -) - -var ( - decimapAbbrs = []string{"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"} - binaryAbbrs = []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"} -) - -func getSizeAndUnit(size float64, base float64, _map []string) (float64, string) { - i := 0 - unitsLimit := len(_map) - 1 - for size >= base && i < unitsLimit { - size = size / base - i++ - } - return size, _map[i] -} - -// CustomSize returns a human-readable approximation of a size -// using custom format. -func CustomSize(format string, size float64, base float64, _map []string) string { - size, unit := getSizeAndUnit(size, base, _map) - return fmt.Sprintf(format, size, unit) -} - -// HumanSizeWithPrecision allows the size to be in any precision, -// instead of 4 digit precision used in units.HumanSize. -func HumanSizeWithPrecision(size float64, precision int) string { - size, unit := getSizeAndUnit(size, 1000.0, decimapAbbrs) - return fmt.Sprintf("%.*g%s", precision, size, unit) -} - -// HumanSize returns a human-readable approximation of a size -// capped at 4 valid numbers (eg. "2.746 MB", "796 KB"). -func HumanSize(size float64) string { - return HumanSizeWithPrecision(size, 4) -} - -// BytesSize returns a human-readable size in bytes, kibibytes, -// mebibytes, gibibytes, or tebibytes (eg. "44kiB", "17MiB"). -func BytesSize(size float64) string { - return CustomSize("%.4g%s", size, 1024.0, binaryAbbrs) -} - -// FromHumanSize returns an integer from a human-readable specification of a -// size using SI standard (eg. "44kB", "17MB"). -func FromHumanSize(size string) (int64, error) { - return parseSize(size, decimalMap) -} - -// RAMInBytes parses a human-readable string representing an amount of RAM -// in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and -// returns the number of bytes, or -1 if the string is unparseable. -// Units are case-insensitive, and the 'b' suffix is optional. -func RAMInBytes(size string) (int64, error) { - return parseSize(size, binaryMap) -} - -// Parses the human-readable size string into the amount it represents. -func parseSize(sizeStr string, uMap unitMap) (int64, error) { - // TODO: rewrite to use strings.Cut if there's a space - // once Go < 1.18 is deprecated. - sep := strings.LastIndexAny(sizeStr, "01234567890. ") - if sep == -1 { - // There should be at least a digit. - return -1, fmt.Errorf("invalid size: '%s'", sizeStr) - } - var num, sfx string - if sizeStr[sep] != ' ' { - num = sizeStr[:sep+1] - sfx = sizeStr[sep+1:] - } else { - // Omit the space separator. - num = sizeStr[:sep] - sfx = sizeStr[sep+1:] - } - - size, err := strconv.ParseFloat(num, 64) - if err != nil { - return -1, err - } - // Backward compatibility: reject negative sizes. - if size < 0 { - return -1, fmt.Errorf("invalid size: '%s'", sizeStr) - } - - if len(sfx) == 0 { - return int64(size), nil - } - - // Process the suffix. - - if len(sfx) > 3 { // Too long. - goto badSuffix - } - sfx = strings.ToLower(sfx) - // Trivial case: b suffix. - if sfx[0] == 'b' { - if len(sfx) > 1 { // no extra characters allowed after b. - goto badSuffix - } - return int64(size), nil - } - // A suffix from the map. - if mul, ok := uMap[sfx[0]]; ok { - size *= float64(mul) - } else { - goto badSuffix - } - - // The suffix may have extra "b" or "ib" (e.g. KiB or MB). - switch { - case len(sfx) == 2 && sfx[1] != 'b': - goto badSuffix - case len(sfx) == 3 && sfx[1:] != "ib": - goto badSuffix - } - - return int64(size), nil - -badSuffix: - return -1, fmt.Errorf("invalid suffix: '%s'", sfx) -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/ulimit.go new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/ulimit.go --- old/actuated-cli-0.2.8/vendor/github.com/docker/go-units/ulimit.go 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/github.com/docker/go-units/ulimit.go 1970-01-01 01:00:00.000000000 +0100 @@ -1,123 +0,0 @@ -package units - -import ( - "fmt" - "strconv" - "strings" -) - -// Ulimit is a human friendly version of Rlimit. -type Ulimit struct { - Name string - Hard int64 - Soft int64 -} - -// Rlimit specifies the resource limits, such as max open files. -type Rlimit struct { - Type int `json:"type,omitempty"` - Hard uint64 `json:"hard,omitempty"` - Soft uint64 `json:"soft,omitempty"` -} - -const ( - // magic numbers for making the syscall - // some of these are defined in the syscall package, but not all. - // Also since Windows client doesn't get access to the syscall package, need to - // define these here - rlimitAs = 9 - rlimitCore = 4 - rlimitCPU = 0 - rlimitData = 2 - rlimitFsize = 1 - rlimitLocks = 10 - rlimitMemlock = 8 - rlimitMsgqueue = 12 - rlimitNice = 13 - rlimitNofile = 7 - rlimitNproc = 6 - rlimitRss = 5 - rlimitRtprio = 14 - rlimitRttime = 15 - rlimitSigpending = 11 - rlimitStack = 3 -) - -var ulimitNameMapping = map[string]int{ - //"as": rlimitAs, // Disabled since this doesn't seem usable with the way Docker inits a container. - "core": rlimitCore, - "cpu": rlimitCPU, - "data": rlimitData, - "fsize": rlimitFsize, - "locks": rlimitLocks, - "memlock": rlimitMemlock, - "msgqueue": rlimitMsgqueue, - "nice": rlimitNice, - "nofile": rlimitNofile, - "nproc": rlimitNproc, - "rss": rlimitRss, - "rtprio": rlimitRtprio, - "rttime": rlimitRttime, - "sigpending": rlimitSigpending, - "stack": rlimitStack, -} - -// ParseUlimit parses and returns a Ulimit from the specified string. -func ParseUlimit(val string) (*Ulimit, error) { - parts := strings.SplitN(val, "=", 2) - if len(parts) != 2 { - return nil, fmt.Errorf("invalid ulimit argument: %s", val) - } - - if _, exists := ulimitNameMapping[parts[0]]; !exists { - return nil, fmt.Errorf("invalid ulimit type: %s", parts[0]) - } - - var ( - soft int64 - hard = &soft // default to soft in case no hard was set - temp int64 - err error - ) - switch limitVals := strings.Split(parts[1], ":"); len(limitVals) { - case 2: - temp, err = strconv.ParseInt(limitVals[1], 10, 64) - if err != nil { - return nil, err - } - hard = &temp - fallthrough - case 1: - soft, err = strconv.ParseInt(limitVals[0], 10, 64) - if err != nil { - return nil, err - } - default: - return nil, fmt.Errorf("too many limit value arguments - %s, can only have up to two, `soft[:hard]`", parts[1]) - } - - if *hard != -1 { - if soft == -1 { - return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: soft: -1 (unlimited), hard: %d", *hard) - } - if soft > *hard { - return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) - } - } - - return &Ulimit{Name: parts[0], Soft: soft, Hard: *hard}, nil -} - -// GetRlimit returns the RLimit corresponding to Ulimit. -func (u *Ulimit) GetRlimit() (*Rlimit, error) { - t, exists := ulimitNameMapping[u.Name] - if !exists { - return nil, fmt.Errorf("invalid ulimit name %s", u.Name) - } - - return &Rlimit{Type: t, Soft: uint64(u.Soft), Hard: uint64(u.Hard)}, nil -} - -func (u *Ulimit) String() string { - return fmt.Sprintf("%s=%d:%d", u.Name, u.Soft, u.Hard) -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/actuated-cli-0.2.8/vendor/modules.txt new/actuated-cli-0.2.10/vendor/modules.txt --- old/actuated-cli-0.2.8/vendor/modules.txt 2024-10-30 17:19:56.000000000 +0100 +++ new/actuated-cli-0.2.10/vendor/modules.txt 2024-11-07 22:29:21.000000000 +0100 @@ -34,7 +34,6 @@ github.com/cloudflare/circl/sign/ed448 # github.com/docker/go-units v0.5.0 ## explicit -github.com/docker/go-units # github.com/google/go-github/v52 v52.0.0 ## explicit; go 1.17 github.com/google/go-github/v52/github ++++++ actuated-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.7cHJQl/_old 2024-11-12 19:23:51.545584819 +0100 +++ /var/tmp/diff_new_pack.7cHJQl/_new 2024-11-12 19:23:51.549584985 +0100 @@ -1,5 +1,5 @@ name: actuated-cli -version: 0.2.8 -mtime: 1730305196 -commit: 40de12ccb7d68f99de894d53be6dd0969bab170a +version: 0.2.10 +mtime: 1731014961 +commit: 3a559f07c1e762802cf4795b50ad9f4b50319c92 ++++++ vendor.tar.gz ++++++
