11package config
22
33import (
4- "context"
54 "fmt"
65 "os"
76
@@ -24,9 +23,6 @@ func InitSystem() *core.SignalHandler {
2423 os .Exit (1 )
2524 }
2625
27- // Set version
28- model .AppConfig .ToolVersion = "2.0"
29-
3026 // Load hash cache
3127 if err := core .LoadHashCache (); err != nil {
3228 core .LogInfo ("Warning: Failed to load hash cache: %v" , err )
@@ -36,130 +32,12 @@ func InitSystem() *core.SignalHandler {
3632 core .LogInfo ("RootBucket: %s" , model .AppConfig .RootBucket )
3733 core .LogInfo ("DiscordWebhookURL: %s" , model .AppConfig .DiscordWebhookURL )
3834
39- // CLI Command Handling
40- if len (os .Args ) > 1 {
41- command := os .Args [1 ]
42-
43- switch command {
44- case "--help" :
45- printUsage ()
46- // We exit here because help is a standalone command
47- os .Exit (0 )
48-
49- case "--version" :
50- fmt .Printf ("b2m version %s\n " , model .AppConfig .ToolVersion )
51- os .Exit (0 )
52-
53- case "--generate-hash" :
54- // Common Dependencies check
55- if err := checkDependencies (); err != nil {
56- fmt .Printf ("Error: %v\n " , err )
57- os .Exit (1 )
58- }
59-
60- // Warning and Confirmation
61- fmt .Println ("\n WARNING: This operation regenerates all metadata from local files." )
62- fmt .Println ("Ensure your local databases are synced with remote to avoid data loss." )
63- fmt .Println ("This should ONLY be done when changing hashing algorithms or recovering from corruption." )
64- fmt .Print ("\n Are you sure you want to proceed? (y/N): " )
65-
66- var confirmation string
67- fmt .Scanln (& confirmation )
68- if confirmation != "y" && confirmation != "Y" {
69- fmt .Println ("Operation cancelled." )
70- os .Exit (0 )
71- }
72-
73- // Clean up .b2m before generating metadata
74- if err := core .CleanupLocalMetadata (); err != nil {
75- fmt .Printf ("Error: failed to cleanup metadata: %v\n " , err )
76- core .LogError ("Generate-Hash: Failed to cleanup metadata: %v" , err )
77- os .Exit (1 )
78- }
79-
80- // Explicitly clear hash cache
81- core .ClearHashCache ()
82-
83- // Bootstrap system minimal
84- // Use background context for CLI tool mode
85- cliCtx := context .Background ()
86- if err := core .BootstrapSystem (cliCtx ); err != nil {
87- core .LogError ("Startup Warning: %v" , err )
88- }
89- core .HandleBatchMetadataGeneration ()
90- Cleanup ()
91- os .Exit (0 )
92-
93- case "--reset" :
94- fmt .Println ("Resetting system state..." )
95- // Clean up .b2m before starting normal execution
96- if err := core .CleanupLocalMetadata (); err != nil {
97- fmt .Printf ("Error: failed to cleanup metadata: %v\n " , err )
98- core .LogError ("Reset: Failed to cleanup metadata: %v" , err )
99- os .Exit (1 )
100- }
101-
102- // Explicitly clear hash cache
103- core .ClearHashCache ()
104-
105- Cleanup ()
106- fmt .Println ("Reset complete. Please restart the application." )
107- os .Exit (0 )
108-
109- default :
110- fmt .Printf ("Unknown command: %s\n " , command )
111- printUsage ()
112- os .Exit (1 )
113- }
114- }
115-
11635 // Setup cancellation handling
11736 sigHandler := core .NewSignalHandler ()
11837
119- // Startup checks for TUI
120- if err := checkDependencies (); err != nil {
121- core .LogError ("Startup Error: %v" , err )
122- fmt .Printf ("Startup Error: %v\n " , err )
123- os .Exit (1 )
124- }
125-
12638 if err := core .BootstrapSystem (sigHandler .Context ()); err != nil {
12739 core .LogError ("Startup Warning: %v" , err )
12840 }
12941
13042 return sigHandler
13143}
132-
133- // Cleanup saves the hash cache and closes the logger.
134- // This should be called (usually deferred) by the main function.
135- func Cleanup () {
136- if err := core .SaveHashCache (); err != nil {
137- core .LogError ("Failed to save hash cache: %v" , err )
138- }
139- core .CloseLogger ()
140- }
141-
142- func checkDependencies () error {
143- if err := core .CheckB3SumAvailability (); err != nil {
144- return err
145- }
146- if err := core .CheckRclone (); err != nil {
147- return fmt .Errorf ("rclone not found or error: %w" , err )
148- }
149- if ! core .CheckRcloneConfig () {
150- return fmt .Errorf ("rclone config not found. Run 'init' or check setup" )
151- }
152- return nil
153- }
154-
155- func printUsage () {
156- fmt .Println ("b2-manager - Backblaze B2 Database Manager" )
157- fmt .Println ("\n Usage:" )
158- fmt .Println (" b2-manager [command]" )
159- fmt .Println ("\n Commands:" )
160- fmt .Println (" --help Show this help message" )
161- fmt .Println (" --version Show version information" )
162- fmt .Println (" --generate-hash Generate new hash and create metadata in remote" )
163- fmt .Println (" --reset Remove local metadata caches and start fresh UI session" )
164- fmt .Println ("\n If no command is provided, the TUI application starts normally." )
165- }
0 commit comments