Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.1.0 #86

Merged
merged 12 commits into from
May 21, 2024
3 changes: 3 additions & 0 deletions .github/git-pr-release-template.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<%= ENV['GIT_PR_RELEASE_TITLE'] %>

<%= ENV['GIT_PR_RELEASE_BODY'] %>
69 changes: 69 additions & 0 deletions .github/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
prerelease: true

# Filter previous releases considering target_commitish
include-pre-releases: true
filter-by-commitish: true

# Versioning configuration
tag: "v0.0.0"

categories:
- title: 'BREAKING CHANGES'
labels:
- 'breaking'
- title: '💎 Features'
labels:
- 'feature'
- title: '🚀 Improvement'
labels:
- 'enhancement'
- title: '🐛 Bug Fixes'
labels:
- 'bug'
- title: '🧰 Maintenance'
labels:
- 'support'
- 'dependencies'
- title: '🧹 Chore'
labels:
- 'chore'

category-template: '### $TITLE'

change-title-escapes: '\<*_&#@`' # Updated to disable mentions and code blocks

autolabeler:
- label: 'feature'
branch:
- '/^feat\/.+/'
- label: 'enhancement'
branch:
- '/^refac\/.+/'
- label: 'bug'
branch:
- '/^fix\/.+/'
title:
- '/^fix/i'
- label: 'support'
branch:
- '/^support\/.+/'
title:
- '/^support/i'
- '/^chore/i'
- '/^ci/i'
- '/^docs/i'
- '/^test/i'

include-labels:
- breaking
- feature
- enhancement
- bug
- support
- dependencies

exclude-labels:
- 'exclude-from-changelog'

template: |
$CHANGES
50 changes: 50 additions & 0 deletions .github/workflows/draft-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Draft Release

on:
push:
branches:
- main
- dev/*.*.*

permissions:
contents: write
actions: write # Necessary to cancel workflow executions
checks: write # Necessary to write reports
pull-requests: write # Necessary to comment on PRs

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:

# Refs: https://github.com/release-drafter/release-drafter
update-release-draft:
runs-on: ubuntu-latest

outputs:
CURRENT_VERSION: ${{ steps.version.outputs.project_version }}
RELEASE_DRAFT_BODY: ${{ steps.release-drafter.outputs.body }}

steps:
- uses: actions/checkout@v4
with:
repository: ut-issl/c2a-generator
ssh-key: ${{ secrets.PRIVATE_REPO_SSH_KEY }}

- name: Read version from pyproject.toml
id: version
run: |
version=$(awk -F\" '/version =/ {print $2}' pyproject.toml)
echo "::set-output name=project_version::$version"
- uses: release-drafter/release-drafter@v6
id: release-drafter
with:
config-name: release-drafter.yml
name: v${{ steps.version.outputs.project_version }}
tag: v${{ steps.version.outputs.project_version }}
version: ${{ steps.version.outputs.project_version }}
disable-autolabeler: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
56 changes: 56 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Release

on:
pull_request:
branches:
- release/current
- release/*.*.*
types: [closed]

permissions:
contents: write

jobs:
create-github-release:

runs-on: ubuntu-latest

if: github.event.pull_request.merged == true

outputs:
RELEASED_VERSION: ${{ steps.version.outputs.project_version }}

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.ref }}

- name: Read version from pyproject.toml
id: version
run: |
version=$(awk -F\" '/version =/ {print $2}' pyproject.toml)
echo "::set-output name=project_version::$version"

- name: Update Changelog
uses: stefanzweifel/changelog-updater-action@v1
with:
latest-version: v${{ steps.version.outputs.project_version }}
release-notes: ${{ github.event.pull_request.body }}

- name: Commit, Tag and Push
uses: stefanzweifel/git-auto-commit-action@v5
with:
branch: ${{ github.event.pull_request.base.ref }}
commit_message: Release v${{ steps.version.outputs.project_version }}
tagging_message: v${{ steps.version.outputs.project_version }}

- uses: softprops/action-gh-release@v2
with:
body: ${{ github.event.pull_request.body }}
tag_name: v${{ steps.version.outputs.project_version }}
target_commitish: ${{ github.head_ref }}

- name: Delete drafts
uses: hugo19941994/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.11
3.12
Empty file added CHANGELOG
Empty file.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Changelog
2 changes: 2 additions & 0 deletions c2a_generator/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
from .cmd_csv import generate # noqa
from .cmd_def_c import generate # noqa
from .cmd_def_h import generate # noqa
from .eh_rules_c import generate # noqa
from .eh_rules_h import generate # noqa
from .subobc_cmd_def_h import generate # noqa
from .subobc_tlm_buf_c import generate # noqa
from .subobc_tlm_buf_h import generate # noqa
Expand Down
54 changes: 54 additions & 0 deletions c2a_generator/eh_rules_c.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import csv
from pathlib import Path


def generate(src_path: str, dest_path: Path, eh_header: str) -> None:
assert dest_path.parent.exists(), f"{dest_path} does not exist"
with open(src_path, "r", encoding="utf-8") as csv_file, open(dest_path, "w", encoding="utf-8") as src_file:
src_file.write(
f"""
#pragma section REPRO
/**
* @file
* @brief EH の Rule 共通コード
*/
{eh_header}

