cdk-factory 0.9.0__tar.gz → 0.9.2__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.
Files changed (147) hide show
  1. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/PKG-INFO +1 -1
  2. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/pyproject.toml +1 -1
  3. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/app.py +74 -41
  4. cdk_factory-0.9.2/src/cdk_factory/version.py +1 -0
  5. cdk_factory-0.9.0/src/cdk_factory/version.py +0 -1
  6. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/.gitignore +0 -0
  7. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/.windsurfrules +0 -0
  8. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/LICENSE +0 -0
  9. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/README.md +0 -0
  10. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/archive/README.md +0 -0
  11. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/archive/migrate_to_enhanced_ssm.py +0 -0
  12. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/examples/json-imports/README.md +0 -0
  13. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/examples/separate-api-gateway/README.md +0 -0
  14. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  15. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/examples/separate-api-gateway/config.json +0 -0
  16. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/examples/separate-api-gateway/lambda-stack.json +0 -0
  17. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/mypy.ini +0 -0
  18. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/publish_to_pypi.py +0 -0
  19. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/publish_to_pypi.sh +0 -0
  20. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/pysetup.py +0 -0
  21. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/pysetup.sh +0 -0
  22. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/requirements.dev.txt +0 -0
  23. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/requirements.tests.txt +0 -0
  24. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/requirements.txt +0 -0
  25. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/run-checks.sh +0 -0
  26. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/run-tests-clean-venv.sh +0 -0
  27. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/run-tests.sh +0 -0
  28. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/__init__.py +0 -0
  29. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/builds/README.md +0 -0
  30. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/cdk.json +0 -0
  31. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/cli.py +0 -0
  32. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/commands/command_loader.py +0 -0
  33. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/base_config.py +0 -0
  34. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/cdk_config.py +0 -0
  35. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/deployment.py +0 -0
  36. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  37. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/devops.py +0 -0
  38. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  39. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  40. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/management.py +0 -0
  41. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/pipeline.py +0 -0
  42. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  43. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  44. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  45. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  46. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  47. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  48. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  49. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  50. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  51. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  52. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  53. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/docker.py +0 -0
  54. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  55. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  56. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  57. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  58. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  59. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  60. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  61. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  62. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/rds.py +0 -0
  63. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  64. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  65. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  66. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/route53.py +0 -0
  67. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  68. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/rum.py +0 -0
  69. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/s3.py +0 -0
  70. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  71. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  72. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  73. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  74. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/stack.py +0 -0
  75. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/configurations/workload.py +0 -0
  76. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
  77. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  78. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  79. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  80. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  81. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  82. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  83. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  84. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  85. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  86. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  87. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  88. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/interfaces/istack.py +0 -0
  89. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  90. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  91. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/lambdas/health_handler.py +0 -0
  92. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  93. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/pipeline/security/policies.py +0 -0
  94. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/pipeline/security/roles.py +0 -0
  95. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/pipeline/stage.py +0 -0
  96. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack/istack.py +0 -0
  97. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack/stack_factory.py +0 -0
  98. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  99. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  100. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack/stack_modules.py +0 -0
  101. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/__init__.py +0 -0
  102. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  103. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  104. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  105. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  106. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  107. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  108. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  109. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  110. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  111. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  112. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  113. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  114. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  115. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  116. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  117. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  118. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  119. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  120. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  121. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  122. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  123. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  124. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  125. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  126. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  127. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/stack_base.py +0 -0
  128. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  129. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  130. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
  131. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  132. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/templates/README.md +0 -0
  133. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/templates/app.py.template +0 -0
  134. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/templates/cdk.json.template +0 -0
  135. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  136. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/commandline_args.py +0 -0
  137. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  138. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  139. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/environment_services.py +0 -0
  140. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/file_operations.py +0 -0
  141. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/git_utilities.py +0 -0
  142. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  143. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  144. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utilities/os_execute.py +0 -0
  145. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  146. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/src/cdk_factory/workload/workload_factory.py +0 -0
  147. {cdk_factory-0.9.0 → cdk_factory-0.9.2}/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.0
3
+ Version: 0.9.2
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.0"
36
+ version = "0.9.2"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -37,18 +37,13 @@ class CdkAppFactory:
37
37
 
38
38
  # Auto-detect outdir for CodeBuild compatibility
39
39
  if outdir is None and self.args.outdir is None and auto_detect_project_root:
40
- # Always detect project root first
41
- project_root = self._detect_project_root()
42
-
43
- # Check if we're in CodeBuild or building a pipeline
40
+ # Check if we're in CodeBuild
44
41
  in_codebuild = bool(os.getenv('CODEBUILD_SRC_DIR'))
45
42
 
46
- # Auto-detect if this is a pipeline deployment by checking config
47
- is_pipeline_deployment = is_pipeline or self._check_if_pipeline_deployment(config_path)
48
-
49
- if in_codebuild or is_pipeline_deployment:
50
- # For pipelines, calculate relative path from runtime_directory to project_root/cdk.out
51
- # This ensures cdk.out is always at project root, even when app.py is in subdirectory
43
+ if in_codebuild or is_pipeline:
44
+ # For CodeBuild or explicit pipeline flag: calculate relative path to project_root/cdk.out
45
+ # This ensures cdk.out is at project root and works in CodeBuild
46
+ project_root = self._detect_project_root()
52
47
  runtime_path = Path(self.runtime_directory).resolve()
53
48
  project_path = Path(project_root).resolve()
54
49
  cdk_out_path = project_path / 'cdk.out'
@@ -60,13 +55,14 @@ class CdkAppFactory:
60
55
  if in_codebuild:
