proj-flow 0.9.1__py3-none-any.whl → 0.9.3__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.
proj_flow/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # Copyright (c) 2025 Marcin Zdun
2
2
  # This code is licensed under MIT license (see LICENSE for details)
3
3
 
4
- __version__ = "0.9.1"
4
+ __version__ = "0.9.3"
proj_flow/api/env.py CHANGED
@@ -312,7 +312,7 @@ class Runtime(FlowConfig):
312
312
  f"proj-flow: error: {args[0]} ended in failure, exiting",
313
313
  file=sys.stderr,
314
314
  )
315
- return 1
315
+ raise SystemExit(1)
316
316
  return 0
317
317
 
318
318
  def capture(self, *args: str, silent=False):
@@ -107,9 +107,10 @@ def release(
107
107
  forced_level = commit.FORCED_LEVEL.get(force) if force else None
108
108
  git = commit.Git(rt)
109
109
  gh_links = hosting.github.GitHub.from_repo(git) or commit.NoHosting()
110
+ released = False
110
111
 
111
112
  try:
112
- log.release.add_release(
113
+ next_tag = log.release.add_release(
113
114
  rt=rt,
114
115
  forced_level=forced_level,
115
116
  take_all=all,
@@ -118,8 +119,16 @@ def release(
118
119
  git=git,
119
120
  hosting=gh_links,
120
121
  )
122
+ released = not not next_tag
121
123
  except log.release.VersionNotAdvancing as err:
122
124
  rt.message(err.message, level=env.Msg.STATUS)
123
- return 0
125
+ return
124
126
  except log.error.ReleaseError as err:
125
127
  rt.fatal(err.message)
128
+ finally:
129
+ if "GITHUB_ACTIONS" in os.environ:
130
+ GITHUB_OUTPUT = os.environ.get("GITHUB_OUTPUT")
131
+ if GITHUB_OUTPUT is not None:
132
+ with open(GITHUB_OUTPUT, "a", encoding="UTF-8") as github_output:
133
+ print(f"tag={next_tag}", file=github_output)
134
+ print(f"released={json.dumps(released)}", file=github_output)
@@ -117,8 +117,17 @@ class GitHub(commit.Hosting):
117
117
  return default
118
118
 
119
119
  if self.rt.verbose:
120
+ self.rt.message(f"[DEBUG] stderr={proc.returncode}")
121
+ self.rt.message("[DEBUG] stderr=")
122
+ try:
123
+ self.rt.message(pformat(json.loads(proc.stderr)))
124
+ except json.decoder.JSONDecodeError:
125
+ self.rt.message(proc.stderr)
120
126
  self.rt.message("[DEBUG] stdout=")
121
- self.rt.message(pformat(json.loads(proc.stdout)))
127
+ try:
128
+ self.rt.message(pformat(json.loads(proc.stdout)))
129
+ except json.decoder.JSONDecodeError:
130
+ self.rt.message(proc.stdout)
122
131
 
123
132
  return json.loads(proc.stdout)
124
133
 
proj_flow/log/release.py CHANGED
@@ -79,9 +79,19 @@ def add_release(
79
79
 
80
80
  prev_tag = tags[-1] if len(tags) > 0 else None
81
81
 
82
+ rt.message("Tags:")
83
+ for tag in reversed(tags):
84
+ rt.message(" >", tag, "*" if tag == prev_tag else "")
85
+
82
86
  setup = commit.LogSetup(hosting, prev_tag, None, take_all=take_all)
83
87
  changelog, log_level = git.get_log(setup)
84
88
 
89
+ rt.message("Changelog:")
90
+ for grp, links in changelog.items():
91
+ rt.message(" >", grp)
92
+ for link in links:
93
+ rt.message(" ", str(link.summary))
94
+
85
95
  project_version = f"{project.version}"
86
96
  next_version = _bump_version(project_version, forced_level or log_level)
87
97
  setup.curr_tag = f"v{next_version}"
@@ -122,4 +132,6 @@ def add_release(
122
132
  if hosting.is_active:
123
133
  draft_url = hosting.add_release(changelog, setup, git, draft).draft_url
124
134
  if draft_url:
125
- rt.message("-- Visit draft at", draft_url, level=env.Msg.ALWAYS)
135
+ rt.message("Visit draft at", draft_url, level=env.Msg.ALWAYS)
136
+
137
+ return setup.curr_tag
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: proj-flow
3
- Version: 0.9.1
3
+ Version: 0.9.3
4
4
  Summary: C++ project maintenance, automated
5
5
  Project-URL: Documentation, https://proj-flow.readthedocs.io/en/latest/
6
6
  Project-URL: Homepage, https://pypi.org/project/proj-flow/
@@ -1,10 +1,10 @@
1
- proj_flow/__init__.py,sha256=2qiJM6cOfWUqTJW18ZmKvi6cF_RaJx8zWUwMy8buHkg,124
1
+ proj_flow/__init__.py,sha256=UcvlQyw_ECyhvo4ly2qBTlEt30Bou0peCXKS0nALR0I,124
2
2
  proj_flow/__main__.py,sha256=HUar_qQ9Ndmchmryegtzu__5wukwCLrFN_SGRl5Ol_M,233
3
3
  proj_flow/api/__init__.py,sha256=gV2f6kll_5JXtvkGASvnx7CbOWr34PHOdck-4ce-qEk,378
4
4
  proj_flow/api/arg.py,sha256=J7_53noW7t8VJ9sfJiX4qaPs7KqWfMHNcrWYe1jIq-g,4097
5
5
  proj_flow/api/completers.py,sha256=NapNVu6QAQ_iF6dqcAzOV5kDHKD9MAMVX209Bklq-Mw,2464
6
6
  proj_flow/api/ctx.py,sha256=AXZSnfLO9w7Uiqa8VtrTzLnNegVZru2sn1-WON3RIyg,5847
7
- proj_flow/api/env.py,sha256=bFDHuFtUR-zEh7fTrEoPFobBLx2W4ZIl4TGJ8E9s5mM,10909
7
+ proj_flow/api/env.py,sha256=btQQ7_xLi4aKR9QnWIV2WrDvHbN4BVB9-fhdhlLzOQk,10920
8
8
  proj_flow/api/init.py,sha256=an0czDiPCDqW4Bp0I8sGQgaAlDAozLO0ZYnP149lWqk,521
9
9
  proj_flow/api/makefile.py,sha256=hNKKe1Mf0V8JZl7yNLn5BJfHXJtjREqDVZ7JDRLkE4M,3858
10
10
  proj_flow/api/release.py,sha256=A-t4qcjeaptEgfBCZs2Q9cOjsGACrNM0CzmCorms0U4,2401
@@ -23,7 +23,7 @@ proj_flow/ext/__init__.py,sha256=XD52rUFTPz3GnyRq6KZUNeWdMce7e0bB19iTx-zU6DE,169
23
23
  proj_flow/ext/markdown_changelist.py,sha256=P6FSfX2yD62Zm5_KnNDKo2XB-K_7rLZsXPcs6xH87xo,351
24
24
  proj_flow/ext/re_structured_changelist.py,sha256=u1mNCvntGRf-r6ti1fRVe-99IgWbxb5htfjzyeVml_0,360
25
25
  proj_flow/ext/github/__init__.py,sha256=_ujB0X99q0DYWMwL1H4TiYyxTzKsE_2Pvzwva91_jrw,260
26
- proj_flow/ext/github/cli.py,sha256=hzfU2Pk3X0T-uZBcesJqZ-fpgxJS0725EZAhETrSHa4,3638
26
+ proj_flow/ext/github/cli.py,sha256=tOo65gZR1JRuitQdbs4i9lG0pxlWRXy2bmsaIbfOyUo,4091
27
27
  proj_flow/ext/github/hosting.py,sha256=3iW8QjeJk7MyqKNbv92nB-5a_Yn_B5_eEIlw_cdgUT0,519
28
28
  proj_flow/ext/python/__init__.py,sha256=GbEKEJJZ3PJ4sRHEykAWjGIR6yyyrYdlUFulldvsAGI,252
29
29
  proj_flow/ext/python/rtdocs.py,sha256=MliuI8GJ0lP7Azyeqt6qCMKLVOy0h7RdTwJbkw2Oc4c,6350
@@ -42,9 +42,9 @@ proj_flow/log/error.py,sha256=65Nvhfs_d1xSY4EB-ISdWgjotvg-on3iKjhAWHpsBYM,841
42
42
  proj_flow/log/fmt.py,sha256=o14aO3iEt5_KKp9SqcfkscqbMKuTI83NBoSXHcrb7Kg,330
43
43
  proj_flow/log/format.py,sha256=gp1kUoW0nYj5e7Ysu1c29Fh2ssfE1KBSDIYeUbhzN9g,333
44
44
  proj_flow/log/msg.py,sha256=zARmRZHFV3yG-fBnx00wal4Y0O5aGnL-6XcGwNBNKA4,6758
45
- proj_flow/log/release.py,sha256=Sv9IPtZizJqHtJVdvx2TCt-a1PNSaFnWPHo2CQaDaC8,3837
45
+ proj_flow/log/release.py,sha256=RhJfgEezXoMh5P8wOph9_xNdQvmOQ2wt60gJwyusIQs,4159
46
46
  proj_flow/log/hosting/__init__.py,sha256=9Teyw8jJcxeWH2MegqYEgW0n5OmSAWC7FFJj2u_UcrM,278
47
- proj_flow/log/hosting/github.py,sha256=-13krmAqTWcOQ21ZPSrMeZ4ipmgBSMCgoVk9AstpsvQ,6747
47
+ proj_flow/log/hosting/github.py,sha256=yLjJ9gSuOnnC87phPFNc4N2yWno0iIi7BruhSrYOjEI,7151
48
48
  proj_flow/log/rich_text/__init__.py,sha256=D3Y2jy9xlGgnQZdNC_ekoLzQtwkF_NTgLqDTWPvSRUk,279
49
49
  proj_flow/log/rich_text/api.py,sha256=PCSAGwkmDUMoVlpN7BDsgIA1AiMZEC0H6TUZXpr_Mg8,3571
50
50
  proj_flow/log/rich_text/markdown.py,sha256=GVDH7hONyATRG4FyXkSvprEzxikRXiErGyINjiJfQx8,1618
@@ -133,8 +133,8 @@ proj_flow/template/licenses/MIT.mustache,sha256=NncPoQaNsuy-WmRmboik3fyhJJ8m5pc2
133
133
  proj_flow/template/licenses/Unlicense.mustache,sha256=awOCsWJ58m_2kBQwBUGWejVqZm6wuRtCL2hi9rfa0X4,1211
134
134
  proj_flow/template/licenses/WTFPL.mustache,sha256=lvF4V_PrKKfZPa2TC8CZo8tlqaKvs3Bpv9G6XsWWQ4k,483
135
135
  proj_flow/template/licenses/Zlib.mustache,sha256=uIj-mhSjes2HJ3rRapyy2ALflKRz4xQgS4mVM9827C0,868
136
- proj_flow-0.9.1.dist-info/METADATA,sha256=Um3PvrSXnuT1toPjAkEjlDfDa2j3YtxxAy_G6tVaIYM,2780
137
- proj_flow-0.9.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
138
- proj_flow-0.9.1.dist-info/entry_points.txt,sha256=d_OmGKZzpY7FCWz0sZ4wnBAPZC75oMEzTgJZWtpDELo,49
139
- proj_flow-0.9.1.dist-info/licenses/LICENSE,sha256=vpOQJ5QlrTedF3coEWvA4wJzVJH304f66ZitR7Od4iU,1068
140
- proj_flow-0.9.1.dist-info/RECORD,,
136
+ proj_flow-0.9.3.dist-info/METADATA,sha256=DO2YSQjEvWKoi3qLVzQYIcd2ClW-RGPzhqbgeqZrQp4,2780
137
+ proj_flow-0.9.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
138
+ proj_flow-0.9.3.dist-info/entry_points.txt,sha256=d_OmGKZzpY7FCWz0sZ4wnBAPZC75oMEzTgJZWtpDELo,49
139
+ proj_flow-0.9.3.dist-info/licenses/LICENSE,sha256=vpOQJ5QlrTedF3coEWvA4wJzVJH304f66ZitR7Od4iU,1068
140
+ proj_flow-0.9.3.dist-info/RECORD,,