void EH_load_default_rules(void)
{{
EH_RuleSettings settings;

"""[
1:
]
)
reader = csv.reader(csv_file)
headers = next(reader)
dict_reader = csv.DictReader(csv_file, fieldnames=headers)
for row in dict_reader:
if not any(row):
continue
code = ""
if row["description"]:
row_description = row["description"].replace("\n", "\n// ")
code += f" // {row_description}\n"
code += f" settings.event.group = {row['group']};\n"
code += f" settings.event.local = {row['local']};\n"
code += f" settings.event.err_level = EL_ERROR_LEVEL_{row['err_level']};\n"
code += f" settings.should_match_err_level = {1 if row['should_match_err_level'] == 'TRUE' else 0};\n"
code += f" settings.condition.type = EH_RESPONSE_CONDITION_{row['type'].upper()};\n"
code += f" settings.condition.count_threshold = {row['count_threshold']};\n"
code += f" settings.condition.time_threshold_ms = {int(float(row['time_threshold[s]']) * 1000)};\n"
code += f" settings.deploy_bct_id = {row['bc']};\n"
code += f" settings.is_active = {1 if row['should_match_err_level'] == 'TRUE' else 0};\n"
code += f" EH_register_rule({row['name']}, &settings);\n\n"
src_file.write(code)
src_file.write(
"""}
}

#pragma section
"""[
1:
]
)
56 changes: 56 additions & 0 deletions c2a_generator/eh_rules_h.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import csv
from pathlib import Path


def generate(src_path: str, dest_path: Path, base_id: int) -> None:
assert dest_path.parent.exists(), f"{dest_path} does not exist"
with open(src_path, "r", encoding="utf-8") as csv_file, open(dest_path, "w", encoding="utf-8") as header_file:
header_file.write(
"""
/**
* @file
* @brief EH の Rule 共通ヘッダ
*/
#ifndef EVENT_HANDLER_RULES_H_
#define EVENT_HANDLER_RULES_H_

/**
* @enum EH_RULE_ID
* @brief EH_Rule の ID
* @note 最大数は EH_RULE_MAX で規定
* @note uint16_t を想定
*/
typedef enum
{
"""[
1:
]
)
reader = csv.reader(csv_file)
headers = next(reader)
dict_reader = csv.DictReader(csv_file, fieldnames=headers)
for row in dict_reader:
if not any(row):
continue
try:
header_file.write(f' {row["name"]} = {base_id},\n')
base_id += 1
except ValueError:
continue
header_file.write(
"""
} EH_RULE_ID;


/**
* @brief event_handler のデフォルトルールを読み込む
* @param void
* @return void
*/
void EH_load_default_rules(void);

#endif
"""[
1:
]
)
18 changes: 17 additions & 1 deletion c2a_generator/wings_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ def generate(
aobc_csv_path: Optional[Path] = None,
tobc_csv_path: Optional[Path] = None,
mif_csv_path: Optional[Path] = None,
eh_src: Optional[Path] = None,
eh_base_id: int = 0,
eh_list: list = [],
) -> None:
data = []
if aobc_csv_path:
Expand All @@ -37,7 +40,20 @@ def generate(
if mif_csv_path:
mif_bc_dict = csv_to_json(mif_csv_path)
data.append({"obc_name": "MIF", "bc": mif_bc_dict, "el": [], "eh": []})
data.append({"obc_name": "MOBC", "bc": [], "el": [], "eh": []})
if eh_src:
with open(eh_src, "r", encoding="utf-8") as src_file:
reader = csv.reader(src_file)
headers = next(reader)
dict_reader = csv.DictReader(src_file, fieldnames=headers)

for row in dict_reader:
if not any(row):
continue
if not row["name"].strip():
continue
eh_list.append({"name": row["name"], "id": eh_base_id})
eh_base_id += 1
data.append({"obc_name": "MOBC", "bc": [], "el": [], "eh": eh_list})
bcid = 0
for src_path, bcid_base in bct_src:
if bcid_base is not None:
Expand Down
25 changes: 0 additions & 25 deletions c2a_generator_config.toml

This file was deleted.

Loading
Loading