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