44import re
55import subprocess
66import sys
7- from enum import Enum
87from pathlib import Path
98from typing import (
109 List ,
2120)
2221from exasol .toolbox .nox .plugin import NoxTasks
2322from exasol .toolbox .release import (
23+ ReleaseTypes ,
2424 Version ,
2525 extract_release_notes ,
2626 new_changelog ,
3333def _create_parser () -> argparse .ArgumentParser :
3434 parser = argparse .ArgumentParser (
3535 prog = "nox -s release:prepare" ,
36- usage = "nox -s release:experimental -- [-h] [-v | --version VERSION ] [-t | --type {major,minor,patch}]" ,
36+ usage = "nox -s release:prepare -- [-h] [-t | --type {major,minor,patch}]" ,
3737 formatter_class = argparse .ArgumentDefaultsHelpFormatter ,
3838 )
39- group = parser .add_mutually_exclusive_group (required = True )
40- group .add_argument (
41- "-v" ,
42- "--version" ,
43- type = cli .version ,
44- help = "A version string of the following format:" '"NUMBER.NUMBER.NUMBER"' ,
45- required = False ,
46- default = argparse .SUPPRESS ,
47- )
48- group .add_argument (
39+ parser .add_argument (
4940 "-t" ,
5041 "--type" ,
5142 type = ReleaseTypes ,
5243 help = "specifies which type of upgrade is to be performed" ,
53- required = False ,
44+ required = True ,
5445 choices = [rt .value for rt in list (ReleaseTypes )],
5546 default = argparse .SUPPRESS ,
5647 )
@@ -106,12 +97,6 @@ def _add_files_to_index(session: Session, files: list[Path]) -> None:
10697 session .run ("git" , "add" , f"{ file } " )
10798
10899
109- class ReleaseTypes (Enum ):
110- Major = "major"
111- Minor = "minor"
112- Patch = "patch"
113-
114-
115100def _type_release (release_type : ReleaseTypes , old_version : Version ) -> Version :
116101 upgrade = {
117102 ReleaseTypes .Major : Version (old_version .major + 1 , 0 , 0 ),
@@ -123,29 +108,6 @@ def _type_release(release_type: ReleaseTypes, old_version: Version) -> Version:
123108 return upgrade [release_type ]
124109
125110
126- def _version_control (
127- session : Session ,
128- args : argparse .Namespace ,
129- ) -> Version :
130- has_release_version = hasattr (args , "version" )
131- has_release_type = hasattr (args , "type" )
132-
133- old_version = Version .from_poetry ()
134-
135- if has_release_version and not has_release_type :
136- if not _is_valid_version (old = old_version , new = args .version ):
137- session .error (
138- f"Invalid version: the release version ({ args .version } ) "
139- f"must be greater than or equal to the current version ({ args .version } )"
140- )
141- return args .version
142-
143- if not has_release_version and has_release_type :
144- return _type_release (release_type = args .type , old_version = old_version )
145-
146- session .error ("version not allowed with type" )
147-
148-
149111class ReleaseError (Exception ):
150112 """Error during trigger release"""
151113
@@ -188,8 +150,7 @@ def prepare_release(session: Session, python=False) -> None:
188150 parser = _create_parser ()
189151 args = parser .parse_args (session .posargs )
190152
191- new_version = _version_control (session , args )
192- print (f"release version: { new_version } " )
153+ new_version = Version .upgrade_version_from_poetry (args .type )
193154
194155 if not args .no_branch and not args .no_add :
195156 session .run ("git" , "switch" , "-c" , f"release/prepare-{ new_version } " )
@@ -236,4 +197,4 @@ def prepare_release(session: Session, python=False) -> None:
236197@nox .session (name = "release:trigger" , python = False )
237198def trigger_release (session : Session ) -> None :
238199 """releases the project automatically"""
239- print (_trigger_release ())
200+ print (f"new version: { _trigger_release ()} " )
0 commit comments