on master help sign in
Make injectibleConfig much more restrictive about what is included in a frontend or mobile app
05529a6Elliot Cameron
default.nix+11−5
@@ -257,16 +257,22 @@ in rec {
257 ${self.backendName} = haskellLib.addBuildDepend super'.${self.backendName} self'.obelisk-run;
257 ${self.backendName} = haskellLib.addBuildDepend super'.${self.backendName} self'.obelisk-run;
258 };
258 };
259 totalOverrides = lib.composeExtensions self.projectOverrides self.userSettings.overrides;
259 totalOverrides = lib.composeExtensions self.projectOverrides self.userSettings.overrides;
260− privateConfigDirs = ["config/backend"];
260+
261+
262+ allowedConfigDirs = ["config/backend" "config/common" "config/frontend"];
263+ nonPrivateConfigDirs = ["config/common" "config/frontend"];
261− injectableConfig = builtins.filterSource (path: _:
264+ injectableConfig = base: builtins.filterSource (path: _:
262− !(lib.lists.any (x: hasPrefix (toString self.base + "/" + toString x) (toString path)) self.privateConfigDirs)
265+ let pathIsInAny = lib.lists.any (x: hasPrefix (toString base + "/" + toString x) (toString path));
266+ in if !pathIsInAny self.allowedConfigDirs
267+ then throw "Path is not in a valid config directory ${path}. Valid config directories are: ${lib.concatStringsSep ", " self.allowedConfigDirs}"
268+ else pathIsInAny self.nonPrivateConfigDirs
263 );
269 );
264 __androidWithConfig = configPath: {
270 __androidWithConfig = configPath: {
265 ${if self.userSettings.android == null then null else self.frontendName} = {
271 ${if self.userSettings.android == null then null else self.frontendName} = {
266 executableName = "frontend";
272 executableName = "frontend";
267 ${if builtins.pathExists self.userSettings.staticFiles then "assets" else null} =
273 ${if builtins.pathExists self.userSettings.staticFiles then "assets" else null} =
268 nixpkgs.obeliskExecutableConfig.platforms.android.inject
274 nixpkgs.obeliskExecutableConfig.platforms.android.inject
269− (self.injectableConfig configPath)
275+ (self.injectableConfig (builtins.dirOf configPath) configPath)
270 self.processedStatic.symlinked;
276 self.processedStatic.symlinked;
271 } // self.userSettings.android;
277 } // self.userSettings.android;
272 };
278 };
@@ -275,7 +281,7 @@ in rec {
275 executableName = "frontend";
281 executableName = "frontend";
276 ${if builtins.pathExists self.userSettings.staticFiles then "staticSrc" else null} =
282 ${if builtins.pathExists self.userSettings.staticFiles then "staticSrc" else null} =
277 nixpkgs.obeliskExecutableConfig.platforms.ios.inject
283 nixpkgs.obeliskExecutableConfig.platforms.ios.inject
278− (self.injectableConfig configPath)
284+ (self.injectableConfig (builtins.dirOf configPath) configPath)
279 self.processedStatic.symlinked;
285 self.processedStatic.symlinked;
280 } // self.userSettings.ios;
286 } // self.userSettings.ios;
281 };
287 };