проектные команды и ссылки на источник
- заведён internal/source: уровни ссылаются друг на друга путём на диске или git-репозиторием, ревизия закрепляется хвостом #ref; клон делается заново и удаляется, кэша нет - добавлены init, add, pull, list, check в проекте — манифест .conventions.toml, сборка копий по разу на компонент, маркер локальной части, READING.md рядом - проверки формы развязаны с набором: принимают lang.Vocabulary, а язык копии узнаётся по строке о версии — манифеста рядом с ней нет
This commit is contained in:
@@ -27,12 +27,19 @@ const Name = "suite.toml"
|
||||
// binary, and making every suite declare what is already implied buys nothing.
|
||||
const DefaultLanguageCode = "ru"
|
||||
|
||||
// Language is the [language] section: the version of the conventions language
|
||||
// and the two documents about it. The full description stays with the author of
|
||||
// the suite, the short one travels into the copy.
|
||||
// Language is the [language] section: the version of the conventions language,
|
||||
// the natural language its words are written in, and the two documents about
|
||||
// it. The full description stays with the author of the suite, the short one
|
||||
// travels into the copy.
|
||||
//
|
||||
// Source is where those two documents live. Empty means the suite itself, which
|
||||
// is where they lie while the specification of the language has no repository
|
||||
// of its own; once it moves out, the same key names it without anything else
|
||||
// changing — the vocabulary is picked by version and code either way.
|
||||
type Language struct {
|
||||
Version int `toml:"version"`
|
||||
Lang string `toml:"lang"`
|
||||
Source string `toml:"source"`
|
||||
Description string `toml:"description"`
|
||||
Reading string `toml:"reading"`
|
||||
}
|
||||
@@ -87,12 +94,17 @@ func Load(root string) (*Manifest, error) {
|
||||
// Find walks up from start looking for a directory that holds a suite
|
||||
// manifest, so that `convy suite check` works from any subdirectory of a suite.
|
||||
func Find(start string) (string, error) {
|
||||
return findUp(start, Name)
|
||||
}
|
||||
|
||||
// findUp walks up from start looking for a directory holding the named file.
|
||||
func findUp(start, name string) (string, error) {
|
||||
dir, err := filepath.Abs(start)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
for {
|
||||
if _, err := os.Stat(filepath.Join(dir, Name)); err == nil {
|
||||
if _, err := os.Stat(filepath.Join(dir, name)); err == nil {
|
||||
return dir, nil
|
||||
}
|
||||
parent := filepath.Dir(dir)
|
||||
|
||||
Reference in New Issue
Block a user