Skip to content

Commit ada9558

Browse files
feat(encrypt): integration and main implementation
1 parent ec3906c commit ada9558

File tree

2 files changed

+114
-35
lines changed

2 files changed

+114
-35
lines changed

system/backup_integration.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package system
2+
3+
import (
4+
"fmt"
5+
"log"
6+
7+
"github.com/mdgspace/sysreplicate/system/backup"
8+
)
9+
10+
// handle backup integration
11+
func RunBackup() {
12+
fmt.Println("=== Key Backup Process ===")
13+
14+
//create backup manager
15+
backupManager := backup.NewBackupManager()
16+
17+
//get custom paths from user
18+
customPaths := backup.GetCustomPaths()
19+
20+
//create backup
21+
err := backupManager.CreateBackup(customPaths)
22+
if err != nil {
23+
log.Printf("Backup failed: %v", err)
24+
return
25+
}
26+
27+
fmt.Println("Key backup completed successfully!")
28+
}

system/run.go

Lines changed: 86 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package system
22

33
import (
4+
"bufio"
5+
"strings"
46
"fmt"
57
"log"
68
"os"
@@ -14,39 +16,88 @@ func Run() {
1416
osType := runtime.GOOS
1517
fmt.Println("Detected OS Type:", osType)
1618

17-
switch osType {
18-
case "darwin":
19-
fmt.Println("MacOS is not supported")
20-
case "windows":
21-
fmt.Println("Windows is not supported")
22-
case "linux":
23-
distro, baseDistro := utils.DetectDistro()
24-
if distro == "unknown" && baseDistro == "unknown" {
25-
log.Println("Failed to fetch the details of your distro")
26-
}
27-
fmt.Println("Distribution:", distro)
28-
fmt.Println("Built On:", baseDistro)
29-
packages := utils.FetchPackages(baseDistro)
30-
jsonObj, err := output.BuildSystemJSON(osType, distro, baseDistro, packages)
31-
if err != nil {
32-
log.Println("Error marshalling JSON:", err)
33-
} else {
34-
if err := os.MkdirAll(outputSysDir, 0744); err != nil {
35-
log.Println("Error creating sys output directory:", err)
36-
}
37-
if err := os.WriteFile(jsonOutputPath, jsonObj, 0644); err != nil {
38-
log.Println("Error writing JSON output:", err)
39-
}
40-
if err := os.MkdirAll(outputScriptsDir, 0744); err != nil {
41-
log.Println("Error creating scripts output directory:", err)
42-
}
43-
if err := output.GenerateInstallScript(baseDistro, packages, scriptOutputPath); err != nil {
44-
log.Println("Error generating install script:", err)
45-
} else {
46-
fmt.Println("Script generated successfully at:", scriptOutputPath)
47-
}
48-
}
49-
default:
50-
fmt.Println("OS not supported")
51-
}
19+
switch osType {
20+
case "darwin":
21+
fmt.Println("MacOS is not supported")
22+
return
23+
case "windows":
24+
fmt.Println("Windows is not supported")
25+
return
26+
case "linux":
27+
showMenu() ////main menu component
28+
default:
29+
fmt.Println("OS not supported")
30+
}
31+
}
32+
33+
//showMenu displays the main menu for Linux users
34+
//MUST BE CHANGED IN THE FUTURE
35+
func showMenu() {
36+
scanner := bufio.NewScanner(os.Stdin)
37+
38+
for {
39+
fmt.Println("\n=== SysReplicate - Distro Hopping Tool ===")
40+
fmt.Println("1. Generate package replication files")
41+
fmt.Println("2. Backup SSH/GPG keys")
42+
fmt.Println("3. Exit")
43+
fmt.Print("Choose an option (1-3): ")
44+
45+
if !scanner.Scan() {
46+
break
47+
}
48+
49+
choice := strings.TrimSpace(scanner.Text())
50+
51+
switch choice {
52+
case "1":
53+
runPackageReplication()
54+
case "2":
55+
RunBackup()
56+
case "3":
57+
fmt.Println() //exit
58+
return
59+
default:
60+
fmt.Println("Invalid choice. Please select 1, 2, or 3.")
61+
}
62+
}
63+
}
64+
65+
//this handles the original package replication functionality
66+
func runPackageReplication() {
67+
distro, baseDistro := utils.DetectDistro()
68+
if distro == "unknown" && baseDistro == "unknown" {
69+
log.Println("Failed to fetch the details of your distro")
70+
return
71+
}
72+
73+
fmt.Println("Distribution:", distro)
74+
fmt.Println("Built On:", baseDistro)
75+
76+
packages := utils.FetchPackages(baseDistro)
77+
jsonObj, err := output.BuildSystemJSON("linux", distro, baseDistro, packages)
78+
if err != nil {
79+
log.Println("Error marshalling JSON:", err)
80+
return
81+
}
82+
83+
if err := os.MkdirAll(outputSysDir, 0744); err != nil {
84+
log.Println("Error creating sys output directory:", err)
85+
return
86+
}
87+
88+
if err := os.WriteFile(jsonOutputPath, jsonObj, 0644); err != nil {
89+
log.Println("Error writing JSON output:", err)
90+
return
91+
}
92+
93+
if err := os.MkdirAll(outputScriptsDir, 0744); err != nil {
94+
log.Println("Error creating scripts output directory:", err)
95+
return
96+
}
97+
98+
if err := output.GenerateInstallScript(baseDistro, packages, scriptOutputPath); err != nil {
99+
log.Println("Error generating install script:", err)
100+
} else {
101+
fmt.Println("Script generated successfully at:", scriptOutputPath)
102+
}
52103
}

0 commit comments

Comments
 (0)