package main

import (
	"fmt"

	"github.com/spf13/cobra"

	"github.com/safing/jess/hashtools"
	"github.com/safing/jess/tools"
)

func init() {
	rootCmd.AddCommand(toolsCmd)
}

var toolsCmd = &cobra.Command{
	Use:   "tools",
	Short: "list all available tools",
	Run: func(cmd *cobra.Command, args []string) {
		fmt.Printf("Tools\n\n")
		toolTable := [][]string{
			{"Name/ID", "Purpose", "Security Level", "Author", "Comment"},
		}
		for _, tool := range tools.AsList() {
			toolTable = append(toolTable, []string{
				tool.Info.Name,
				tool.Info.FormatPurpose(),
				formatToolSecurityLevel(tool),
				tool.Info.Author,
				tool.Info.Comment,
			})
		}
		for _, line := range formatColumns(toolTable) {
			fmt.Println(line)
		}

		fmt.Printf("\nHashTools\n\n")
		hashToolTable := [][]string{
			{"Name/ID", "Security Level", "Author", "Comment"},
		}
		for _, hashTool := range hashtools.AsList() {
			hashToolTable = append(hashToolTable, []string{
				hashTool.Name,
				fmt.Sprintf("%d b/s", hashTool.SecurityLevel),
				hashTool.Author,
				hashTool.Comment,
			})
		}
		for _, line := range formatColumns(hashToolTable) {
			fmt.Println(line)
		}
	},
}