cdk-factory 0.9.8__tar.gz → 0.9.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of cdk-factory might be problematic. Click here for more details.

Files changed (148) hide show
  1. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/PKG-INFO +1 -1
  2. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/pyproject.toml +1 -1
  3. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/app.py +49 -30
  4. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/file_operations.py +11 -0
  5. cdk_factory-0.9.9/src/cdk_factory/version.py +1 -0
  6. cdk_factory-0.9.8/src/cdk_factory/version.py +0 -1
  7. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/.gitignore +0 -0
  8. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/.windsurfrules +0 -0
  9. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/LICENSE +0 -0
  10. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/README.md +0 -0
  11. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/archive/README.md +0 -0
  12. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/archive/migrate_to_enhanced_ssm.py +0 -0
  13. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/examples/json-imports/README.md +0 -0
  14. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/examples/separate-api-gateway/README.md +0 -0
  15. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  16. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/examples/separate-api-gateway/config.json +0 -0
  17. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/examples/separate-api-gateway/lambda-stack.json +0 -0
  18. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/mypy.ini +0 -0
  19. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/publish_to_pypi.py +0 -0
  20. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/publish_to_pypi.sh +0 -0
  21. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/pysetup.py +0 -0
  22. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/pysetup.sh +0 -0
  23. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/requirements.dev.txt +0 -0
  24. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/requirements.tests.txt +0 -0
  25. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/requirements.txt +0 -0
  26. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/run-checks.sh +0 -0
  27. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/run-tests-clean-venv.sh +0 -0
  28. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/run-tests.sh +0 -0
  29. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/__init__.py +0 -0
  30. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/builds/README.md +0 -0
  31. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/cdk.json +0 -0
  32. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/cli.py +0 -0
  33. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/commands/command_loader.py +0 -0
  34. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/base_config.py +0 -0
  35. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/cdk_config.py +0 -0
  36. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/deployment.py +0 -0
  37. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  38. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/devops.py +0 -0
  39. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  40. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  41. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/management.py +0 -0
  42. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/pipeline.py +0 -0
  43. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  44. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  45. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  46. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  47. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  48. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  49. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  50. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  51. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  52. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  53. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  54. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/docker.py +0 -0
  55. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  56. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  57. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  58. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  59. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  60. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  61. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  62. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  63. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/rds.py +0 -0
  64. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  65. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  66. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  67. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/route53.py +0 -0
  68. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  69. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/rum.py +0 -0
  70. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/s3.py +0 -0
  71. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  72. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  73. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  74. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  75. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/stack.py +0 -0
  76. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/configurations/workload.py +0 -0
  77. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
  78. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  79. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  80. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  81. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  82. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  83. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  84. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  85. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  86. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  87. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  88. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  89. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/interfaces/istack.py +0 -0
  90. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  91. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  92. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/lambdas/health_handler.py +0 -0
  93. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/pipeline/path_utils.py +0 -0
  94. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  95. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/pipeline/security/policies.py +0 -0
  96. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/pipeline/security/roles.py +0 -0
  97. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/pipeline/stage.py +0 -0
  98. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack/istack.py +0 -0
  99. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack/stack_factory.py +0 -0
  100. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  101. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  102. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack/stack_modules.py +0 -0
  103. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/__init__.py +0 -0
  104. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  105. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  106. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  107. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  108. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  109. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  110. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  111. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  112. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  113. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  114. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  115. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  116. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  117. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  118. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  119. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  120. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  121. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  122. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  123. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  124. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  125. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  126. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  127. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  128. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  129. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/stack_base.py +0 -0
  130. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  131. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  132. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
  133. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  134. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/templates/README.md +0 -0
  135. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/templates/app.py.template +0 -0
  136. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/templates/cdk.json.template +0 -0
  137. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  138. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/commandline_args.py +0 -0
  139. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  140. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  141. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/environment_services.py +0 -0
  142. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/git_utilities.py +0 -0
  143. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  144. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  145. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utilities/os_execute.py +0 -0
  146. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  147. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/cdk_factory/workload/workload_factory.py +0 -0
  148. {cdk_factory-0.9.8 → cdk_factory-0.9.9}/src/handlers/test/handler.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.9.8
