@@ -127,7 +127,7 @@ var (
127127 printVersion bool
128128)
129129
130- // The version of pkl-gen-go.
130+ // The Version of pkl-gen-go.
131131//
132132// This gets replaced by ldflags when built through CI,
133133// or by init when installed via go install.
@@ -230,21 +230,26 @@ func (args *cliArgs) parse(arguments []string) error {
230230 return nil
231231}
232232
233+ // Translates the cli arguments to an configuration closure for the evaluator evaluating `generator-settings.pkl`.
234+ func (args * cliArgs ) loadGeneratorSettingsOptions () func (opts * pkl.EvaluatorOptions ) {
235+ return func (opts * pkl.EvaluatorOptions ) {
236+ if args .cacheDir != "" {
237+ opts .CacheDir = args .cacheDir
238+ }
239+ }
240+ }
241+
233242// Loads the settings for controlling codegen.
234243// Uses a Pkl evaluator that is separate from what's used for actually running codegen.
235244func (args * cliArgs ) loadGeneratorSettings () (* generatorsettings.GeneratorSettings , error ) {
236245 projectDir := findProjectDir (args .projectDir )
237246 var evaluator pkl.Evaluator
238247 var err error
239- opts := func (opts * pkl.EvaluatorOptions ) {
240- if args .cacheDir != "" {
241- opts .CacheDir = args .cacheDir
242- }
243- }
248+
244249 if projectDir != "" {
245- evaluator , err = pkl .NewProjectEvaluator (context .Background (), projectDir , pkl .PreconfiguredOptions , opts )
250+ evaluator , err = pkl .NewProjectEvaluator (context .Background (), projectDir , pkl .PreconfiguredOptions , args . loadGeneratorSettingsOptions () )
246251 } else {
247- evaluator , err = pkl .NewEvaluator (context .Background (), pkl .PreconfiguredOptions , opts )
252+ evaluator , err = pkl .NewEvaluator (context .Background (), pkl .PreconfiguredOptions , args . loadGeneratorSettingsOptions () )
248253 }
249254 if err != nil {
250255 panic (err )
@@ -296,11 +301,8 @@ func (args *cliArgs) resolvePrecedence(settings *generatorsettings.GeneratorSett
296301 * settings .ProjectDir = args .projectDir
297302 }
298303 if args .cacheDir != "" {
299- normalized , err := filepath .Abs (args .cacheDir )
300- if err != nil {
301- return err
302- }
303- settings .CacheDir = & normalized
304+ // Not normalized to absolute path, for hermetic build systems
305+ settings .CacheDir = & args .cacheDir
304306 }
305307 settings .DryRun = args .dryRun
306308 return nil
0 commit comments