61
56
  print(f"📦 CodeBuild detected: using relative path '{relative_path}'")
62
57
  else:
63
- print(f"📦 Pipeline deployment detected: using relative path '{relative_path}'")
58
+ print(f"📦 Pipeline mode: using relative path '{relative_path}'")
64
59
  except ValueError:
65
60
  # If paths are on different drives (Windows), fallback to absolute
66
61
  self.outdir = str(cdk_out_path)
67
62
  else:
68
- # For local dev, use absolute path at project root
69
- self.outdir = os.path.join(project_root, 'cdk.out')
63
+ # For local dev: use CDK default (./cdk.out in current directory)
64
+ # This allows CDK CLI to find it when running 'cdk synth' or 'cdk deploy'
65
+ self.outdir = None
70
66
  else:
71
67
  self.outdir = outdir or self.args.outdir
72
68
 
@@ -85,6 +81,16 @@ class CdkAppFactory:
85
81
  """
86
82
 
87
83
  print(f"👋 Synthesizing CDK App from the cdk-factory version: {__version__}")
84
+
85
+ # Log outdir configuration
86
+ if self.outdir:
87
+ resolved_outdir = str(Path(self.outdir).resolve()) if not os.path.isabs(self.outdir) else self.outdir
88
+ print(f"📂 CDK output directory configured: {self.outdir}")
89
+ if not os.path.isabs(self.outdir):
90
+ print(f" └─ Resolves to: {resolved_outdir}")
91
+ else:
92
+ print(f"📂 CDK output directory: using CDK default (./cdk.out in current directory)")
93
+ print(f" └─ Current directory: {os.getcwd()}")
88
94
 
89
95
  if not paths:
90
96
  paths = []
@@ -119,8 +125,63 @@ class CdkAppFactory:
119
125
  assembly: CloudAssembly = workload.synth()
120
126
 
121
127
  print("☁️ cloud assembly dir", assembly.directory)
128
+
129
+ # Validate that the assembly directory exists and has files
130
+ self._validate_synth_output(assembly)
122
131
 
123
132
  return assembly
133
+
134
+ def _validate_synth_output(self, assembly: CloudAssembly) -> None:
135
+ """
136
+ Validate that CDK synthesis actually created the expected files.
137
+
138
+ Args:
139
+ assembly: The CloudAssembly returned from synth
140
+
141
+ Raises:
142
+ RuntimeError: If the output directory doesn't exist or is empty
143
+ """
144
+ assembly_dir = Path(assembly.directory)
145
+
146
+ # Check if directory exists
147
+ if not assembly_dir.exists():
148
+ raise RuntimeError(
149
+ f"❌ CDK synthesis failed: Output directory does not exist!\n"
150
+ f" Expected: {assembly_dir}\n"
151
+ f" Configured outdir: {self.outdir}\n"
152
+ f" Current directory: {os.getcwd()}"
153
+ )
154
+
155
+ # Check if directory has files
156
+ files = list(assembly_dir.iterdir())
157
+ if not files:
158
+ raise RuntimeError(
159
+ f"❌ CDK synthesis failed: Output directory is empty!\n"
160
+ f" Directory: {assembly_dir}\n"
161
+ f" This usually means CDK failed to write files."
162
+ )
163
+
164
+ # Check for manifest.json (key CDK file)
165
+ manifest = assembly_dir / "manifest.json"
166
+ if not manifest.exists():
167
+ raise RuntimeError(
168
+ f"❌ CDK synthesis incomplete: manifest.json not found!\n"
169
+ f" Directory: {assembly_dir}\n"
170
+ f" Files found: {[f.name for f in files]}\n"
171
+ f" CDK may have failed during synthesis."
172
+ )
173
+
174
+ # Success - log details
175
+ print(f"✅ CDK synthesis successful!")
176
+ print(f" └─ Output directory: {assembly_dir}")
177
+ print(f" └─ Files created: {len(files)}")
178
+ print(f" └─ Stacks: {len(assembly.stacks)}")
179
+
180
+ # Log stack names
181
+ if assembly.stacks:
182
+ stack_names = [stack.stack_name for stack in assembly.stacks]
183
+ for stack_name in stack_names:
184
+ print(f" • {stack_name}")
124
185
 
125
186
  def _detect_project_root(self) -> str:
126
187
  """
@@ -186,34 +247,6 @@ class CdkAppFactory:
186
247
  # Priority 4: Fallback to runtime_directory
187
248
  return str(current)
188
249
 
189
- def _check_if_pipeline_deployment(self, config_path: str | None) -> bool:
190
- """
191
- Check if the configuration includes pipeline deployments with CI/CD enabled.
192
- Returns True if pipelines are detected, False otherwise.
193
- """
194
- if not config_path or not os.path.exists(config_path):
195
- return False
196
-
197
- try:
198
- import json
199
- with open(config_path, 'r') as f:
200
- config = json.load(f)
201
-
202
- # Check for workload.deployments with CI/CD enabled
203
- workload = config.get('workload', {})
204
- deployments = workload.get('deployments', [])
205
-
206
- for deployment in deployments:
207
- devops = deployment.get('devops', {})
208
- ci_cd = devops.get('ci_cd', {})
209
- if ci_cd.get('enabled', False):
210
- return True
211
-
212
- return False
213
- except:
214
- # If we can't read/parse the config, assume not a pipeline
215
- return False
216
-
217
250
 
218
251
  if __name__ == "__main__":
219
252
  # deploy_test()
@@ -0,0 +1 @@
1
+ __version__ = "0.9.2"
@@ -1 +0,0 @@
1
- __version__ = "0.9.0"
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