3
+ Version: 0.9.9
4
4
  Summary: CDK Factory. A QuickStarter and best practices setup for CDK projects
5
5
  Author-email: Eric Wilson <eric.wilson@geekcafe.com>
6
6
  License: MIT License
@@ -33,7 +33,7 @@ markers = [
33
33
  [project]
34
34
 
35
35
  name = "cdk_factory"
36
- version = "0.9.8"
36
+ version = "0.9.9"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -18,6 +18,7 @@ from aws_lambda_powertools import Logger
18
18
  from cdk_factory.utilities.commandline_args import CommandlineArgs
19
19
  from cdk_factory.workload.workload_factory import WorkloadFactory
20
20
  from cdk_factory.utilities.configuration_loader import ConfigurationLoader
21
+ from cdk_factory.utilities.file_operations import FileOperations
21
22
  from cdk_factory.version import __version__
22
23
 
23
24
 
@@ -36,36 +37,52 @@ class CdkAppFactory:
36
37
  ) -> None:
37
38
 
38
39
  self.args = args or CommandlineArgs()
39
- self.runtime_directory = runtime_directory or str(Path(__file__).parent)
40
+ self.runtime_directory = runtime_directory
40
41
  self.config_path: str | None = config_path
41
42
  self.add_env_context = add_env_context
42
43
  self._is_pipeline = is_pipeline
43
-
44
- # ALWAYS use /tmp/cdk-factory for consistent, predictable output location
45
- # This works in both local dev and CodeBuild environments
46
- CDK_FACTORY_BASE_DIR = "/tmp/cdk-factory"
47
-
48
- # Use outdir as a namespace directory (not full path)
49
- # This allows multiple projects/deployments to coexist without conflicts
50
- supplied_outdir = outdir or (self.args.outdir if hasattr(self.args, 'outdir') else None)
51
-
44
+
45
+ if not self.runtime_directory and auto_detect_project_root:
46
+ self.runtime_directory = FileOperations.caller_app_dir()
47
+
48
+ print(f"📂 Runtime directory: {self.runtime_directory}")
49
+
50
+ # Handle outdir - backward compatible with smart defaults
51
+ supplied_outdir = outdir or (
52
+ self.args.outdir if hasattr(self.args, "outdir") else None
53
+ )
54
+
52
55
  if supplied_outdir:
53
- # Extract just the directory name (not full path)
54
- namespace = os.path.basename(supplied_outdir.rstrip('/'))
55
- if not namespace or namespace in ('.', '..'):
56
- namespace = "default"
57
- self.outdir = f"{CDK_FACTORY_BASE_DIR}/{namespace}/cdk.out"
56
+ # If absolute path: use as-is (backward compatible)
57
+ if os.path.isabs(supplied_outdir):
58
+ self.outdir = supplied_outdir
59
+ else:
60
+ # If relative path/name: treat as namespace within /tmp/cdk-factory
61
+ namespace = supplied_outdir.rstrip("/")
62
+ if not namespace or namespace in (".", ".."):
63
+ namespace = "default"
64
+ # TODO: NOT SURE IF WE SHOULD DO THIS
65
+ self.outdir = f"/tmp/cdk-factory/{namespace}/cdk.out"
58
66
  else:
59
- # Default namespace
60
- self.outdir = f"{CDK_FACTORY_BASE_DIR}/cdk.out"
61
-
67
+ # Default: cdk.out relative to runtime_directory (where app.py lives)
68
+ # This ensures CDK CLI can find it when running via cdk.json
69
+ self.outdir = str(Path(self.runtime_directory) / "cdk.out")
70
+
71
+ # Env or CLI still win if you want to honor them:
72
+ env_out = os.getenv("CDK_OUTDIR")
73
+ if env_out:
74
+ self.outdir = os.path.abspath(env_out)
75
+ print(f"[cdk-factory] CDK_OUTDIR override -> {self.outdir}")
76
+
62
77
  # Clean and recreate directory for fresh synthesis
63
78
  if os.path.exists(self.outdir):
64
79
  shutil.rmtree(self.outdir)
65
80
  os.makedirs(self.outdir, exist_ok=True)
66
-
81
+
67
82
  self.app: aws_cdk.App = aws_cdk.App(outdir=self.outdir)
