Преглед на файлове

structure overview with a d2 file

Banana преди 2 месеца
родител
ревизия
8e0881ac8f
променени са 2 файла, в които са добавени 116 реда и са изтрити 0 реда
  1. 47 0
      client/go-cli/scientia/cmd/pull.go
  2. 69 0
      documentation/structure.d2

+ 47 - 0
client/go-cli/scientia/cmd/pull.go

@@ -0,0 +1,47 @@
+package cmd
+
+import (
+	"fmt"
+	"github.com/spf13/cobra"
+	"io"
+	"os"
+	Helper "scientia/lib"
+)
+
+func init() {
+	rootCmd.AddCommand(pullCmd)
+}
+
+var pullCmd = &cobra.Command {
+	Use: "pull",
+	Short: "Download",
+	Long: "Add a new entry based on a file or piped cat file | scientia add. Returns the url to the new entry.",
+	Run: func(cmd *cobra.Command, args []string) {
+		// check if there is a file or piped content
+		var inputString string
+
+		if len(args) == 1 {
+			if FlagVerbose {
+				fmt.Println("Read from file argument")
+			}
+			bytes, err := os.ReadFile(args[0])
+			Helper.ErrorCheck(err, "Error opening file")
+			inputString = string(bytes)
+		} else if stat, _ := os.Stdin.Stat(); (stat.Mode() & os.ModeCharDevice) == 0  {
+			if FlagVerbose {
+				fmt.Println("Read from piped stdin")
+			}
+			bytes, _ := io.ReadAll(os.Stdin)
+			inputString = string(bytes)
+		} else {
+			cmd.Help()
+			os.Exit(0)
+		}
+
+		response := upload(inputString)
+
+		// print the result and link to the pasty
+		fmt.Printf("Status: %d\n", response.Status)
+		fmt.Printf("Message: %s\n", response.Message)
+	},
+}

+ 69 - 0
documentation/structure.d2

@@ -0,0 +1,69 @@
+sc: scientia
+cfg: config
+cfg_edit: edit
+cfg_init: init
+cfg_read: read
+add: add
+pull: pull
+push: push
+edit: edit
+
+sc -> cfg
+cfg -> cfg_init
+cfg -> cfg_edit
+cfg -> cfg_read
+
+sc -> add
+
+addContainer: add {
+    add_param: file or stdin
+    add_param.shape: oval
+    server: server
+    server.shape: cloud
+    local: local
+    local.shape: page
+
+    add -> add_param
+    add_param -> server
+    server -> local
+    add_param -> local: offline
+}
+
+sc -> pull
+
+pullContainer: pull {
+    server: server
+    server.shape: cloud
+    local: local
+    local.shape: page
+
+    pull -> server
+    server -> local: versions
+}
+
+sc -> push
+
+pushContainer: push {
+    server: server
+    server.shape: cloud
+    local: local
+    local.shape: page
+
+    push -> local
+    local -> server: versions
+}
+
+sc -> edit
+
+editContainer: edit {
+    local: local
+    local.shape: page
+
+    edit_list: list
+    edit_id: id
+
+    edit -> edit_list
+    edit -> edit_id
+
+    edit_id -> local: new version
+}