Extraction Hardening
This commit is contained in:
@@ -231,10 +231,17 @@ func (p *Project) EffectiveConfig() EffectiveConfig {
|
||||
extract := p.Config.Extract
|
||||
extract.Layout = defaultString(extract.Layout, DefaultExtractLayout)
|
||||
extract.HAKDiscovery = defaultString(extract.HAKDiscovery, DefaultExtractHAKDiscovery)
|
||||
if len(extract.Archives) == 0 {
|
||||
extract.Archives = []string{outputs.ModuleArchiveName(p.Config.Module)}
|
||||
}
|
||||
if extract.CleanupStale == nil {
|
||||
defaultCleanup := true
|
||||
extract.CleanupStale = &defaultCleanup
|
||||
}
|
||||
if extract.ConsumeArchives == nil {
|
||||
defaultConsume := false
|
||||
extract.ConsumeArchives = &defaultConsume
|
||||
}
|
||||
|
||||
musicStageRoot := expandPathTemplate(DefaultMusicStageRoot, paths)
|
||||
musicCreditsRoot := expandPathTemplate(DefaultCreditsRoot, paths)
|
||||
@@ -435,7 +442,9 @@ func markMissingDefaults(provenance ConfigProvenance) {
|
||||
"topdata.wiki.deploy_edit_summary": DefaultWikiDeployEditSummary,
|
||||
"extract.layout": DefaultExtractLayout,
|
||||
"extract.hak_discovery": DefaultExtractHAKDiscovery,
|
||||
"extract.archives": DefaultModuleArchiveTemplate,
|
||||
"extract.cleanup_stale": "true",
|
||||
"extract.consume_archives": "false",
|
||||
"autogen.cache.root": DefaultAutogenCacheRoot,
|
||||
"autogen.cache.max_age": DefaultAutogenCacheMaxAge.String(),
|
||||
"autogen.cache.refresh_env": DefaultAutogenRefreshEnv,
|
||||
|
||||
@@ -214,9 +214,11 @@ type TopDataWikiConfig struct {
|
||||
|
||||
type ExtractConfig struct {
|
||||
IgnoreExtensions []string `json:"ignore_extensions" yaml:"ignore_extensions"`
|
||||
Archives []string `json:"archives,omitempty" yaml:"archives,omitempty"`
|
||||
Layout string `json:"layout" yaml:"layout"`
|
||||
HAKDiscovery string `json:"hak_discovery" yaml:"hak_discovery"`
|
||||
CleanupStale *bool `json:"cleanup_stale,omitempty" yaml:"cleanup_stale,omitempty"`
|
||||
ConsumeArchives *bool `json:"consume_archives,omitempty" yaml:"consume_archives,omitempty"`
|
||||
DeleteModuleArchiveAfterSuccess bool `json:"delete_module_archive_after_success,omitempty" yaml:"delete_module_archive_after_success,omitempty"`
|
||||
}
|
||||
|
||||
@@ -506,6 +508,7 @@ func (p *Project) ValidateLayout() error {
|
||||
default:
|
||||
failures = append(failures, fmt.Errorf("extract.hak_discovery %q is not supported", effective.Extract.HAKDiscovery))
|
||||
}
|
||||
failures = append(failures, validateGlobList("extract.archives", effective.Extract.Archives)...)
|
||||
if _, err := time.ParseDuration(effective.Autogen.Cache.MaxAge); err != nil {
|
||||
failures = append(failures, fmt.Errorf("autogen.cache.max_age must be a duration: %w", err))
|
||||
}
|
||||
@@ -963,6 +966,7 @@ func normalizeConfig(cfg *Config) {
|
||||
cfg.HAKs[i].Include = normalizeStringSlice(cfg.HAKs[i].Include)
|
||||
}
|
||||
cfg.Extract.IgnoreExtensions = normalizeStringSlice(cfg.Extract.IgnoreExtensions)
|
||||
cfg.Extract.Archives = normalizeStringSlice(cfg.Extract.Archives)
|
||||
for i := range cfg.Autogen.Producers {
|
||||
cfg.Autogen.Producers[i].Include = normalizeStringSlice(cfg.Autogen.Producers[i].Include)
|
||||
}
|
||||
|
||||
@@ -66,6 +66,12 @@ paths:
|
||||
if got, want := effective.Outputs.HAKManifest, "haks.json"; got != want {
|
||||
t.Fatalf("expected default HAK manifest %q, got %q", want, got)
|
||||
}
|
||||
if got, want := strings.Join(effective.Extract.Archives, ","), "testmod.mod"; got != want {
|
||||
t.Fatalf("expected default extract archives %q, got %q", want, got)
|
||||
}
|
||||
if effective.Extract.ConsumeArchives == nil || *effective.Extract.ConsumeArchives {
|
||||
t.Fatalf("expected default extract consume_archives false, got %#v", effective.Extract.ConsumeArchives)
|
||||
}
|
||||
if got, want := effective.TopData.PackageHAK, "sow_top.hak"; got != want {
|
||||
t.Fatalf("expected default topdata HAK %q, got %q", want, got)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user