forked from Elara6331/itd
		
	Directly read/write files from ITD
This commit is contained in:
		@@ -19,8 +19,9 @@
 | 
			
		||||
package filesystem
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
@@ -38,33 +39,32 @@ var readCmd = &cobra.Command{
 | 
			
		||||
			log.Fatal().Msg("Command read requires two arguments")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		start := time.Now()
 | 
			
		||||
		var tmpFile *os.File
 | 
			
		||||
		var path string
 | 
			
		||||
		var err error
 | 
			
		||||
		if args[1] == "-" {
 | 
			
		||||
			tmpFile, err = ioutil.TempFile("/tmp", "itctl.*")
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Fatal().Err(err).Msg("Error creating temporary file")
 | 
			
		||||
			}
 | 
			
		||||
			path = tmpFile.Name()
 | 
			
		||||
		} else {
 | 
			
		||||
			path = args[1]
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		data, err := client.ReadFile(args[0])
 | 
			
		||||
		err = client.ReadFile(path, args[0])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error moving file or directory")
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error reading remote file")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		var suffix string
 | 
			
		||||
		var out *os.File
 | 
			
		||||
		if args[1] == "-" {
 | 
			
		||||
			out = os.Stdout
 | 
			
		||||
			suffix = "\n"
 | 
			
		||||
		} else {
 | 
			
		||||
			out, err = os.Create(args[1])
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Fatal().Err(err).Msg("Error opening local file")
 | 
			
		||||
			}
 | 
			
		||||
			io.Copy(os.Stdout, tmpFile)
 | 
			
		||||
			os.Stdout.WriteString("\n")
 | 
			
		||||
			tmpFile.Close()
 | 
			
		||||
			os.Remove(path)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		n, err := out.WriteString(data)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error writing to local file")
 | 
			
		||||
		}
 | 
			
		||||
		out.WriteString(suffix)
 | 
			
		||||
		
 | 
			
		||||
		log.Info().Msgf("Read %d bytes in %s", n, time.Since(start))
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,8 @@ package filesystem
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"io"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
	"github.com/spf13/cobra"
 | 
			
		||||
@@ -39,31 +39,31 @@ var writeCmd = &cobra.Command{
 | 
			
		||||
			log.Fatal().Msg("Command write requires two arguments")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		start := time.Now()
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		var in *os.File
 | 
			
		||||
		var tmpFile *os.File
 | 
			
		||||
		var path string
 | 
			
		||||
		var err error
 | 
			
		||||
		if args[0] == "-" {
 | 
			
		||||
			in = os.Stdin
 | 
			
		||||
		} else {
 | 
			
		||||
			fl, err := os.Open(args[0])
 | 
			
		||||
			tmpFile, err = ioutil.TempFile("/tmp", "itctl.*")
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Fatal().Err(err).Msg("Error opening local file")
 | 
			
		||||
				log.Fatal().Err(err).Msg("Error creating temporary file")
 | 
			
		||||
			}
 | 
			
		||||
			in = fl
 | 
			
		||||
			path = tmpFile.Name()
 | 
			
		||||
		} else {
 | 
			
		||||
			path = args[0]
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		data, err := io.ReadAll(in)
 | 
			
		||||
		client := viper.Get("client").(*api.Client)
 | 
			
		||||
 | 
			
		||||
		if args[0] == "-" {
 | 
			
		||||
			io.Copy(tmpFile, os.Stdin)
 | 
			
		||||
			defer tmpFile.Close()
 | 
			
		||||
			defer os.Remove(path)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = client.WriteFile(path, args[1])
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error moving file or directory")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		err = client.WriteFile(args[1], string(data))
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Fatal().Err(err).Msg("Error writing to remote file")
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		log.Info().Msgf("Wrote %d bytes in %s", len(data), time.Since(start))
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user