grim/convey

Apparently I deleted the clean plan

2020-03-02, Gary Kramlich
22eba3fdc82c
Apparently I deleted the clean plan
// Convey
// Copyright 2016-2018 Gary Kramlich <grim@reaperworld.com>
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// Package environment provides utilities for managing environment variables.
package environment
import (
"os"
"strings"
"time"
"bitbucket.org/rw_grim/govcs"
"bitbucket.org/rw_grim/govcs/hg"
"hg.sr.ht/~grim/convey/normalize"
)
func (e *Environment) loadVCS(wd string) error {
repo, err := govcs.Detect(wd)
if err != nil {
return nil
}
name := strings.ToUpper(repo.Name())
e.Set("VCS", name)
e.Set("COMMIT", repo.Commit())
e.Set("COMMIT_SHORT", repo.ShortCommit())
e.Set("COMMIT", repo.Commit())
e.Set("BRANCH", repo.Branch())
e.Set("BRANCH_NORMALIZED", normalize.Normalize(repo.Branch()))
e.Set("REMOTE", repo.Remote(""))
e.Set(name+"_COMMIT", repo.Commit())
e.Set(name+"_COMMIT_SHORT", repo.ShortCommit())
e.Set(name+"_COMMIT", repo.Commit())
e.Set(name+"_BRANCH", repo.Branch())
e.Set(name+"_BRANCH_NORMALIZED", normalize.Normalize(repo.Branch()))
e.Set(name+"_REMOTE", repo.Remote(""))
// check for vcs specific values. If this grows past 1, make it a switch
// type.
if hg, ok := repo.(*hg.Mercurial); ok {
e.Set("BOOKMARK", hg.Bookmark())
e.Set(name+"_BOOKMARK", hg.Bookmark())
}
return nil
}
// LoadDefaults will load the default environment variables for a convey run.
func (e *Environment) LoadDefaults(wd string) error {
oldHome := os.Getenv("HOME")
e.Set("HOME", "/tmp")
defer e.Set("HOME", oldHome)
e.Set("RUN_TIME", time.Now().UTC().Format("2006-01-02T15:04:05-0700"))
err := e.loadVCS(wd)
if err != nil {
return err
}
return nil
}