vorteil/vorteil

View on GitHub
pkg/vproj/new.go

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
package vproj

/**
 * SPDX-License-Identifier: Apache-2.0
 * Copyright 2020 vorteil.io Pty Ltd
 */

import (
    "bytes"
    "io"
    "os"
    "path/filepath"

    "github.com/vorteil/vorteil/pkg/elog"
    "github.com/vorteil/vorteil/pkg/vcfg"
)

// NewProject intializes a new project that vorteil is able to run
func NewProject(path string, flagVCFG *vcfg.VCFG, logger elog.View) error {
    logger.Printf("Creating project at '%s'", path)

    vcfgPath := filepath.Join(path, "default.vcfg")
    projectPath := filepath.Join(path, ".vorteilproject")

    err := createVCFGFile(vcfgPath, flagVCFG)
    if err != nil {
        return err
    }

    err = createProjectFile(projectPath)
    if err != nil {
        return err
    }

    return nil
}

func createVCFGFile(path string, fvcfg *vcfg.VCFG) error {
    // Open vcfg path so we can marshal to it
    file, err := os.Create(path)
    if err != nil {
        return err
    }
    defer file.Close()
    data, err := fvcfg.Marshal()
    if err != nil {
        return err
    }
    io.Copy(file, bytes.NewBuffer(data))
    return nil
}

func createProjectFile(path string) error {
    // Open project path so we can create that
    project, err := os.Create(path)
    if err != nil {
        return err
    }
    defer project.Close()
    pData := genericProjectData()
    data, err := pData.Marshal()
    if err != nil {
        return err
    }
    io.Copy(project, bytes.NewBuffer(data))
    return nil
}