projen 0.81.17__py3-none-any.whl → 0.98.25__py3-none-any.whl

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.
projen/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
- '''
1
+ r'''
2
2
  <p align="center">
3
3
  <a href="https://projen.io">
4
4
  <img src="https://raw.githubusercontent.com/projen/projen/main/logo/projen.svg">
@@ -286,14 +286,6 @@ projen has an unofficial [VS Code extension](https://marketplace.visualstudio.co
286
286
  The projen community can be found within the #projen channel in the [cdk.dev](https://cdk.dev/)
287
287
  community Slack workspace.
288
288
 
289
- ### Virtual Meetup
290
-
291
- * Thursday June 30, 2022
292
- * 1-2pm America/New_York (EDT)
293
- * [CFP](https://bit.ly/3NEc0UQ) a Google Form
294
- * CFP Closes Saturday April 30, 2022
295
- * Hosted on [Zoom](https://zoom.us/j/92399854777?pwd=OUZybHlobHNoZUs1VVordWhaRTVGdz09#success)
296
-
297
289
  ## Contributions
298
290
 
299
291
  Contributions of all kinds are welcome! Check out our [contributor's
@@ -304,8 +296,8 @@ For a quick start, check out a development environment:
304
296
  ```bash
305
297
  $ git clone git@github.com:projen/projen
306
298
  $ cd projen
307
- $ yarn
308
- $ yarn watch # compile in the background
299
+ $ npm ci
300
+ $ npm run watch # compile in the background
309
301
  ```
310
302
 
311
303
  Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
@@ -585,13 +577,185 @@ import jsii
585
577
  import publication
586
578
  import typing_extensions
587
579
 
588
- from typeguard import check_type
580
+ import typeguard
581
+ from importlib.metadata import version as _metadata_package_version
582
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
583
+
584
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
585
+ if TYPEGUARD_MAJOR_VERSION <= 2:
586
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
587
+ else:
588
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
589
+ pass
590
+ else:
591
+ if TYPEGUARD_MAJOR_VERSION == 3:
592
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
593
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
594
+ else:
595
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
589
596
 
590
597
  from ._jsii import *
591
598
 
592
599
  import constructs as _constructs_77d1e7e8
593
600
 
594
601
 
602
+ @jsii.enum(jsii_type="projen.AiAgent")
603
+ class AiAgent(enum.Enum):
604
+ '''(experimental) Supported AI coding assistants and their instruction file locations.
605
+
606
+ :stability: experimental
607
+ '''
608
+
609
+ GITHUB_COPILOT = "GITHUB_COPILOT"
610
+ '''(experimental) GitHub Copilot - .github/copilot-instructions.md.
611
+
612
+ :stability: experimental
613
+ '''
614
+ CURSOR = "CURSOR"
615
+ '''(experimental) Cursor IDE - .cursor/rules/project.md.
616
+
617
+ :stability: experimental
618
+ '''
619
+ CLAUDE = "CLAUDE"
620
+ '''(experimental) Claude Code - CLAUDE.md.
621
+
622
+ :stability: experimental
623
+ '''
624
+ AMAZON_Q = "AMAZON_Q"
625
+ '''(experimental) Amazon Q - .amazonq/rules/project.md.
626
+
627
+ :stability: experimental
628
+ '''
629
+ KIRO = "KIRO"
630
+ '''(experimental) Kiro - .kiro/steering/project.md.
631
+
632
+ :stability: experimental
633
+ '''
634
+ CODEX = "CODEX"
635
+ '''(experimental) OpenAI Codex - AGENTS.md.
636
+
637
+ :stability: experimental
638
+ '''
639
+
640
+
641
+ @jsii.data_type(
642
+ jsii_type="projen.AiInstructionsOptions",
643
+ jsii_struct_bases=[],
644
+ name_mapping={
645
+ "agents": "agents",
646
+ "agent_specific_instructions": "agentSpecificInstructions",
647
+ "include_default_instructions": "includeDefaultInstructions",
648
+ "instructions": "instructions",
649
+ },
650
+ )
651
+ class AiInstructionsOptions:
652
+ def __init__(
653
+ self,
654
+ *,
655
+ agents: typing.Optional[typing.Sequence[AiAgent]] = None,
656
+ agent_specific_instructions: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[builtins.str]]] = None,
657
+ include_default_instructions: typing.Optional[builtins.bool] = None,
658
+ instructions: typing.Optional[typing.Sequence[builtins.str]] = None,
659
+ ) -> None:
660
+ '''(experimental) Options for configuring AI tool instruction files.
661
+
662
+ :param agents: (experimental) Which AI agents to generate instruction files for. Default: - All agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR, AiAgent.CLAUDE, AiAgent.AMAZON_Q, AiAgent.KIRO, AiAgent.CODEX]
663
+ :param agent_specific_instructions: (experimental) Per-agent custom instructions. Allows different instructions for different AI tools. Default: - no agent specific instructions
664
+ :param include_default_instructions: (experimental) Include default instructions for projen and general best practices. Default instructions will only be included for agents provided in the ``agents`` option. If ``agents`` is not provided, default instructions will be included for all agents. Default: true
665
+ :param instructions: (experimental) General instructions applicable to all agents. Default: - no agent specific instructions
666
+
667
+ :stability: experimental
668
+ '''
669
+ if __debug__:
670
+ type_hints = typing.get_type_hints(_typecheckingstub__5bf7714efdf83cf2031e4ef3aa1d0cb9511cb921777751c76a0f501c0c56e247)
671
+ check_type(argname="argument agents", value=agents, expected_type=type_hints["agents"])
672
+ check_type(argname="argument agent_specific_instructions", value=agent_specific_instructions, expected_type=type_hints["agent_specific_instructions"])
673
+ check_type(argname="argument include_default_instructions", value=include_default_instructions, expected_type=type_hints["include_default_instructions"])
674
+ check_type(argname="argument instructions", value=instructions, expected_type=type_hints["instructions"])
675
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
676
+ if agents is not None:
677
+ self._values["agents"] = agents
678
+ if agent_specific_instructions is not None:
679
+ self._values["agent_specific_instructions"] = agent_specific_instructions
680
+ if include_default_instructions is not None:
681
+ self._values["include_default_instructions"] = include_default_instructions
682
+ if instructions is not None:
683
+ self._values["instructions"] = instructions
684
+
685
+ @builtins.property
686
+ def agents(self) -> typing.Optional[typing.List[AiAgent]]:
687
+ '''(experimental) Which AI agents to generate instruction files for.
688
+
689
+ :default: - All agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR, AiAgent.CLAUDE, AiAgent.AMAZON_Q, AiAgent.KIRO, AiAgent.CODEX]
690
+
691
+ :stability: experimental
692
+ '''
693
+ result = self._values.get("agents")
694
+ return typing.cast(typing.Optional[typing.List[AiAgent]], result)
695
+
696
+ @builtins.property
697
+ def agent_specific_instructions(
698
+ self,
699
+ ) -> typing.Optional[typing.Mapping[builtins.str, typing.List[builtins.str]]]:
700
+ '''(experimental) Per-agent custom instructions.
701
+
702
+ Allows different instructions for different AI tools.
703
+
704
+ :default: - no agent specific instructions
705
+
706
+ :stability: experimental
707
+
708
+ Example::
709
+
710
+ {
711
+ [AiAgent.GITHUB_COPILOT]: {
712
+ instructions: ["Use descriptive commit messages."]
713
+ },
714
+ [AiAgent.CURSOR]: {
715
+ instructions: ["Prefer functional patterns.", "Always add tests."]
716
+ }
717
+ }
718
+ '''
719
+ result = self._values.get("agent_specific_instructions")
720
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, typing.List[builtins.str]]], result)
721
+
722
+ @builtins.property
723
+ def include_default_instructions(self) -> typing.Optional[builtins.bool]:
724
+ '''(experimental) Include default instructions for projen and general best practices.
725
+
726
+ Default instructions will only be included for agents provided in the ``agents`` option.
727
+ If ``agents`` is not provided, default instructions will be included for all agents.
728
+
729
+ :default: true
730
+
731
+ :stability: experimental
732
+ '''
733
+ result = self._values.get("include_default_instructions")
734
+ return typing.cast(typing.Optional[builtins.bool], result)
735
+
736
+ @builtins.property
737
+ def instructions(self) -> typing.Optional[typing.List[builtins.str]]:
738
+ '''(experimental) General instructions applicable to all agents.
739
+
740
+ :default: - no agent specific instructions
741
+
742
+ :stability: experimental
743
+ '''
744
+ result = self._values.get("instructions")
745
+ return typing.cast(typing.Optional[typing.List[builtins.str]], result)
746
+
747
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
748
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
749
+
750
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
751
+ return not (rhs == self)
752
+
753
+ def __repr__(self) -> str:
754
+ return "AiInstructionsOptions(%s)" % ", ".join(
755
+ k + "=" + repr(v) for k, v in self._values.items()
756
+ )
757
+
758
+
595
759
  class Component(
596
760
  _constructs_77d1e7e8.Construct,
597
761
  metaclass=jsii.JSIIMeta,
@@ -895,6 +1059,33 @@ class Dependencies(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.Depende
895
1059
  check_type(argname="argument type", value=type, expected_type=type_hints["type"])
896
1060
  return typing.cast("Dependency", jsii.invoke(self, "getDependency", [name, type]))
897
1061
 
1062
+ @jsii.member(jsii_name="isDependencySatisfied")
1063
+ def is_dependency_satisfied(
1064
+ self,
1065
+ name: builtins.str,
1066
+ type: "DependencyType",
1067
+ expected_range: builtins.str,
1068
+ ) -> builtins.bool:
1069
+ '''(experimental) Checks if an existing dependency satisfies a dependency requirement.
1070
+
1071
+ :param name: The name of the dependency to check (without the version).
1072
+ :param type: The dependency type.
1073
+ :param expected_range: The version constraint to check (e.g. ``^3.4.0``). The constraint of the dependency must be a subset of the expected range to satisfy the requirements.
1074
+
1075
+ :return:
1076
+
1077
+ ``true`` if the dependency exists and its version satisfies the provided constraint. ``false`` otherwise.
1078
+ Notably returns ``false`` if a dependency exists, but has no version.
1079
+
1080
+ :stability: experimental
1081
+ '''
1082
+ if __debug__:
1083
+ type_hints = typing.get_type_hints(_typecheckingstub__628e50591481575ad249671e7cf61edd1bb37d5aeab5e143a0783051e3167dcc)
1084
+ check_type(argname="argument name", value=name, expected_type=type_hints["name"])
1085
+ check_type(argname="argument type", value=type, expected_type=type_hints["type"])
1086
+ check_type(argname="argument expected_range", value=expected_range, expected_type=type_hints["expected_range"])
1087
+ return typing.cast(builtins.bool, jsii.invoke(self, "isDependencySatisfied", [name, type, expected_range]))
1088
+
898
1089
  @jsii.member(jsii_name="removeDependency")
899
1090
  def remove_dependency(
900
1091
  self,
@@ -2588,6 +2779,35 @@ class DockerComposeVolumeMount:
2588
2779
  )
2589
2780
 
2590
2781
 
2782
+ @jsii.enum(jsii_type="projen.EndOfLine")
2783
+ class EndOfLine(enum.Enum):
2784
+ '''(experimental) The end of line characters supported by git.
2785
+
2786
+ :stability: experimental
2787
+ '''
2788
+
2789
+ AUTO = "AUTO"
2790
+ '''(experimental) Maintain existing (mixed values within one file are normalised by looking at what's used after the first line).
2791
+
2792
+ :stability: experimental
2793
+ '''
2794
+ CRLF = "CRLF"
2795
+ '''(experimental) Carriage Return + Line Feed characters (\\r\\n), common on Windows.
2796
+
2797
+ :stability: experimental
2798
+ '''
2799
+ LF = "LF"
2800
+ '''(experimental) Line Feed only (\\n), common on Linux and macOS as well as inside git repos.
2801
+
2802
+ :stability: experimental
2803
+ '''
2804
+ NONE = "NONE"
2805
+ '''(experimental) Disable and do not configure the end of line character.
2806
+
2807
+ :stability: experimental
2808
+ '''
2809
+
2810
+
2591
2811
  class FileBase(
2592
2812
  Component,
2593
2813
  metaclass=jsii.JSIIAbstractClass,
@@ -2713,7 +2933,7 @@ class FileBase(
2713
2933
  if __debug__:
2714
2934
  type_hints = typing.get_type_hints(_typecheckingstub__3fed3e4c76496e254ef32ce4556e7e1b3b0cef6929de044486dda20248a06c4d)
2715
2935
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
2716
- jsii.set(self, "executable", value)
2936
+ jsii.set(self, "executable", value) # pyright: ignore[reportArgumentType]
2717
2937
 
2718
2938
  @builtins.property
2719
2939
  @jsii.member(jsii_name="readonly")
@@ -2729,7 +2949,7 @@ class FileBase(
2729
2949
  if __debug__:
2730
2950
  type_hints = typing.get_type_hints(_typecheckingstub__c20fcd33148f053d9de2f2152439cc9f0687a0e328bf05cb8b38721095832ea5)
2731
2951
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
2732
- jsii.set(self, "readonly", value)
2952
+ jsii.set(self, "readonly", value) # pyright: ignore[reportArgumentType]
2733
2953
 
2734
2954
 
2735
2955
  class _FileBaseProxy(FileBase):
@@ -2886,16 +3106,24 @@ class GitAttributesFile(
2886
3106
  :stability: experimental
2887
3107
  '''
2888
3108
 
2889
- def __init__(self, scope: _constructs_77d1e7e8.IConstruct) -> None:
3109
+ def __init__(
3110
+ self,
3111
+ scope: _constructs_77d1e7e8.IConstruct,
3112
+ *,
3113
+ end_of_line: typing.Optional[EndOfLine] = None,
3114
+ ) -> None:
2890
3115
  '''
2891
3116
  :param scope: -
3117
+ :param end_of_line: (experimental) The default end of line character for text files. endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations. Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters. It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line. Can be disabled by setting explicitly: ``{ endOfLine: EndOfLine.NONE }``. Default: EndOfLine.LF
2892
3118
 
2893
3119
  :stability: experimental
2894
3120
  '''
2895
3121
  if __debug__:
2896
3122
  type_hints = typing.get_type_hints(_typecheckingstub__a914753a9db7cc6bfa6a166cf7ee02794375210a09b1d8e2c62496abf14b4d21)
2897
3123
  check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
2898
- jsii.create(self.__class__, self, [scope])
3124
+ options = GitAttributesFileOptions(end_of_line=end_of_line)
3125
+
3126
+ jsii.create(self.__class__, self, [scope, options])
2899
3127
 
2900
3128
  @jsii.member(jsii_name="addAttributes")
2901
3129
  def add_attributes(self, glob: builtins.str, *attributes: builtins.str) -> None:
@@ -2933,6 +3161,23 @@ class GitAttributesFile(
2933
3161
  '''
2934
3162
  return typing.cast(None, jsii.invoke(self, "preSynthesize", []))
2935
3163
 
3164
+ @jsii.member(jsii_name="removeAttributes")
3165
+ def remove_attributes(self, glob: builtins.str, *attributes: builtins.str) -> None:
3166
+ '''(experimental) Removes attributes from a set of files.
3167
+
3168
+ If no attributes are provided, the glob pattern will be removed completely.
3169
+
3170
+ :param glob: Glob pattern to modify.
3171
+ :param attributes: Attributes to remove from matched files.
3172
+
3173
+ :stability: experimental
3174
+ '''
3175
+ if __debug__:
3176
+ type_hints = typing.get_type_hints(_typecheckingstub__573b65747d3cd070f990730baa2e2b06016818d32122c7fbc2696b8513582a7d)
3177
+ check_type(argname="argument glob", value=glob, expected_type=type_hints["glob"])
3178
+ check_type(argname="argument attributes", value=attributes, expected_type=typing.Tuple[type_hints["attributes"], ...]) # pyright: ignore [reportGeneralTypeIssues]
3179
+ return typing.cast(None, jsii.invoke(self, "removeAttributes", [glob, *attributes]))
3180
+
2936
3181
  @jsii.member(jsii_name="synthesizeContent")
2937
3182
  def _synthesize_content(self, _: "IResolver") -> typing.Optional[builtins.str]:
2938
3183
  '''(experimental) Implemented by derived classes and returns the contents of the file to emit.
@@ -2946,6 +3191,15 @@ class GitAttributesFile(
2946
3191
  check_type(argname="argument _", value=_, expected_type=type_hints["_"])
2947
3192
  return typing.cast(typing.Optional[builtins.str], jsii.invoke(self, "synthesizeContent", [_]))
2948
3193
 
3194
+ @builtins.property
3195
+ @jsii.member(jsii_name="endOfLine")
3196
+ def end_of_line(self) -> EndOfLine:
3197
+ '''(experimental) The default end of line character for text files.
3198
+
3199
+ :stability: experimental
3200
+ '''
3201
+ return typing.cast(EndOfLine, jsii.get(self, "endOfLine"))
3202
+
2949
3203
  @builtins.property
2950
3204
  @jsii.member(jsii_name="hasLfsPatterns")
2951
3205
  def has_lfs_patterns(self) -> builtins.bool:
@@ -2956,30 +3210,96 @@ class GitAttributesFile(
2956
3210
  return typing.cast(builtins.bool, jsii.get(self, "hasLfsPatterns"))
2957
3211
 
2958
3212
 
3213
+ @jsii.data_type(
3214
+ jsii_type="projen.GitAttributesFileOptions",
3215
+ jsii_struct_bases=[],
3216
+ name_mapping={"end_of_line": "endOfLine"},
3217
+ )
3218
+ class GitAttributesFileOptions:
3219
+ def __init__(self, *, end_of_line: typing.Optional[EndOfLine] = None) -> None:
3220
+ '''(experimental) Options for ``GitAttributesFile``.
3221
+
3222
+ :param end_of_line: (experimental) The default end of line character for text files. endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations. Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters. It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line. Can be disabled by setting explicitly: ``{ endOfLine: EndOfLine.NONE }``. Default: EndOfLine.LF
3223
+
3224
+ :stability: experimental
3225
+ '''
3226
+ if __debug__:
3227
+ type_hints = typing.get_type_hints(_typecheckingstub__82a54cc3274f754056a1301deb3e7902a7a31057da6ade20b64dae8487831db5)
3228
+ check_type(argname="argument end_of_line", value=end_of_line, expected_type=type_hints["end_of_line"])
3229
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
3230
+ if end_of_line is not None:
3231
+ self._values["end_of_line"] = end_of_line
3232
+
3233
+ @builtins.property
3234
+ def end_of_line(self) -> typing.Optional[EndOfLine]:
3235
+ '''(experimental) The default end of line character for text files.
3236
+
3237
+ endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations. Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters. It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line. Can be disabled by setting explicitly: ``{ endOfLine: EndOfLine.NONE }``.
3238
+
3239
+ :default: EndOfLine.LF
3240
+
3241
+ :stability: experimental
3242
+ '''
3243
+ result = self._values.get("end_of_line")
3244
+ return typing.cast(typing.Optional[EndOfLine], result)
3245
+
3246
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
3247
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
3248
+
3249
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
3250
+ return not (rhs == self)
3251
+
3252
+ def __repr__(self) -> str:
3253
+ return "GitAttributesFileOptions(%s)" % ", ".join(
3254
+ k + "=" + repr(v) for k, v in self._values.items()
3255
+ )
3256
+
3257
+
2959
3258
  @jsii.data_type(
2960
3259
  jsii_type="projen.GitOptions",
2961
3260
  jsii_struct_bases=[],
2962
- name_mapping={"lfs_patterns": "lfsPatterns"},
3261
+ name_mapping={"end_of_line": "endOfLine", "lfs_patterns": "lfsPatterns"},
2963
3262
  )
2964
3263
  class GitOptions:
2965
3264
  def __init__(
2966
3265
  self,
2967
3266
  *,
3267
+ end_of_line: typing.Optional[EndOfLine] = None,
2968
3268
  lfs_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
2969
3269
  ) -> None:
2970
3270
  '''(experimental) Git configuration options.
2971
3271
 
3272
+ :param end_of_line: (experimental) The default end of line character for text files. endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations. Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters. It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line. Can be disabled by setting: ``endOfLine: EndOfLine.NONE``. Default: EndOfLine.LF
2972
3273
  :param lfs_patterns: (experimental) File patterns to mark as stored in Git LFS. Default: - No files stored in LFS
2973
3274
 
2974
3275
  :stability: experimental
2975
3276
  '''
2976
3277
  if __debug__:
2977
3278
  type_hints = typing.get_type_hints(_typecheckingstub__ee7f1b3b819a95ebdb112752cdc122d5362da95c419decd69ec24018f344bace)
3279
+ check_type(argname="argument end_of_line", value=end_of_line, expected_type=type_hints["end_of_line"])
2978
3280
  check_type(argname="argument lfs_patterns", value=lfs_patterns, expected_type=type_hints["lfs_patterns"])
2979
3281
  self._values: typing.Dict[builtins.str, typing.Any] = {}
3282
+ if end_of_line is not None:
3283
+ self._values["end_of_line"] = end_of_line
2980
3284
  if lfs_patterns is not None:
2981
3285
  self._values["lfs_patterns"] = lfs_patterns
2982
3286
 
3287
+ @builtins.property
3288
+ def end_of_line(self) -> typing.Optional[EndOfLine]:
3289
+ '''(experimental) The default end of line character for text files.
3290
+
3291
+ endOfLine it's useful to keep the same end of line between Windows and Unix operative systems for git checking/checkout operations.
3292
+ Hence, it can avoid simple repository mutations consisting only of changes in the end of line characters.
3293
+ It will be set in the first line of the .gitattributes file to make it the first match with high priority but it can be overriden in a later line.
3294
+ Can be disabled by setting: ``endOfLine: EndOfLine.NONE``.
3295
+
3296
+ :default: EndOfLine.LF
3297
+
3298
+ :stability: experimental
3299
+ '''
3300
+ result = self._values.get("end_of_line")
3301
+ return typing.cast(typing.Optional[EndOfLine], result)
3302
+
2983
3303
  @builtins.property
2984
3304
  def lfs_patterns(self) -> typing.Optional[typing.List[builtins.str]]:
2985
3305
  '''(experimental) File patterns to mark as stored in Git LFS.
@@ -3705,6 +4025,52 @@ class GroupRunnerOptions:
3705
4025
  )
3706
4026
 
3707
4027
 
4028
+ @jsii.interface(jsii_type="projen.ICompareString")
4029
+ class ICompareString(typing_extensions.Protocol):
4030
+ '''
4031
+ :stability: experimental
4032
+ '''
4033
+
4034
+ @jsii.member(jsii_name="compare")
4035
+ def compare(self, a: builtins.str, b: builtins.str) -> jsii.Number:
4036
+ '''
4037
+ :param a: The first string.
4038
+ :param b: The second string.
4039
+
4040
+ :return: It is expected to return a negative value if the first argument is less than the second argument, zero if they're equal, and a positive value otherwise.
4041
+
4042
+ :stability: experimental
4043
+ '''
4044
+ ...
4045
+
4046
+
4047
+ class _ICompareStringProxy:
4048
+ '''
4049
+ :stability: experimental
4050
+ '''
4051
+
4052
+ __jsii_type__: typing.ClassVar[str] = "projen.ICompareString"
4053
+
4054
+ @jsii.member(jsii_name="compare")
4055
+ def compare(self, a: builtins.str, b: builtins.str) -> jsii.Number:
4056
+ '''
4057
+ :param a: The first string.
4058
+ :param b: The second string.
4059
+
4060
+ :return: It is expected to return a negative value if the first argument is less than the second argument, zero if they're equal, and a positive value otherwise.
4061
+
4062
+ :stability: experimental
4063
+ '''
4064
+ if __debug__:
4065
+ type_hints = typing.get_type_hints(_typecheckingstub__63d4f6e150362668f5e26d2f58f8b0a32cff82cf2eb8cb736d2c4333d0b01d09)
4066
+ check_type(argname="argument a", value=a, expected_type=type_hints["a"])
4067
+ check_type(argname="argument b", value=b, expected_type=type_hints["b"])
4068
+ return typing.cast(jsii.Number, jsii.invoke(self, "compare", [a, b]))
4069
+
4070
+ # Adding a "__jsii_proxy_class__(): typing.Type" function to the interface
4071
+ typing.cast(typing.Any, ICompareString).__jsii_proxy_class__ = lambda : _ICompareStringProxy
4072
+
4073
+
3708
4074
  @jsii.interface(jsii_type="projen.IDevEnvironment")
3709
4075
  class IDevEnvironment(typing_extensions.Protocol):
3710
4076
  '''(experimental) Abstract interface for container-based development environments, such as Gitpod and GitHub Codespaces.
@@ -5504,7 +5870,7 @@ class ObjectFile(
5504
5870
 
5505
5871
  "compilerOptions": {
5506
5872
  "exclude": ["node_modules"],
5507
- "lib": ["es2019"]
5873
+ "lib": ["es2020"]
5508
5874
  ...
5509
5875
  }
5510
5876
  ...
@@ -5518,7 +5884,7 @@ class ObjectFile(
5518
5884
 
5519
5885
  "compilerOptions": {
5520
5886
  "exclude": ["node_modules", "coverage"],
5521
- "lib": ["es2019", "dom", "dom.iterable", "esnext"]
5887
+ "lib": ["es2020", "dom", "dom.iterable", "esnext"]
5522
5888
  ...
5523
5889
  }
5524
5890
  ...
@@ -5542,7 +5908,7 @@ class ObjectFile(
5542
5908
 
5543
5909
  "compilerOptions": {
5544
5910
  "exclude": ["node_modules"],
5545
- "lib": ["es2019"]
5911
+ "lib": ["es2020"]
5546
5912
  ...
5547
5913
  }
5548
5914
  ...
@@ -6706,7 +7072,7 @@ class ProjectTree(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.ProjectT
6706
7072
  if __debug__:
6707
7073
  type_hints = typing.get_type_hints(_typecheckingstub__dd1d331084783b1e11404a33c550a54f472b9e2d656ca02bdc7287828f96e2fb)
6708
7074
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
6709
- jsii.set(self, "file", value)
7075
+ jsii.set(self, "file", value) # pyright: ignore[reportArgumentType]
6710
7076
 
6711
7077
 
6712
7078
  @jsii.enum(jsii_type="projen.ProjectType")
@@ -6994,6 +7360,10 @@ class ProjenrcOptions(ProjenrcJsonOptions):
6994
7360
  class ReleasableCommits(metaclass=jsii.JSIIMeta, jsii_type="projen.ReleasableCommits"):
6995
7361
  '''(experimental) Find commits that should be considered releasable to decide if a release is required.
6996
7362
 
7363
+ This setting only controls whether a release is triggered, yes or no. The
7364
+ paths used here are independent of the code that controls what commits are inspected
7365
+ to determine the version number.
7366
+
6997
7367
  :stability: experimental
6998
7368
  '''
6999
7369
 
@@ -7093,7 +7463,7 @@ class ReleasableCommits(metaclass=jsii.JSIIMeta, jsii_type="projen.ReleasableCom
7093
7463
  if __debug__:
7094
7464
  type_hints = typing.get_type_hints(_typecheckingstub__e1c46f6c8bc57788436baf6da521f9e5812106db6aa16bda9534549c8cbb078d)
7095
7465
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
7096
- jsii.set(self, "cmd", value)
7466
+ jsii.set(self, "cmd", value) # pyright: ignore[reportArgumentType]
7097
7467
 
7098
7468
 
7099
7469
  class Renovatebot(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.Renovatebot"):
@@ -7631,7 +8001,7 @@ class SampleFile(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.SampleFil
7631
8001
  :param project: - the project to tie this file to.
7632
8002
  :param file_path: - the relative path in the project to put the file.
7633
8003
  :param contents: (experimental) The contents of the file to write.
7634
- :param source_path: (experimental) Absolute path to a file to copy the contents from (does not need to be a text file). If your project is Typescript-based and has configured ``testdir`` to be a subdirectory of ``src``, sample files should outside of the ``src`` directory, otherwise they may not be copied. For example:: new SampleFile(this, 'assets/icon.png', { source: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
8004
+ :param source_path: (experimental) Absolute path to a file to copy the contents from (does not need to be a text file). If your project is Typescript-based and has configured ``testdir`` to be a subdirectory of ``src``, sample files should outside of the ``src`` directory, otherwise they may not be copied. For example:: new SampleFile(this, 'assets/icon.png', { sourcePath: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
7635
8005
 
7636
8006
  :stability: experimental
7637
8007
  '''
@@ -7667,7 +8037,7 @@ class SampleFileOptions:
7667
8037
  '''(experimental) Options for the SampleFile object.
7668
8038
 
7669
8039
  :param contents: (experimental) The contents of the file to write.
7670
- :param source_path: (experimental) Absolute path to a file to copy the contents from (does not need to be a text file). If your project is Typescript-based and has configured ``testdir`` to be a subdirectory of ``src``, sample files should outside of the ``src`` directory, otherwise they may not be copied. For example:: new SampleFile(this, 'assets/icon.png', { source: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
8040
+ :param source_path: (experimental) Absolute path to a file to copy the contents from (does not need to be a text file). If your project is Typescript-based and has configured ``testdir`` to be a subdirectory of ``src``, sample files should outside of the ``src`` directory, otherwise they may not be copied. For example:: new SampleFile(this, 'assets/icon.png', { sourcePath: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
7671
8041
 
7672
8042
  :stability: experimental
7673
8043
  '''
@@ -7698,7 +8068,7 @@ class SampleFileOptions:
7698
8068
  subdirectory of ``src``, sample files should outside of the ``src`` directory,
7699
8069
  otherwise they may not be copied. For example::
7700
8070
 
7701
- new SampleFile(this, 'assets/icon.png', { source: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
8071
+ new SampleFile(this, 'assets/icon.png', { sourcePath: path.join(__dirname, '..', 'sample-assets', 'icon.png') });
7702
8072
 
7703
8073
  :stability: experimental
7704
8074
  '''
@@ -8241,7 +8611,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8241
8611
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8242
8612
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8243
8613
  :param name: (experimental) Step name. Default: - no name
8244
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8614
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8245
8615
 
8246
8616
  :stability: experimental
8247
8617
  '''
@@ -8259,6 +8629,21 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8259
8629
 
8260
8630
  return typing.cast(None, jsii.invoke(self, "exec", [command, options]))
8261
8631
 
8632
+ @jsii.member(jsii_name="insertStep")
8633
+ def insert_step(self, index: jsii.Number, *steps: "TaskStep") -> None:
8634
+ '''(experimental) Insert one or more steps at a given index.
8635
+
8636
+ :param index: Steps will be inserted before this index. May be negative to count backwards from the end, or may be ``== steps().length`` to insert at the end.
8637
+ :param steps: The steps to insert.
8638
+
8639
+ :stability: experimental
8640
+ '''
8641
+ if __debug__:
8642
+ type_hints = typing.get_type_hints(_typecheckingstub__f45a21d1f9e615dd1b225d6cafbe381a43b42811d1d21efd5a3f6630613e94af)
8643
+ check_type(argname="argument index", value=index, expected_type=type_hints["index"])
8644
+ check_type(argname="argument steps", value=steps, expected_type=typing.Tuple[type_hints["steps"], ...]) # pyright: ignore [reportGeneralTypeIssues]
8645
+ return typing.cast(None, jsii.invoke(self, "insertStep", [index, *steps]))
8646
+
8262
8647
  @jsii.member(jsii_name="lock")
8263
8648
  def lock(self) -> None:
8264
8649
  '''(experimental) Forbid additional changes to this task.
@@ -8287,7 +8672,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8287
8672
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8288
8673
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8289
8674
  :param name: (experimental) Step name. Default: - no name
8290
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8675
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8291
8676
 
8292
8677
  :deprecated: use ``prependExec()``
8293
8678
 
@@ -8327,7 +8712,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8327
8712
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8328
8713
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8329
8714
  :param name: (experimental) Step name. Default: - no name
8330
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8715
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8331
8716
 
8332
8717
  :stability: experimental
8333
8718
  '''
@@ -8365,7 +8750,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8365
8750
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8366
8751
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8367
8752
  :param name: (experimental) Step name. Default: - no name
8368
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8753
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8369
8754
 
8370
8755
  :stability: experimental
8371
8756
  '''
@@ -8403,7 +8788,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8403
8788
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8404
8789
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8405
8790
  :param name: (experimental) Step name. Default: - no name
8406
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8791
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8407
8792
 
8408
8793
  :stability: experimental
8409
8794
  '''
@@ -8453,7 +8838,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8453
8838
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8454
8839
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8455
8840
  :param name: (experimental) Step name. Default: - no name
8456
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8841
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8457
8842
 
8458
8843
  :stability: experimental
8459
8844
  '''
@@ -8491,7 +8876,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8491
8876
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8492
8877
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8493
8878
  :param name: (experimental) Step name. Default: - no name
8494
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8879
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8495
8880
 
8496
8881
  :stability: experimental
8497
8882
  '''
@@ -8529,7 +8914,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8529
8914
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8530
8915
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8531
8916
  :param name: (experimental) Step name. Default: - no name
8532
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8917
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8533
8918
 
8534
8919
  :stability: experimental
8535
8920
  '''
@@ -8574,7 +8959,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8574
8959
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
8575
8960
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
8576
8961
  :param name: (experimental) Step name. Default: - no name
8577
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8962
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
8578
8963
 
8579
8964
  :stability: experimental
8580
8965
  '''
@@ -8651,7 +9036,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8651
9036
  if __debug__:
8652
9037
  type_hints = typing.get_type_hints(_typecheckingstub__063f23ecf0aa952acdfe114ecbbc1ac116753acf58aa564cd47b3ea5fbd99ad8)
8653
9038
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8654
- jsii.set(self, "cwd", value)
9039
+ jsii.set(self, "cwd", value) # pyright: ignore[reportArgumentType]
8655
9040
 
8656
9041
  @builtins.property
8657
9042
  @jsii.member(jsii_name="description")
@@ -8669,7 +9054,7 @@ class Task(metaclass=jsii.JSIIMeta, jsii_type="projen.Task"):
8669
9054
  if __debug__:
8670
9055
  type_hints = typing.get_type_hints(_typecheckingstub__740ba1ef0d399dc76efb91309b9d1c8426213faa31da03d8c0abbc94a3d02e03)
8671
9056
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
8672
- jsii.set(self, "description", value)
9057
+ jsii.set(self, "description", value) # pyright: ignore[reportArgumentType]
8673
9058
 
8674
9059
 
8675
9060
  @jsii.data_type(
@@ -9003,12 +9388,14 @@ class TaskRuntime(metaclass=jsii.JSIIMeta, jsii_type="projen.TaskRuntime"):
9003
9388
  name: builtins.str,
9004
9389
  parents: typing.Optional[typing.Sequence[builtins.str]] = None,
9005
9390
  args: typing.Optional[typing.Sequence[typing.Union[builtins.str, jsii.Number]]] = None,
9391
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
9006
9392
  ) -> None:
9007
9393
  '''(experimental) Runs the task.
9008
9394
 
9009
9395
  :param name: The task name.
9010
9396
  :param parents: -
9011
9397
  :param args: -
9398
+ :param env: -
9012
9399
 
9013
9400
  :stability: experimental
9014
9401
  '''
@@ -9017,7 +9404,8 @@ class TaskRuntime(metaclass=jsii.JSIIMeta, jsii_type="projen.TaskRuntime"):
9017
9404
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
9018
9405
  check_type(argname="argument parents", value=parents, expected_type=type_hints["parents"])
9019
9406
  check_type(argname="argument args", value=args, expected_type=type_hints["args"])
9020
- return typing.cast(None, jsii.invoke(self, "runTask", [name, parents, args]))
9407
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
9408
+ return typing.cast(None, jsii.invoke(self, "runTask", [name, parents, args, env]))
9021
9409
 
9022
9410
  @jsii.member(jsii_name="tryFindTask")
9023
9411
  def try_find_task(self, name: builtins.str) -> typing.Optional["TaskSpec"]:
@@ -9251,7 +9639,7 @@ class TaskStepOptions:
9251
9639
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
9252
9640
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
9253
9641
  :param name: (experimental) Step name. Default: - no name
9254
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
9642
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
9255
9643
 
9256
9644
  :stability: experimental
9257
9645
  '''
@@ -9364,6 +9752,9 @@ class TaskStepOptions:
9364
9752
  If ``true``, args are passed through at the end of the ``exec`` shell command.
9365
9753
  The position of the args can be changed by including the marker ``$@`` inside the command string.
9366
9754
 
9755
+ If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating
9756
+ the whitespace preserving behavior of bash variable expansion.
9757
+
9367
9758
  If the step spawns a subtask, args are passed to the subtask.
9368
9759
  The subtask must define steps receiving args for this to have any effect.
9369
9760
 
@@ -9862,7 +10253,7 @@ class TomlFile(ObjectFile, metaclass=jsii.JSIIMeta, jsii_type="projen.TomlFile")
9862
10253
 
9863
10254
  def __init__(
9864
10255
  self,
9865
- project: Project,
10256
+ scope: _constructs_77d1e7e8.IConstruct,
9866
10257
  file_path: builtins.str,
9867
10258
  *,
9868
10259
  obj: typing.Any = None,
@@ -9874,7 +10265,7 @@ class TomlFile(ObjectFile, metaclass=jsii.JSIIMeta, jsii_type="projen.TomlFile")
9874
10265
  readonly: typing.Optional[builtins.bool] = None,
9875
10266
  ) -> None:
9876
10267
  '''
9877
- :param project: -
10268
+ :param scope: -
9878
10269
  :param file_path: -
9879
10270
  :param obj: (experimental) The object that will be serialized. You can modify the object's contents before synthesis. Serialization of the object is similar to JSON.stringify with few enhancements: - values that are functions will be called during synthesis and the result will be serialized - this allow to have lazy values. - ``Set`` will be converted to array - ``Map`` will be converted to a plain object ({ key: value, ... }}) - ``RegExp`` without flags will be converted to string representation of the source Default: {} an empty object (use ``file.obj`` to mutate).
9880
10271
  :param omit_empty: (experimental) Omits empty objects and arrays. Default: false
@@ -9888,7 +10279,7 @@ class TomlFile(ObjectFile, metaclass=jsii.JSIIMeta, jsii_type="projen.TomlFile")
9888
10279
  '''
9889
10280
  if __debug__:
9890
10281
  type_hints = typing.get_type_hints(_typecheckingstub__de7c08620aabeb578ce8c0c54b1073a9df1f34c7815d8ae6fdebff7eb411c3d8)
9891
- check_type(argname="argument project", value=project, expected_type=type_hints["project"])
10282
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
9892
10283
  check_type(argname="argument file_path", value=file_path, expected_type=type_hints["file_path"])
9893
10284
  options = TomlFileOptions(
9894
10285
  obj=obj,
@@ -9900,7 +10291,7 @@ class TomlFile(ObjectFile, metaclass=jsii.JSIIMeta, jsii_type="projen.TomlFile")
9900
10291
  readonly=readonly,
9901
10292
  )
9902
10293
 
9903
- jsii.create(self.__class__, self, [project, file_path, options])
10294
+ jsii.create(self.__class__, self, [scope, file_path, options])
9904
10295
 
9905
10296
  @jsii.member(jsii_name="synthesizeContent")
9906
10297
  def _synthesize_content(self, resolver: IResolver) -> typing.Optional[builtins.str]:
@@ -10085,18 +10476,22 @@ class Version(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.Version"):
10085
10476
 
10086
10477
  def __init__(
10087
10478
  self,
10088
- project: Project,
10479
+ scope: _constructs_77d1e7e8.IConstruct,
10089
10480
  *,
10090
10481
  artifacts_directory: builtins.str,
10091
10482
  version_input_file: builtins.str,
10483
+ bump_package: typing.Optional[builtins.str] = None,
10484
+ next_version_command: typing.Optional[builtins.str] = None,
10092
10485
  releasable_commits: typing.Optional[ReleasableCommits] = None,
10093
10486
  tag_prefix: typing.Optional[builtins.str] = None,
10094
10487
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
10095
10488
  ) -> None:
10096
10489
  '''
10097
- :param project: -
10490
+ :param scope: -
10098
10491
  :param artifacts_directory: (experimental) The name of the directory into which ``changelog.md`` and ``version.txt`` files are emitted.
10099
10492
  :param version_input_file: (experimental) A name of a .json file to set the ``version`` field in after a bump.
10493
+ :param bump_package: (experimental) The ``commit-and-tag-version`` compatible package used to bump the package version, as a dependency string. This can be any compatible package version, including the deprecated ``standard-version@9``. Default: "commit-and-tag-version@12"
10494
+ :param next_version_command: (experimental) A shell command to control the next version to release. If present, this shell command will be run before the bump is executed, and it determines what version to release. It will be executed in the following environment: - Working directory: the project directory. - ``$VERSION``: the current version. Looks like ``1.2.3``. - ``$LATEST_TAG``: the most recent tag. Looks like ``prefix-v1.2.3``, or may be unset. - ``$SUGGESTED_BUMP``: the suggested bump action based on commits. One of ``major|minor|patch|none``. The command should print one of the following to ``stdout``: - Nothing: the next version number will be determined based on commit history. - ``x.y.z``: the next version number will be ``x.y.z``. - ``major|minor|patch``: the next version number will be the current version number with the indicated component bumped. Default: - The next version will be determined based on the commit history and project settings.
10100
10495
  :param releasable_commits: (experimental) Find commits that should be considered releasable Used to decide if a release is required. Default: ReleasableCommits.everyCommit()
10101
10496
  :param tag_prefix: (experimental) The tag prefix corresponding to this version.
10102
10497
  :param versionrc_options: (experimental) Custom configuration for versionrc file used by standard-release.
@@ -10105,25 +10500,76 @@ class Version(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.Version"):
10105
10500
  '''
10106
10501
  if __debug__:
10107
10502
  type_hints = typing.get_type_hints(_typecheckingstub__9cf64d1b29258435f8a7749178e947fcedd27d55f323782081a21714be909595)
10108
- check_type(argname="argument project", value=project, expected_type=type_hints["project"])
10503
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
10109
10504
  options = VersionOptions(
10110
10505
  artifacts_directory=artifacts_directory,
10111
10506
  version_input_file=version_input_file,
10507
+ bump_package=bump_package,
10508
+ next_version_command=next_version_command,
10112
10509
  releasable_commits=releasable_commits,
10113
10510
  tag_prefix=tag_prefix,
10114
10511
  versionrc_options=versionrc_options,
10115
10512
  )
10116
10513
 
10117
- jsii.create(self.__class__, self, [project, options])
10514
+ jsii.create(self.__class__, self, [scope, options])
10515
+
10516
+ @jsii.member(jsii_name="envForBranch")
10517
+ def env_for_branch(
10518
+ self,
10519
+ *,
10520
+ major_version: typing.Optional[jsii.Number] = None,
10521
+ min_major_version: typing.Optional[jsii.Number] = None,
10522
+ minor_version: typing.Optional[jsii.Number] = None,
10523
+ prerelease: typing.Optional[builtins.str] = None,
10524
+ tag_prefix: typing.Optional[builtins.str] = None,
10525
+ ) -> typing.Mapping[builtins.str, builtins.str]:
10526
+ '''(experimental) Return the environment variables to modify the bump command for release branches.
10527
+
10528
+ These options are used to modify the behavior of the version bumping script
10529
+ for additional branches, by setting environment variables.
10530
+
10531
+ No settings are inherited from the base ``Version`` object (but any parameters that
10532
+ control versions do conflict with the use of a ``nextVersionCommand``).
10533
+
10534
+ :param major_version: (experimental) The major versions released from this branch.
10535
+ :param min_major_version: (experimental) The minimum major version to release.
10536
+ :param minor_version: (experimental) The minor versions released from this branch.
10537
+ :param prerelease: (experimental) Bump the version as a pre-release tag. Default: - normal releases
10538
+ :param tag_prefix: (experimental) Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. Note: this prefix is used to detect the latest tagged version when bumping, so if you change this on a project with an existing version history, you may need to manually tag your latest release with the new prefix. Default: - no prefix
10539
+
10540
+ :stability: experimental
10541
+ '''
10542
+ branch_options = VersionBranchOptions(
10543
+ major_version=major_version,
10544
+ min_major_version=min_major_version,
10545
+ minor_version=minor_version,
10546
+ prerelease=prerelease,
10547
+ tag_prefix=tag_prefix,
10548
+ )
10549
+
10550
+ return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.invoke(self, "envForBranch", [branch_options]))
10118
10551
 
10119
10552
  @jsii.python.classproperty
10120
10553
  @jsii.member(jsii_name="STANDARD_VERSION")
10121
10554
  def STANDARD_VERSION(cls) -> builtins.str:
10122
10555
  '''
10123
- :stability: experimental
10556
+ :deprecated: use ``version.bumpPackage`` on the component instance instead
10557
+
10558
+ :stability: deprecated
10124
10559
  '''
10125
10560
  return typing.cast(builtins.str, jsii.sget(cls, "STANDARD_VERSION"))
10126
10561
 
10562
+ @builtins.property
10563
+ @jsii.member(jsii_name="bumpPackage")
10564
+ def bump_package(self) -> builtins.str:
10565
+ '''(experimental) The package used to bump package versions, as a dependency string.
10566
+
10567
+ This is a ``commit-and-tag-version`` compatible package.
10568
+
10569
+ :stability: experimental
10570
+ '''
10571
+ return typing.cast(builtins.str, jsii.get(self, "bumpPackage"))
10572
+
10127
10573
  @builtins.property
10128
10574
  @jsii.member(jsii_name="bumpTask")
10129
10575
  def bump_task(self) -> Task:
@@ -10169,12 +10615,130 @@ class Version(Component, metaclass=jsii.JSIIMeta, jsii_type="projen.Version"):
10169
10615
 
10170
10616
 
10171
10617
  @jsii.data_type(
10172
- jsii_type="projen.VersionOptions",
10618
+ jsii_type="projen.VersionBranchOptions",
10173
10619
  jsii_struct_bases=[],
10174
10620
  name_mapping={
10175
- "artifacts_directory": "artifactsDirectory",
10176
- "version_input_file": "versionInputFile",
10177
- "releasable_commits": "releasableCommits",
10621
+ "major_version": "majorVersion",
10622
+ "min_major_version": "minMajorVersion",
10623
+ "minor_version": "minorVersion",
10624
+ "prerelease": "prerelease",
10625
+ "tag_prefix": "tagPrefix",
10626
+ },
10627
+ )
10628
+ class VersionBranchOptions:
10629
+ def __init__(
10630
+ self,
10631
+ *,
10632
+ major_version: typing.Optional[jsii.Number] = None,
10633
+ min_major_version: typing.Optional[jsii.Number] = None,
10634
+ minor_version: typing.Optional[jsii.Number] = None,
10635
+ prerelease: typing.Optional[builtins.str] = None,
10636
+ tag_prefix: typing.Optional[builtins.str] = None,
10637
+ ) -> None:
10638
+ '''(experimental) Options to pass to ``modifyBranchEnvironment``.
10639
+
10640
+ :param major_version: (experimental) The major versions released from this branch.
10641
+ :param min_major_version: (experimental) The minimum major version to release.
10642
+ :param minor_version: (experimental) The minor versions released from this branch.
10643
+ :param prerelease: (experimental) Bump the version as a pre-release tag. Default: - normal releases
10644
+ :param tag_prefix: (experimental) Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers. Note: this prefix is used to detect the latest tagged version when bumping, so if you change this on a project with an existing version history, you may need to manually tag your latest release with the new prefix. Default: - no prefix
10645
+
10646
+ :stability: experimental
10647
+ '''
10648
+ if __debug__:
10649
+ type_hints = typing.get_type_hints(_typecheckingstub__62987907aa24cc1b84e9b6e9b755bd286708fa4a219baa7b979fb3ea61401603)
10650
+ check_type(argname="argument major_version", value=major_version, expected_type=type_hints["major_version"])
10651
+ check_type(argname="argument min_major_version", value=min_major_version, expected_type=type_hints["min_major_version"])
10652
+ check_type(argname="argument minor_version", value=minor_version, expected_type=type_hints["minor_version"])
10653
+ check_type(argname="argument prerelease", value=prerelease, expected_type=type_hints["prerelease"])
10654
+ check_type(argname="argument tag_prefix", value=tag_prefix, expected_type=type_hints["tag_prefix"])
10655
+ self._values: typing.Dict[builtins.str, typing.Any] = {}
10656
+ if major_version is not None:
10657
+ self._values["major_version"] = major_version
10658
+ if min_major_version is not None:
10659
+ self._values["min_major_version"] = min_major_version
10660
+ if minor_version is not None:
10661
+ self._values["minor_version"] = minor_version
10662
+ if prerelease is not None:
10663
+ self._values["prerelease"] = prerelease
10664
+ if tag_prefix is not None:
10665
+ self._values["tag_prefix"] = tag_prefix
10666
+
10667
+ @builtins.property
10668
+ def major_version(self) -> typing.Optional[jsii.Number]:
10669
+ '''(experimental) The major versions released from this branch.
10670
+
10671
+ :stability: experimental
10672
+ '''
10673
+ result = self._values.get("major_version")
10674
+ return typing.cast(typing.Optional[jsii.Number], result)
10675
+
10676
+ @builtins.property
10677
+ def min_major_version(self) -> typing.Optional[jsii.Number]:
10678
+ '''(experimental) The minimum major version to release.
10679
+
10680
+ :stability: experimental
10681
+ '''
10682
+ result = self._values.get("min_major_version")
10683
+ return typing.cast(typing.Optional[jsii.Number], result)
10684
+
10685
+ @builtins.property
10686
+ def minor_version(self) -> typing.Optional[jsii.Number]:
10687
+ '''(experimental) The minor versions released from this branch.
10688
+
10689
+ :stability: experimental
10690
+ '''
10691
+ result = self._values.get("minor_version")
10692
+ return typing.cast(typing.Optional[jsii.Number], result)
10693
+
10694
+ @builtins.property
10695
+ def prerelease(self) -> typing.Optional[builtins.str]:
10696
+ '''(experimental) Bump the version as a pre-release tag.
10697
+
10698
+ :default: - normal releases
10699
+
10700
+ :stability: experimental
10701
+ '''
10702
+ result = self._values.get("prerelease")
10703
+ return typing.cast(typing.Optional[builtins.str], result)
10704
+
10705
+ @builtins.property
10706
+ def tag_prefix(self) -> typing.Optional[builtins.str]:
10707
+ '''(experimental) Automatically add the given prefix to release tags. Useful if you are releasing on multiple branches with overlapping version numbers.
10708
+
10709
+ Note: this prefix is used to detect the latest tagged version
10710
+ when bumping, so if you change this on a project with an existing version
10711
+ history, you may need to manually tag your latest release
10712
+ with the new prefix.
10713
+
10714
+ :default: - no prefix
10715
+
10716
+ :stability: experimental
10717
+ '''
10718
+ result = self._values.get("tag_prefix")
10719
+ return typing.cast(typing.Optional[builtins.str], result)
10720
+
10721
+ def __eq__(self, rhs: typing.Any) -> builtins.bool:
10722
+ return isinstance(rhs, self.__class__) and rhs._values == self._values
10723
+
10724
+ def __ne__(self, rhs: typing.Any) -> builtins.bool:
10725
+ return not (rhs == self)
10726
+
10727
+ def __repr__(self) -> str:
10728
+ return "VersionBranchOptions(%s)" % ", ".join(
10729
+ k + "=" + repr(v) for k, v in self._values.items()
10730
+ )
10731
+
10732
+
10733
+ @jsii.data_type(
10734
+ jsii_type="projen.VersionOptions",
10735
+ jsii_struct_bases=[],
10736
+ name_mapping={
10737
+ "artifacts_directory": "artifactsDirectory",
10738
+ "version_input_file": "versionInputFile",
10739
+ "bump_package": "bumpPackage",
10740
+ "next_version_command": "nextVersionCommand",
10741
+ "releasable_commits": "releasableCommits",
10178
10742
  "tag_prefix": "tagPrefix",
10179
10743
  "versionrc_options": "versionrcOptions",
10180
10744
  },
@@ -10185,6 +10749,8 @@ class VersionOptions:
10185
10749
  *,
10186
10750
  artifacts_directory: builtins.str,
10187
10751
  version_input_file: builtins.str,
10752
+ bump_package: typing.Optional[builtins.str] = None,
10753
+ next_version_command: typing.Optional[builtins.str] = None,
10188
10754
  releasable_commits: typing.Optional[ReleasableCommits] = None,
10189
10755
  tag_prefix: typing.Optional[builtins.str] = None,
10190
10756
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -10193,6 +10759,8 @@ class VersionOptions:
10193
10759
 
10194
10760
  :param artifacts_directory: (experimental) The name of the directory into which ``changelog.md`` and ``version.txt`` files are emitted.
10195
10761
  :param version_input_file: (experimental) A name of a .json file to set the ``version`` field in after a bump.
10762
+ :param bump_package: (experimental) The ``commit-and-tag-version`` compatible package used to bump the package version, as a dependency string. This can be any compatible package version, including the deprecated ``standard-version@9``. Default: "commit-and-tag-version@12"
10763
+ :param next_version_command: (experimental) A shell command to control the next version to release. If present, this shell command will be run before the bump is executed, and it determines what version to release. It will be executed in the following environment: - Working directory: the project directory. - ``$VERSION``: the current version. Looks like ``1.2.3``. - ``$LATEST_TAG``: the most recent tag. Looks like ``prefix-v1.2.3``, or may be unset. - ``$SUGGESTED_BUMP``: the suggested bump action based on commits. One of ``major|minor|patch|none``. The command should print one of the following to ``stdout``: - Nothing: the next version number will be determined based on commit history. - ``x.y.z``: the next version number will be ``x.y.z``. - ``major|minor|patch``: the next version number will be the current version number with the indicated component bumped. Default: - The next version will be determined based on the commit history and project settings.
10196
10764
  :param releasable_commits: (experimental) Find commits that should be considered releasable Used to decide if a release is required. Default: ReleasableCommits.everyCommit()
10197
10765
  :param tag_prefix: (experimental) The tag prefix corresponding to this version.
10198
10766
  :param versionrc_options: (experimental) Custom configuration for versionrc file used by standard-release.
@@ -10203,6 +10771,8 @@ class VersionOptions:
10203
10771
  type_hints = typing.get_type_hints(_typecheckingstub__fb94d39bdc04d188bb2447acba8747de3d6ec275231c8a512d647916d69a54f5)
10204
10772
  check_type(argname="argument artifacts_directory", value=artifacts_directory, expected_type=type_hints["artifacts_directory"])
10205
10773
  check_type(argname="argument version_input_file", value=version_input_file, expected_type=type_hints["version_input_file"])
10774
+ check_type(argname="argument bump_package", value=bump_package, expected_type=type_hints["bump_package"])
10775
+ check_type(argname="argument next_version_command", value=next_version_command, expected_type=type_hints["next_version_command"])
10206
10776
  check_type(argname="argument releasable_commits", value=releasable_commits, expected_type=type_hints["releasable_commits"])
10207
10777
  check_type(argname="argument tag_prefix", value=tag_prefix, expected_type=type_hints["tag_prefix"])
10208
10778
  check_type(argname="argument versionrc_options", value=versionrc_options, expected_type=type_hints["versionrc_options"])
@@ -10210,6 +10780,10 @@ class VersionOptions:
10210
10780
  "artifacts_directory": artifacts_directory,
10211
10781
  "version_input_file": version_input_file,
10212
10782
  }
10783
+ if bump_package is not None:
10784
+ self._values["bump_package"] = bump_package
10785
+ if next_version_command is not None:
10786
+ self._values["next_version_command"] = next_version_command
10213
10787
  if releasable_commits is not None:
10214
10788
  self._values["releasable_commits"] = releasable_commits
10215
10789
  if tag_prefix is not None:
@@ -10241,6 +10815,46 @@ class VersionOptions:
10241
10815
  assert result is not None, "Required property 'version_input_file' is missing"
10242
10816
  return typing.cast(builtins.str, result)
10243
10817
 
10818
+ @builtins.property
10819
+ def bump_package(self) -> typing.Optional[builtins.str]:
10820
+ '''(experimental) The ``commit-and-tag-version`` compatible package used to bump the package version, as a dependency string.
10821
+
10822
+ This can be any compatible package version, including the deprecated ``standard-version@9``.
10823
+
10824
+ :default: "commit-and-tag-version@12"
10825
+
10826
+ :stability: experimental
10827
+ '''
10828
+ result = self._values.get("bump_package")
10829
+ return typing.cast(typing.Optional[builtins.str], result)
10830
+
10831
+ @builtins.property
10832
+ def next_version_command(self) -> typing.Optional[builtins.str]:
10833
+ '''(experimental) A shell command to control the next version to release.
10834
+
10835
+ If present, this shell command will be run before the bump is executed, and
10836
+ it determines what version to release. It will be executed in the following
10837
+ environment:
10838
+
10839
+ - Working directory: the project directory.
10840
+ - ``$VERSION``: the current version. Looks like ``1.2.3``.
10841
+ - ``$LATEST_TAG``: the most recent tag. Looks like ``prefix-v1.2.3``, or may be unset.
10842
+ - ``$SUGGESTED_BUMP``: the suggested bump action based on commits. One of ``major|minor|patch|none``.
10843
+
10844
+ The command should print one of the following to ``stdout``:
10845
+
10846
+ - Nothing: the next version number will be determined based on commit history.
10847
+ - ``x.y.z``: the next version number will be ``x.y.z``.
10848
+ - ``major|minor|patch``: the next version number will be the current version number
10849
+ with the indicated component bumped.
10850
+
10851
+ :default: - The next version will be determined based on the commit history and project settings.
10852
+
10853
+ :stability: experimental
10854
+ '''
10855
+ result = self._values.get("next_version_command")
10856
+ return typing.cast(typing.Optional[builtins.str], result)
10857
+
10244
10858
  @builtins.property
10245
10859
  def releasable_commits(self) -> typing.Optional[ReleasableCommits]:
10246
10860
  '''(experimental) Find commits that should be considered releasable Used to decide if a release is required.
@@ -10589,7 +11203,7 @@ class YamlFile(ObjectFile, metaclass=jsii.JSIIMeta, jsii_type="projen.YamlFile")
10589
11203
  if __debug__:
10590
11204
  type_hints = typing.get_type_hints(_typecheckingstub__e48f409d84ffd5e2a23ba998b62ea6bdf1343878ddf6bbdba39669e9e45b8464)
10591
11205
  check_type(argname="argument value", value=value, expected_type=type_hints["value"])
10592
- jsii.set(self, "lineWidth", value)
11206
+ jsii.set(self, "lineWidth", value) # pyright: ignore[reportArgumentType]
10593
11207
 
10594
11208
 
10595
11209
  @jsii.data_type(
@@ -10771,6 +11385,217 @@ class YamlFileOptions(ObjectFileOptions):
10771
11385
  )
10772
11386
 
10773
11387
 
11388
+ class AiInstructions(
11389
+ Component,
11390
+ metaclass=jsii.JSIIMeta,
11391
+ jsii_type="projen.AiInstructions",
11392
+ ):
11393
+ '''(experimental) Generates instruction files for AI coding assistants with projen-specific guidance.
11394
+
11395
+ This component creates configuration files that help AI tools like GitHub Copilot,
11396
+ Cursor IDE, Claude Code, and Amazon Q understand that the project is managed by projen
11397
+ and should follow projen conventions.
11398
+
11399
+ :stability: experimental
11400
+
11401
+ Example::
11402
+
11403
+ const project = new TypeScriptProject({
11404
+ name: "my-project",
11405
+ defaultReleaseBranch: "main",
11406
+ });
11407
+
11408
+ // Basic usage - generates files for all supported AI agents
11409
+ new AiInstructions(project);
11410
+
11411
+ // Custom usage - specify which agents and add custom instructions
11412
+ new AiInstructions(project, {
11413
+ agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR],
11414
+ agentSpecificInstructions: {
11415
+ [AiAgent.GITHUB_COPILOT]: ["Always use descriptive commit messages."],
11416
+ },
11417
+ });
11418
+
11419
+ // Add more instructions after instantiation
11420
+ const ai = new AiInstructions(project);
11421
+ ai.addInstructions("Use functional programming patterns.");
11422
+ ai.addInstructions("Always write comprehensive tests.");
11423
+ '''
11424
+
11425
+ def __init__(
11426
+ self,
11427
+ project: Project,
11428
+ *,
11429
+ agents: typing.Optional[typing.Sequence[AiAgent]] = None,
11430
+ agent_specific_instructions: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[builtins.str]]] = None,
11431
+ include_default_instructions: typing.Optional[builtins.bool] = None,
11432
+ instructions: typing.Optional[typing.Sequence[builtins.str]] = None,
11433
+ ) -> None:
11434
+ '''
11435
+ :param project: -
11436
+ :param agents: (experimental) Which AI agents to generate instruction files for. Default: - All agents: [AiAgent.GITHUB_COPILOT, AiAgent.CURSOR, AiAgent.CLAUDE, AiAgent.AMAZON_Q, AiAgent.KIRO, AiAgent.CODEX]
11437
+ :param agent_specific_instructions: (experimental) Per-agent custom instructions. Allows different instructions for different AI tools. Default: - no agent specific instructions
11438
+ :param include_default_instructions: (experimental) Include default instructions for projen and general best practices. Default instructions will only be included for agents provided in the ``agents`` option. If ``agents`` is not provided, default instructions will be included for all agents. Default: true
11439
+ :param instructions: (experimental) General instructions applicable to all agents. Default: - no agent specific instructions
11440
+
11441
+ :stability: experimental
11442
+ '''
11443
+ if __debug__:
11444
+ type_hints = typing.get_type_hints(_typecheckingstub__6ade3e0209730c28511c6c65af7db0ef1d8f6d736618b1a95064af6bf4e829b8)
11445
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
11446
+ options = AiInstructionsOptions(
11447
+ agents=agents,
11448
+ agent_specific_instructions=agent_specific_instructions,
11449
+ include_default_instructions=include_default_instructions,
11450
+ instructions=instructions,
11451
+ )
11452
+
11453
+ jsii.create(self.__class__, self, [project, options])
11454
+
11455
+ @jsii.member(jsii_name="bestPractices")
11456
+ @builtins.classmethod
11457
+ def best_practices(cls, project: Project) -> builtins.str:
11458
+ '''(experimental) Returns development best practices instructions for AI agents.
11459
+
11460
+ :param project: -
11461
+
11462
+ :stability: experimental
11463
+ '''
11464
+ if __debug__:
11465
+ type_hints = typing.get_type_hints(_typecheckingstub__9b3a19a4e1f7d40bf00205a6394247af85d2428c672a0ecb7904470daaabda2f)
11466
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
11467
+ return typing.cast(builtins.str, jsii.sinvoke(cls, "bestPractices", [project]))
11468
+
11469
+ @jsii.member(jsii_name="projen")
11470
+ @builtins.classmethod
11471
+ def projen(cls, project: Project) -> builtins.str:
11472
+ '''(experimental) Returns projen-specific instructions for AI agents.
11473
+
11474
+ :param project: -
11475
+
11476
+ :stability: experimental
11477
+ '''
11478
+ if __debug__:
11479
+ type_hints = typing.get_type_hints(_typecheckingstub__065453e2727d00b362bd1cf1f58d194d6c355b2a9c2f575e92c43eb627f6eb89)
11480
+ check_type(argname="argument project", value=project, expected_type=type_hints["project"])
11481
+ return typing.cast(builtins.str, jsii.sinvoke(cls, "projen", [project]))
11482
+
11483
+ @jsii.member(jsii_name="addAgentSpecificInstructions")
11484
+ def add_agent_specific_instructions(
11485
+ self,
11486
+ agent: AiAgent,
11487
+ *instructions: builtins.str,
11488
+ ) -> None:
11489
+ '''(experimental) Add instructions for a specific AI agent.
11490
+
11491
+ This can also be used to add instructions for an AI agent that was previously not enabled.
11492
+
11493
+ :param agent: The AI agent to add instructions for.
11494
+ :param instructions: The instruction(s) to add.
11495
+
11496
+ :stability: experimental
11497
+
11498
+ Example::
11499
+
11500
+ aiInstructions.addAgentSpecificInstructions(AiAgent.GITHUB_COPILOT, "Use descriptive commit messages.");
11501
+ '''
11502
+ if __debug__:
11503
+ type_hints = typing.get_type_hints(_typecheckingstub__9ff14bf0a463b0f887b122f5949af2eedda259c6426a05e006686653e81b8fc8)
11504
+ check_type(argname="argument agent", value=agent, expected_type=type_hints["agent"])
11505
+ check_type(argname="argument instructions", value=instructions, expected_type=typing.Tuple[type_hints["instructions"], ...]) # pyright: ignore [reportGeneralTypeIssues]
11506
+ return typing.cast(None, jsii.invoke(self, "addAgentSpecificInstructions", [agent, *instructions]))
11507
+
11508
+ @jsii.member(jsii_name="addInstructions")
11509
+ def add_instructions(self, *instructions: builtins.str) -> None:
11510
+ '''(experimental) Adds instructions that will be included for all selected AI agents.
11511
+
11512
+ :param instructions: The instructions to add.
11513
+
11514
+ :stability: experimental
11515
+
11516
+ Example::
11517
+
11518
+ aiInstructions.addInstructions("Always use TypeScript strict mode.");
11519
+ aiInstructions.addInstructions("Prefer functional programming.", "Avoid mutations.");
11520
+ '''
11521
+ if __debug__:
11522
+ type_hints = typing.get_type_hints(_typecheckingstub__da44882109eef43fd7d698b3f301b9241d695eb97a717ffa73265862f39698ba)
11523
+ check_type(argname="argument instructions", value=instructions, expected_type=typing.Tuple[type_hints["instructions"], ...]) # pyright: ignore [reportGeneralTypeIssues]
11524
+ return typing.cast(None, jsii.invoke(self, "addInstructions", [*instructions]))
11525
+
11526
+
11527
+ class AiInstructionsFile(
11528
+ FileBase,
11529
+ metaclass=jsii.JSIIMeta,
11530
+ jsii_type="projen.AiInstructionsFile",
11531
+ ):
11532
+ '''
11533
+ :stability: experimental
11534
+ '''
11535
+
11536
+ def __init__(
11537
+ self,
11538
+ scope: _constructs_77d1e7e8.IConstruct,
11539
+ file_path: builtins.str,
11540
+ *,
11541
+ committed: typing.Optional[builtins.bool] = None,
11542
+ edit_gitignore: typing.Optional[builtins.bool] = None,
11543
+ executable: typing.Optional[builtins.bool] = None,
11544
+ marker: typing.Optional[builtins.bool] = None,
11545
+ readonly: typing.Optional[builtins.bool] = None,
11546
+ ) -> None:
11547
+ '''
11548
+ :param scope: -
11549
+ :param file_path: -
11550
+ :param committed: (experimental) Indicates whether this file should be committed to git or ignored. By default, all generated files are committed and anti-tamper is used to protect against manual modifications. Default: true
11551
+ :param edit_gitignore: (experimental) Update the project's .gitignore file. Default: true
11552
+ :param executable: (experimental) Whether the generated file should be marked as executable. Default: false
11553
+ :param marker: (experimental) Adds the projen marker to the file. Default: - marker will be included as long as the project is not ejected
11554
+ :param readonly: (experimental) Whether the generated file should be readonly. Default: true
11555
+
11556
+ :stability: experimental
11557
+ '''
11558
+ if __debug__:
11559
+ type_hints = typing.get_type_hints(_typecheckingstub__4b11da88a3895fa642ead3d82823bc49f77ad84be5d7816af5a52334434c5c79)
11560
+ check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
11561
+ check_type(argname="argument file_path", value=file_path, expected_type=type_hints["file_path"])
11562
+ options = FileBaseOptions(
11563
+ committed=committed,
11564
+ edit_gitignore=edit_gitignore,
11565
+ executable=executable,
11566
+ marker=marker,
11567
+ readonly=readonly,
11568
+ )
11569
+
11570
+ jsii.create(self.__class__, self, [scope, file_path, options])
11571
+
11572
+ @jsii.member(jsii_name="addInstructions")
11573
+ def add_instructions(self, *instructions: builtins.str) -> None:
11574
+ '''(experimental) Adds instructions to the instruction file.
11575
+
11576
+ :param instructions: -
11577
+
11578
+ :stability: experimental
11579
+ '''
11580
+ if __debug__:
11581
+ type_hints = typing.get_type_hints(_typecheckingstub__da3f715a19bd0c18e2cc2d3bda06afae637174acbe15ef75ef39bb7c26f0ff90)
11582
+ check_type(argname="argument instructions", value=instructions, expected_type=typing.Tuple[type_hints["instructions"], ...]) # pyright: ignore [reportGeneralTypeIssues]
11583
+ return typing.cast(None, jsii.invoke(self, "addInstructions", [*instructions]))
11584
+
11585
+ @jsii.member(jsii_name="synthesizeContent")
11586
+ def _synthesize_content(self, resolver: IResolver) -> typing.Optional[builtins.str]:
11587
+ '''(experimental) Implemented by derived classes and returns the contents of the file to emit.
11588
+
11589
+ :param resolver: -
11590
+
11591
+ :stability: experimental
11592
+ '''
11593
+ if __debug__:
11594
+ type_hints = typing.get_type_hints(_typecheckingstub__af1c3edb2730dd42712c19d9f2ebd48921303c4efd980f8910326afc111d82cc)
11595
+ check_type(argname="argument resolver", value=resolver, expected_type=type_hints["resolver"])
11596
+ return typing.cast(typing.Optional[builtins.str], jsii.invoke(self, "synthesizeContent", [resolver]))
11597
+
11598
+
10774
11599
  @jsii.data_type(
10775
11600
  jsii_type="projen.Dependency",
10776
11601
  jsii_struct_bases=[DependencyCoordinates],
@@ -11900,7 +12725,7 @@ class TaskStep(TaskStepOptions):
11900
12725
  :param cwd: (experimental) The working directory for this step. Default: - determined by the task
11901
12726
  :param env: (experimental) Defines environment variables for the execution of this step (``exec`` and ``builtin`` only). Values in this map can be simple, literal values or shell expressions that will be evaluated at runtime e.g. ``$(echo "foo")``. Default: - no environment variables defined in step
11902
12727
  :param name: (experimental) Step name. Default: - no name
11903
- :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
12728
+ :param receive_args: (experimental) Should this step receive args passed to the task. If ``true``, args are passed through at the end of the ``exec`` shell command. The position of the args can be changed by including the marker ``$@`` inside the command string. If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating the whitespace preserving behavior of bash variable expansion. If the step spawns a subtask, args are passed to the subtask. The subtask must define steps receiving args for this to have any effect. Default: false
11904
12729
  :param builtin: (experimental) The name of a built-in task to execute. Built-in tasks are node.js programs baked into the projen module and as component runtime helpers. The name is a path relative to the projen lib/ directory (without the .task.js extension). For example, if your built in builtin task is under ``src/release/resolve-version.task.ts``, then this would be ``release/resolve-version``. Default: - do not execute a builtin task
11905
12730
  :param exec: (experimental) Shell command to execute. Default: - don't execute a shell command
11906
12731
  :param say: (experimental) Print a message. Default: - don't say anything
@@ -12029,6 +12854,9 @@ class TaskStep(TaskStepOptions):
12029
12854
  If ``true``, args are passed through at the end of the ``exec`` shell command.
12030
12855
  The position of the args can be changed by including the marker ``$@`` inside the command string.
12031
12856
 
12857
+ If the marker is explicitly double-quoted ("$@") arguments will be wrapped in single quotes, approximating
12858
+ the whitespace preserving behavior of bash variable expansion.
12859
+
12032
12860
  If the step spawns a subtask, args are passed to the subtask.
12033
12861
  The subtask must define steps receiving args for this to have any effect.
12034
12862
 
@@ -12107,6 +12935,10 @@ class TaskStep(TaskStepOptions):
12107
12935
 
12108
12936
 
12109
12937
  __all__ = [
12938
+ "AiAgent",
12939
+ "AiInstructions",
12940
+ "AiInstructionsFile",
12941
+ "AiInstructionsOptions",
12110
12942
  "Component",
12111
12943
  "CreateProjectOptions",
12112
12944
  "Dependencies",
@@ -12129,9 +12961,11 @@ __all__ = [
12129
12961
  "DockerComposeServicePort",
12130
12962
  "DockerComposeVolumeConfig",
12131
12963
  "DockerComposeVolumeMount",
12964
+ "EndOfLine",
12132
12965
  "FileBase",
12133
12966
  "FileBaseOptions",
12134
12967
  "GitAttributesFile",
12968
+ "GitAttributesFileOptions",
12135
12969
  "GitOptions",
12136
12970
  "Gitpod",
12137
12971
  "GitpodOnOpen",
@@ -12143,6 +12977,7 @@ __all__ = [
12143
12977
  "GitpodPrebuilds",
12144
12978
  "GitpodTask",
12145
12979
  "GroupRunnerOptions",
12980
+ "ICompareString",
12146
12981
  "IDevEnvironment",
12147
12982
  "IDockerComposeNetworkBinding",
12148
12983
  "IDockerComposeNetworkConfig",
@@ -12212,6 +13047,7 @@ __all__ = [
12212
13047
  "TomlFile",
12213
13048
  "TomlFileOptions",
12214
13049
  "Version",
13050
+ "VersionBranchOptions",
12215
13051
  "VersionOptions",
12216
13052
  "XmlFile",
12217
13053
  "XmlFileOptions",
@@ -12253,6 +13089,16 @@ from . import typescript
12253
13089
  from . import vscode
12254
13090
  from . import web
12255
13091
 
13092
+ def _typecheckingstub__5bf7714efdf83cf2031e4ef3aa1d0cb9511cb921777751c76a0f501c0c56e247(
13093
+ *,
13094
+ agents: typing.Optional[typing.Sequence[AiAgent]] = None,
13095
+ agent_specific_instructions: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[builtins.str]]] = None,
13096
+ include_default_instructions: typing.Optional[builtins.bool] = None,
13097
+ instructions: typing.Optional[typing.Sequence[builtins.str]] = None,
13098
+ ) -> None:
13099
+ """Type checking stubs"""
13100
+ pass
13101
+
12256
13102
  def _typecheckingstub__e4ee40327ed6d04e3e377e300d915d402c50029248a86452fd19fd6372386d4b(
12257
13103
  scope: _constructs_77d1e7e8.IConstruct,
12258
13104
  id: typing.Optional[builtins.str] = None,
@@ -12305,6 +13151,14 @@ def _typecheckingstub__3683be12709967dd63dafbe536558d7717d255f3a86dfad1e17c19c9d
12305
13151
  """Type checking stubs"""
12306
13152
  pass
12307
13153
 
13154
+ def _typecheckingstub__628e50591481575ad249671e7cf61edd1bb37d5aeab5e143a0783051e3167dcc(
13155
+ name: builtins.str,
13156
+ type: DependencyType,
13157
+ expected_range: builtins.str,
13158
+ ) -> None:
13159
+ """Type checking stubs"""
13160
+ pass
13161
+
12308
13162
  def _typecheckingstub__4260bbdc4d6b4d5249dbb539f6f4fe1f865c069d0179abe451af2807f194bf7d(
12309
13163
  name: builtins.str,
12310
13164
  type: typing.Optional[DependencyType] = None,
@@ -12583,6 +13437,8 @@ def _typecheckingstub__177d8a347651b29224d730dd6e1bbec48e6dd46e5dcfd4d25e3798e67
12583
13437
 
12584
13438
  def _typecheckingstub__a914753a9db7cc6bfa6a166cf7ee02794375210a09b1d8e2c62496abf14b4d21(
12585
13439
  scope: _constructs_77d1e7e8.IConstruct,
13440
+ *,
13441
+ end_of_line: typing.Optional[EndOfLine] = None,
12586
13442
  ) -> None:
12587
13443
  """Type checking stubs"""
12588
13444
  pass
@@ -12600,14 +13456,29 @@ def _typecheckingstub__ed3c05c2bc87434261501604cb4ca8386e08b16567b40f693170ab90f
12600
13456
  """Type checking stubs"""
12601
13457
  pass
12602
13458
 
13459
+ def _typecheckingstub__573b65747d3cd070f990730baa2e2b06016818d32122c7fbc2696b8513582a7d(
13460
+ glob: builtins.str,
13461
+ *attributes: builtins.str,
13462
+ ) -> None:
13463
+ """Type checking stubs"""
13464
+ pass
13465
+
12603
13466
  def _typecheckingstub__4d57ceb4d14bb3b3eac67478ac542d99ca5c6994286fdea034dacdf4b64fd14b(
12604
13467
  _: IResolver,
12605
13468
  ) -> None:
12606
13469
  """Type checking stubs"""
12607
13470
  pass
12608
13471
 
13472
+ def _typecheckingstub__82a54cc3274f754056a1301deb3e7902a7a31057da6ade20b64dae8487831db5(
13473
+ *,
13474
+ end_of_line: typing.Optional[EndOfLine] = None,
13475
+ ) -> None:
13476
+ """Type checking stubs"""
13477
+ pass
13478
+
12609
13479
  def _typecheckingstub__ee7f1b3b819a95ebdb112752cdc122d5362da95c419decd69ec24018f344bace(
12610
13480
  *,
13481
+ end_of_line: typing.Optional[EndOfLine] = None,
12611
13482
  lfs_patterns: typing.Optional[typing.Sequence[builtins.str]] = None,
12612
13483
  ) -> None:
12613
13484
  """Type checking stubs"""
@@ -12668,6 +13539,13 @@ def _typecheckingstub__a3547c7b706a8285f987ddb1847fd162ec961a77abbdd5059da647f1a
12668
13539
  """Type checking stubs"""
12669
13540
  pass
12670
13541
 
13542
+ def _typecheckingstub__63d4f6e150362668f5e26d2f58f8b0a32cff82cf2eb8cb736d2c4333d0b01d09(
13543
+ a: builtins.str,
13544
+ b: builtins.str,
13545
+ ) -> None:
13546
+ """Type checking stubs"""
13547
+ pass
13548
+
12671
13549
  def _typecheckingstub__c2360e8cae8e57d0e5268d03b1ee0bcf2a5d56c20a3ca26e5369ddc34c43f0ff(
12672
13550
  image: DevEnvironmentDockerImage,
12673
13551
  ) -> None:
@@ -13454,6 +14332,13 @@ def _typecheckingstub__866645d9e72b430281a892f9aec648a8a4d11dfd83393ea8d1cf161c6
13454
14332
  """Type checking stubs"""
13455
14333
  pass
13456
14334
 
14335
+ def _typecheckingstub__f45a21d1f9e615dd1b225d6cafbe381a43b42811d1d21efd5a3f6630613e94af(
14336
+ index: jsii.Number,
14337
+ *steps: TaskStep,
14338
+ ) -> None:
14339
+ """Type checking stubs"""
14340
+ pass
14341
+
13457
14342
  def _typecheckingstub__72dcbc585fdab7a308274ba33cb7b5bcf9e106aaf01bef404fbb15b6c60db4c4(
13458
14343
  shell: builtins.str,
13459
14344
  *,
@@ -13616,6 +14501,7 @@ def _typecheckingstub__9f502dc8ce342b578300faffc5bd3c8c920c8565849215d7cec099d78
13616
14501
  name: builtins.str,
13617
14502
  parents: typing.Optional[typing.Sequence[builtins.str]] = None,
13618
14503
  args: typing.Optional[typing.Sequence[typing.Union[builtins.str, jsii.Number]]] = None,
14504
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
13619
14505
  ) -> None:
13620
14506
  """Type checking stubs"""
13621
14507
  pass
@@ -13747,7 +14633,7 @@ def _typecheckingstub__ba0f4dd58b9e223b379bf709c046d112cede147b9481878f22a671a9d
13747
14633
  pass
13748
14634
 
13749
14635
  def _typecheckingstub__de7c08620aabeb578ce8c0c54b1073a9df1f34c7815d8ae6fdebff7eb411c3d8(
13750
- project: Project,
14636
+ scope: _constructs_77d1e7e8.IConstruct,
13751
14637
  file_path: builtins.str,
13752
14638
  *,
13753
14639
  obj: typing.Any = None,
@@ -13781,10 +14667,12 @@ def _typecheckingstub__eab22f277a63768ddf4f6605743ad2816e10bd46ac73de98867b0f280
13781
14667
  pass
13782
14668
 
13783
14669
  def _typecheckingstub__9cf64d1b29258435f8a7749178e947fcedd27d55f323782081a21714be909595(
13784
- project: Project,
14670
+ scope: _constructs_77d1e7e8.IConstruct,
13785
14671
  *,
13786
14672
  artifacts_directory: builtins.str,
13787
14673
  version_input_file: builtins.str,
14674
+ bump_package: typing.Optional[builtins.str] = None,
14675
+ next_version_command: typing.Optional[builtins.str] = None,
13788
14676
  releasable_commits: typing.Optional[ReleasableCommits] = None,
13789
14677
  tag_prefix: typing.Optional[builtins.str] = None,
13790
14678
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -13792,10 +14680,23 @@ def _typecheckingstub__9cf64d1b29258435f8a7749178e947fcedd27d55f323782081a21714b
13792
14680
  """Type checking stubs"""
13793
14681
  pass
13794
14682
 
14683
+ def _typecheckingstub__62987907aa24cc1b84e9b6e9b755bd286708fa4a219baa7b979fb3ea61401603(
14684
+ *,
14685
+ major_version: typing.Optional[jsii.Number] = None,
14686
+ min_major_version: typing.Optional[jsii.Number] = None,
14687
+ minor_version: typing.Optional[jsii.Number] = None,
14688
+ prerelease: typing.Optional[builtins.str] = None,
14689
+ tag_prefix: typing.Optional[builtins.str] = None,
14690
+ ) -> None:
14691
+ """Type checking stubs"""
14692
+ pass
14693
+
13795
14694
  def _typecheckingstub__fb94d39bdc04d188bb2447acba8747de3d6ec275231c8a512d647916d69a54f5(
13796
14695
  *,
13797
14696
  artifacts_directory: builtins.str,
13798
14697
  version_input_file: builtins.str,
14698
+ bump_package: typing.Optional[builtins.str] = None,
14699
+ next_version_command: typing.Optional[builtins.str] = None,
13799
14700
  releasable_commits: typing.Optional[ReleasableCommits] = None,
13800
14701
  tag_prefix: typing.Optional[builtins.str] = None,
13801
14702
  versionrc_options: typing.Optional[typing.Mapping[builtins.str, typing.Any]] = None,
@@ -13879,6 +14780,67 @@ def _typecheckingstub__ca9e5a70f67f8e3db454227249c58dd5464be1446a55fcf3be780621f
13879
14780
  """Type checking stubs"""
13880
14781
  pass
13881
14782
 
14783
+ def _typecheckingstub__6ade3e0209730c28511c6c65af7db0ef1d8f6d736618b1a95064af6bf4e829b8(
14784
+ project: Project,
14785
+ *,
14786
+ agents: typing.Optional[typing.Sequence[AiAgent]] = None,
14787
+ agent_specific_instructions: typing.Optional[typing.Mapping[builtins.str, typing.Sequence[builtins.str]]] = None,
14788
+ include_default_instructions: typing.Optional[builtins.bool] = None,
14789
+ instructions: typing.Optional[typing.Sequence[builtins.str]] = None,
14790
+ ) -> None:
14791
+ """Type checking stubs"""
14792
+ pass
14793
+
14794
+ def _typecheckingstub__9b3a19a4e1f7d40bf00205a6394247af85d2428c672a0ecb7904470daaabda2f(
14795
+ project: Project,
14796
+ ) -> None:
14797
+ """Type checking stubs"""
14798
+ pass
14799
+
14800
+ def _typecheckingstub__065453e2727d00b362bd1cf1f58d194d6c355b2a9c2f575e92c43eb627f6eb89(
14801
+ project: Project,
14802
+ ) -> None:
14803
+ """Type checking stubs"""
14804
+ pass
14805
+
14806
+ def _typecheckingstub__9ff14bf0a463b0f887b122f5949af2eedda259c6426a05e006686653e81b8fc8(
14807
+ agent: AiAgent,
14808
+ *instructions: builtins.str,
14809
+ ) -> None:
14810
+ """Type checking stubs"""
14811
+ pass
14812
+
14813
+ def _typecheckingstub__da44882109eef43fd7d698b3f301b9241d695eb97a717ffa73265862f39698ba(
14814
+ *instructions: builtins.str,
14815
+ ) -> None:
14816
+ """Type checking stubs"""
14817
+ pass
14818
+
14819
+ def _typecheckingstub__4b11da88a3895fa642ead3d82823bc49f77ad84be5d7816af5a52334434c5c79(
14820
+ scope: _constructs_77d1e7e8.IConstruct,
14821
+ file_path: builtins.str,
14822
+ *,
14823
+ committed: typing.Optional[builtins.bool] = None,
14824
+ edit_gitignore: typing.Optional[builtins.bool] = None,
14825
+ executable: typing.Optional[builtins.bool] = None,
14826
+ marker: typing.Optional[builtins.bool] = None,
14827
+ readonly: typing.Optional[builtins.bool] = None,
14828
+ ) -> None:
14829
+ """Type checking stubs"""
14830
+ pass
14831
+
14832
+ def _typecheckingstub__da3f715a19bd0c18e2cc2d3bda06afae637174acbe15ef75ef39bb7c26f0ff90(
14833
+ *instructions: builtins.str,
14834
+ ) -> None:
14835
+ """Type checking stubs"""
14836
+ pass
14837
+
14838
+ def _typecheckingstub__af1c3edb2730dd42712c19d9f2ebd48921303c4efd980f8910326afc111d82cc(
14839
+ resolver: IResolver,
14840
+ ) -> None:
14841
+ """Type checking stubs"""
14842
+ pass
14843
+
13882
14844
  def _typecheckingstub__d3a39137d5e4f9c51c84e6a659a0e0d16c23ba1927ed8fe7f3f96ecd5d0110dc(
13883
14845
  *,
13884
14846
  name: builtins.str,
@@ -14080,3 +15042,6 @@ def _typecheckingstub__6e32d65dbc737f8fd131c5593ecf206bcf2a76757ddb7c5f42945d730
14080
15042
  ) -> None:
14081
15043
  """Type checking stubs"""
14082
15044
  pass
15045
+
15046
+ for cls in [ICompareString, IDevEnvironment, IDockerComposeNetworkBinding, IDockerComposeNetworkConfig, IDockerComposeServiceName, IDockerComposeVolumeBinding, IDockerComposeVolumeConfig, IResolvable, IResolver]:
15047
+ typing.cast(typing.Any, cls).__protocol_attrs__ = typing.cast(typing.Any, cls).__protocol_attrs__ - set(['__jsii_proxy_class__', '__jsii_type__'])