Skip to content
Snippets Groups Projects
Select Git revision
  • 88d10ca5d2084f94f70c51664b210156139fb8da
  • main default protected
  • jw_sonar
  • v6.0.0 protected
  • interactive-mode-preference
  • bedran_exercise-list
  • add_route_user
  • Jw_sonar_backup
  • exercise_list_filter
  • assignment_filter
  • add_route_assignments
  • move-to-esm-only
  • 6.0.0-dev
  • Pre-alpha
  • 5.0.0
  • Latest
  • 4.2.0
  • 4.1.1
  • 4.1.0
  • 4.0.1
  • 4.0.0
  • 3.5.0
  • 3.4.2
  • 3.4.1
  • 3.3.0
  • 3.2.3
  • 3.2.2
  • 3.2.0
  • 3.1.2
  • 3.1.1
  • 3.1.0
  • 3.0.1
32 results

GitlabManager.ts

Blame
  • utils.go 2.11 KiB
    package utils
    
    import (
    	"os"
    	"io"
    	"fmt"
    	"bytes"
    	"errors"
    	"net/mail"
    	"archive/tar"
    	"path/filepath"
    	"compress/gzip"
    	"github.com/google/uuid"
    )
    
    func Print(a ...any) {
    	os.Stdout.WriteString(fmt.Sprint(a ...))
    }
    
    func Println(a ...any) {
    	Print(a...)
    	Print("\n")
    }
    
    func PrintErr(a ...any) {
    	os.Stderr.WriteString(fmt.Sprint(a ...))
    }
    
    func PrintlnErr(a ...any) {
    	PrintErr(a...)
    	PrintErr("\n")
    }
    
    // Returns true if the specified file exists, false otherwise.
    func FileExists(filename string) bool {
    	info, err := os.Stat(filename)
    	if os.IsNotExist(err) {
    	   return false
    	}
    	return !info.IsDir()
    }
    
    // Creates a tar.gz archive of dir and all its files and subdirectories.
    // Source code slightly modified from: https://gist.github.com/mimoo/25fc9716e0f1353791f5908f94d6e726
    func TarGzDir(dir, archive string) error {
    	var buf bytes.Buffer
    
    	gzWriter := gzip.NewWriter(&buf)
    	tarWriter := tar.NewWriter(gzWriter)
    
    	// Walks through every file in the directory
    	filepath.Walk(dir, func(file string, fi os.FileInfo, err error) error {
    		header, err := tar.FileInfoHeader(fi, file)
    		if err != nil {
    			return err
    		}
    
    		header.Name = filepath.ToSlash(file)
    
    		if err := tarWriter.WriteHeader(header); err != nil {
    			return err
    		}
    		// if not a dir, write file content
    		if !fi.IsDir() {
    			data, err := os.Open(file)
    			if err != nil {
    				return err
    			}
    			if _, err := io.Copy(tarWriter, data); err != nil {
    				return err
    			}
    		}
    		return nil
    	})
    
    	if err := tarWriter.Close(); err != nil {
    		return err
    	}
    	if err := gzWriter.Close(); err != nil {
    		return err
    	}
    
    	fileToWrite, err := os.OpenFile(archive, os.O_CREATE|os.O_RDWR, os.FileMode(0750))
    	if err != nil {
    		return err
    	}
    	if _, err := io.Copy(fileToWrite, &buf); err != nil {
    		return err
    	}
    
    	return nil
    }
    
    func GetRandomTempFilename() (string, error) {
    	tempDir := os.TempDir()
    	uuid, err := uuid.NewRandom()
    	if err != nil {
    		return "", errors.New("Failed creating random UUID: "+err.Error())
    	}
    	randName := "temp_"+uuid.String()
    	return filepath.Join(tempDir, randName), nil
    }
    
    func IsEmail(email string) bool {
        _, err := mail.ParseAddress(email)
    	return err == nil
    }