Thorben GüntherUpdate links7d5d49c2 years agoHistory
90 lines · 2.3 KB · Go
RawDownload
package main import (	"log"	"os" 	"github.com/spf13/cobra" 	"git.sr.ht/~xenrox/hut/export") func newImportCommand() *cobra.Command {	run := func(cmd *cobra.Command, args []string) {		importers := make(map[string]export.Exporter) 		mc := createClient("meta", cmd)		meta := export.NewMetaExporter(mc.Client)		importers["meta.sr.ht"] = meta 		gc := createClient("git", cmd)		git := export.NewGitExporter(gc.Client, gc.BaseURL)		importers["git.sr.ht"] = git 		hc := createClient("hg", cmd)		hg := export.NewHgExporter(hc.Client, hc.BaseURL)		importers["hg.sr.ht"] = hg 		pc := createClient("paste", cmd)		paste := export.NewPasteExporter(pc.Client, pc.HTTP)		importers["paste.sr.ht"] = paste 		lc := createClient("lists", cmd)		lists := export.NewListsExporter(lc.Client, lc.HTTP)		importers["lists.sr.ht"] = lists 		tc := createClient("todo", cmd)		todo := export.NewTodoExporter(tc.Client, tc.HTTP)		importers["todo.sr.ht"] = todo 		if _, ok := os.LookupEnv("SSH_AUTH_SOCK"); !ok {			log.Println("Warning! SSH_AUTH_SOCK is not set in your environment.")			log.Println("Using an SSH agent is advised to avoid unlocking your SSH keys repeatedly during the import.")		} 		var resources []export.DirResource		for _, dir := range args {			l, err := export.FindDirResources(dir)			if err != nil {				log.Fatalf("Failed to find resources to import in %q: %v", dir, err)			}			resources = append(resources, l...)		} 		if len(resources) == 0 {			log.Fatal("No data found")		} 		ctx := cmd.Context()		log.Println("Importing account data...") 		var lastService string		for _, res := range resources {			importer, ok := importers[res.Service]			if !ok {				continue // Some services are exported but never imported			} 			if lastService != res.Service {				log.Println(res.Service)				lastService = res.Service			} 			log.Printf("\t%s", res.Name)			if err := importer.ImportResource(ctx, res.Path); err != nil {				log.Printf("Error importing %q: %v", res.Path, err)			}		} 		log.Println("Import complete.")	}	return &cobra.Command{		Use:   "import <directory...>",		Short: "Imports your account data",		Args:  cobra.MinimumNArgs(1),		ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {			return nil, cobra.ShellCompDirectiveFilterDirs		},		Run: run,	}}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t