68
83
 
84
+ print(f"📂 CDK output directory: {self.outdir}")
85
+
69
86
  def synth(
70
87
  self,
71
88
  cdk_app_file: str | None = None,
@@ -79,10 +96,12 @@ class CdkAppFactory:
79
96
  """
80
97
 
81
98
  print(f"👋 Synthesizing CDK App from the cdk-factory version: {__version__}")
82
-
99
+
83
100
  # Log consistent output directory
84
101
  print(f"📂 CDK output directory: {self.outdir}")
85
- print(f" └─ Consistent location works in both local and CodeBuild environments")
102
+ print(
103
+ f" └─ Consistent location works in both local and CodeBuild environments"
104
+ )
86
105
 
87
106
  if not paths:
88
107
  paths = []
@@ -117,24 +136,24 @@ class CdkAppFactory:
117
136
  assembly: CloudAssembly = workload.synth()
118
137
 
119
138
  print("☁️ cloud assembly dir", assembly.directory)
120
-
139
+
121
140
  # Validate that the assembly directory exists and has files
122
141
  self._validate_synth_output(assembly)
123
142
 
124
143
  return assembly
125
-
144
+
126
145
  def _validate_synth_output(self, assembly: CloudAssembly) -> None:
127
146
  """
128
147
  Validate that CDK synthesis actually created the expected files.
129
-
148
+
130
149
  Args:
131
150
  assembly: The CloudAssembly returned from synth
132
-
151
+
133
152
  Raises:
134
153
  RuntimeError: If the output directory doesn't exist or is empty
135
154
  """
136
155
  assembly_dir = Path(assembly.directory)
137
-
156
+
138
157
  # Check if directory exists
139
158
  if not assembly_dir.exists():
140
159
  raise RuntimeError(
@@ -143,7 +162,7 @@ class CdkAppFactory:
143
162
  f" Configured outdir: {self.outdir}\n"
144
163
  f" Current directory: {os.getcwd()}"
145
164
  )
146
-
165
+
147
166
  # Check if directory has files
148
167
  files = list(assembly_dir.iterdir())
149
168
  if not files:
@@ -152,7 +171,7 @@ class CdkAppFactory:
152
171
  f" Directory: {assembly_dir}\n"
153
172
  f" This usually means CDK failed to write files."
154
173
  )
155
-
174
+
156
175
  # Check for manifest.json (key CDK file)
157
176
  manifest = assembly_dir / "manifest.json"
158
177
  if not manifest.exists():
@@ -162,13 +181,13 @@ class CdkAppFactory:
162
181
  f" Files found: {[f.name for f in files]}\n"
163
182
  f" CDK may have failed during synthesis."
164
183
  )
165
-
184
+
166
185
  # Success - log details
167
186
  print(f"✅ CDK synthesis successful!")
168
187
  print(f" └─ Output directory: {assembly_dir}")
169
188
  print(f" └─ Files created: {len(files)}")
170
189
  print(f" └─ Stacks: {len(assembly.stacks)}")
171
-
190
+
172
191
  # Log stack names
173
192
  if assembly.stacks:
174
193
  stack_names = [stack.stack_name for stack in assembly.stacks]
@@ -6,6 +6,7 @@ MIT License. See Project Root for the license information.
6
6
 
7
7
  import os
8
8
  import shutil
9
+ import inspect
9
10
  import zipfile
10
11
  from typing import List
11
12
  from pathlib import Path
@@ -277,3 +278,13 @@ class FileOperations:
277
278
  return sub_dir
278
279
 
279
280
  return None
281
+
282
+ @staticmethod
283
+ def caller_app_dir(default: str = ".") -> str:
284
+ # frame[0] is this function; frame[1] is the factory; frame[2] should be app.py
285
+ for frame_info in inspect.stack():
286
+ # first non-package frame likely belongs to app.py
287
+ candidate = os.path.abspath(os.path.dirname(frame_info.filename))
288
+ if "site-packages" not in candidate and "dist-packages" not in candidate:
289
+ return candidate
290
+ return os.path.abspath(default)
@@ -0,0 +1 @@
1
+ __version__ = "0.9.9"
@@ -1 +0,0 @@
1
- __version__ = "0.9.8"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes