forked from Elara6331/itd
		
	Add resource loading to itctl
This commit is contained in:
		| @@ -1,11 +1,11 @@ | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
| 	"context" | ||||
| 	"os" | ||||
| 	"os/signal" | ||||
| 	"syscall" | ||||
| 	"time" | ||||
|  | ||||
| 	"github.com/rs/zerolog" | ||||
| 	"github.com/rs/zerolog/log" | ||||
| @@ -29,12 +29,12 @@ func main() { | ||||
| 	// at most 200ms after the user sends SIGINT/SIGTERM. | ||||
| 	go func() { | ||||
| 		<-ctx.Done() | ||||
| 		time.Sleep(200*time.Millisecond) | ||||
| 		time.Sleep(200 * time.Millisecond) | ||||
| 		os.Exit(0) | ||||
| 	}() | ||||
|  | ||||
| 	app := cli.App{ | ||||
| 		Name: "itctl", | ||||
| 		Name:            "itctl", | ||||
| 		HideHelpCommand: true, | ||||
| 		Flags: []cli.Flag{ | ||||
| 			&cli.StringFlag{ | ||||
| @@ -46,10 +46,23 @@ func main() { | ||||
| 		}, | ||||
| 		Commands: []*cli.Command{ | ||||
| 			{ | ||||
| 				Name: "help", | ||||
| 				Name:      "help", | ||||
| 				ArgsUsage: "<command>", | ||||
| 				Usage: "Display help screen for a command", | ||||
| 				Action: helpCmd, | ||||
| 				Usage:     "Display help screen for a command", | ||||
| 				Action:    helpCmd, | ||||
| 			}, | ||||
| 			{ | ||||
| 				Name:    "resources", | ||||
| 				Aliases: []string{"res"}, | ||||
| 				Usage:   "Handle InfiniTime resource loading", | ||||
| 				Subcommands: []*cli.Command{ | ||||
| 					{ | ||||
| 						Name:      "load", | ||||
| 						ArgsUsage: "<path>", | ||||
| 						Usage:     "Load an InifiniTime resources package", | ||||
| 						Action:    resourcesLoad, | ||||
| 					}, | ||||
| 				}, | ||||
| 			}, | ||||
| 			{ | ||||
| 				Name:    "filesystem", | ||||
|   | ||||
							
								
								
									
										48
									
								
								cmd/itctl/resources.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								cmd/itctl/resources.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | ||||
| package main | ||||
|  | ||||
| import ( | ||||
| 	"path/filepath" | ||||
|  | ||||
| 	"github.com/cheggaaa/pb/v3" | ||||
| 	"github.com/urfave/cli/v2" | ||||
| 	"go.arsenm.dev/infinitime" | ||||
| ) | ||||
|  | ||||
| func resourcesLoad(c *cli.Context) error { | ||||
| 	if c.Args().Len() == 0 { | ||||
| 		return cli.Exit("Command load requires one argument.", 1) | ||||
| 	} | ||||
|  | ||||
| 	// Create progress bar templates | ||||
| 	rmTmpl := `Removing {{string . "filename"}}` | ||||
| 	upTmpl := `Uploading {{string . "filename"}} {{counters . }} B {{bar . "|" "-" (cycle .) " " "|"}} {{percent . }} {{rtime . "%s"}}` | ||||
| 	// Start full bar at 0 total | ||||
| 	bar := pb.ProgressBarTemplate(rmTmpl).Start(0) | ||||
|  | ||||
| 	path, err := filepath.Abs(c.Args().Get(0)) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	progCh, err := client.LoadResources(c.Context, path) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	for evt := range progCh { | ||||
| 		if evt.Operation == infinitime.ResourceOperationRemoveObsolete { | ||||
| 			bar.SetTemplateString(rmTmpl) | ||||
| 			bar.Set("filename", evt.Name) | ||||
| 		} else { | ||||
| 			bar.SetTemplateString(upTmpl) | ||||
| 			bar.Set("filename", evt.Name) | ||||
|  | ||||
| 			bar.SetTotal(evt.Total) | ||||
| 			bar.SetCurrent(evt.Sent) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	bar.Finish() | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -38,7 +38,7 @@ require ( | ||||
| 	github.com/gopherjs/gopherjs v1.17.2 // indirect | ||||
| 	github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect | ||||
| 	github.com/mattn/go-colorable v0.1.8 // indirect | ||||
| 	github.com/mattn/go-runewidth v0.0.12 // indirect | ||||
| 	github.com/mattn/go-runewidth v0.0.13 // indirect | ||||
| 	github.com/mitchellh/copystructure v1.2.0 // indirect | ||||
| 	github.com/mitchellh/mapstructure v1.5.0 // indirect | ||||
| 	github.com/mitchellh/reflectwalk v1.0.2 // indirect | ||||
|   | ||||
							
								
								
									
										3
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.sum
									
									
									
									
									
								
							| @@ -270,8 +270,9 @@ github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNx | ||||
| github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= | ||||
| github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= | ||||
| github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | ||||
| github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow= | ||||
| github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= | ||||
| github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= | ||||
| github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= | ||||
| github.com/mattn/go-sqlite3 v1.14.12 h1:TJ1bhYJPV44phC+IMu1u2K/i5RriLTPe+yc68XDJ1Z0= | ||||
| github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= | ||||
| github.com/metal3d/fyne-x v0.0.0-20220508095732-177117e583fb h1:+fP6ENsbd+BUOmD/kSjNtrOmi2vgJ/JfWDSWjTKmTVY= | ||||
|   | ||||
		Reference in New Issue
	
	Block a user