0.0
No release in over 3 years
Change files and create patches
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 0
~> 13.0
>= 0
~> 3.0
>= 0
>= 0

Runtime

>= 3.0, < 4.0
>= 2.0, < 3.0
>= 6.0, < 7.0
>= 10.0, < 11.0
>= 1.0, < 2.0
>= 1.0, < 2.0
 Project Readme

SashimiTanpopo 🍣 🌼

Change files and create patches

Gem Version test

Example

# recipe.rb

update_file ".ruby-version" do |content|
  content.gsub!(/^[\d.]+$/, params[:ruby_version])
end

update_file "Dockerfile" do |content|
  content.gsub!(/^FROM ruby:([\d.]+)$/, %Q{FROM ruby:#{params[:ruby_version]}})
end

@ruby_minor_version = params[:ruby_version].to_f

update_file ".rubocop.yml" do |content|
  content.gsub!(/TargetRubyVersion: ([\d.]+)/, "TargetRubyVersion: #{@ruby_minor_version}")
end

update_file ".github/workflows/*.yml" do |content|
  content.gsub!(/ruby-version: "(.+)"/, %Q{ruby-version: "#{params[:ruby_version]}"})
end
# Update local app files using recipe.rb
$ sashimi_tanpopo local --target-dir=/path/to/app --params=ruby_version:3.4.5 /path/to/recipe.rb

# Update local app files using recipe.rb and create Pull Request
$ sashimi_tanpopo github --target-dir=/path/to/app --params=ruby_version:3.4.5 \
--message="Upgrade to Ruby 3.4.5" --github-repository=yourname/yourrepo --pr-title="Upgrade to Ruby 3.4.5" \
--pr-source-branch=ruby_3.4.5 --pr-target-branch=main --pr-draft /path/to/recipe.rb

Installation

Use gem directly

gem install sashimi_tanpopo

Use via docker

e.g.

docker run -v /path/to/recipe_dir:/recipes:ro -v $(pwd):/work --rm ghcr.io/sue445/sashimi_tanpopo <local|github|gitlab> <arguments> /recipes/recipe.rb

Usage

sashimi_tanpopo local

Change local files using recipe files

$ sashimi_tanpopo help local

Usage:
  sashimi_tanpopo local RECIPE [RECIPE...]

Options:
  -d, [--target-dir=TARGET_DIR]                      # Target directory. Default: current directory
  -p, [--params=key:value]                           # Params passed to recipe file
      [--dry-run], [--no-dry-run], [--skip-dry-run]  # Whether to run dry run
                                                     # Default: false
      [--color], [--no-color], [--skip-color]        # Whether to colorize output
                                                     # Default: true

sashimi_tanpopo github

Change local files using recipe files and create Pull Request

$ sashimi_tanpopo help github

Usage:
  sashimi_tanpopo github RECIPE [RECIPE...] --pr-source-branch=pr_branch --pr-title=PR_TITLE -m, --message=COMMIT_MESSAGE

Options:
  -d, [--target-dir=TARGET_DIR]                         # Target directory. Default: current directory
  -p, [--params=key:value]                              # Params passed to recipe file
      [--dry-run], [--no-dry-run], [--skip-dry-run]     # Whether to run dry run
                                                        # Default: false
      [--color], [--no-color], [--skip-color]           # Whether to colorize output
                                                        # Default: true
      [--git-user-name=GIT_USER_NAME]                   # user name for git commit. Default: username of user authenticated with token
      [--git-email=GIT_EMAIL]                           # email for git commit. Default: <git_user_name>@users.noreply.<github_host>
  -m, --message=COMMIT_MESSAGE                          # commit message
      [--github-repository=user/repo]                   # GitHub repository for Pull Request. One of --github--repository or $GITHUB_REPOSITORY is required [$GITHUB_REPOSITORY]
      [--github-api-url=GITHUB_API_URL]                 # GitHub API endpoint. One of --github-api-url or $GITHUB_API_URL is required [$GITHUB_API_URL]
                                                        # Default: https://api.github.com
      [--github-token=GITHUB_TOKEN]                     # GitHub access token. One of --github-token or $GITHUB_TOKEN is required [$GITHUB_TOKEN]
      --pr-title=PR_TITLE                               # Pull Request title
      [--pr-body=PR_BODY]                               # Pull Request body
      --pr-source-branch=pr_branch                      # Pull Request source branch (a.k.a. head branch)
      [--pr-target-branch=main]                         # Pull Request target branch (a.k.a. base branch). One of --pr-target-branch or $GITHUB_REF_NAME is required [$GITHUB_REF_NAME]
      [--pr-assignees=one two three]                    # Pull Request assignees
      [--pr-reviewers=one two three]                    # Pull Request reviewers
      [--pr-labels=one two three]                       # Pull Request labels
      [--pr-draft], [--no-pr-draft], [--skip-pr-draft]  # Whether to create draft Pull Request
                                                        # Default: false

--github-token requires followings repository permissions

  • Contents: Read and Write
  • Pull requests: Read and Write
  • Metadata: Read-only
  • Workflows: Read and Write
    • Only if you want to change .github/workflows/*.yml

sashimi_tanpopo gitlab

Change local files using recipe files and create Merge Request

$ sashimi_tanpopo help gitlab

Usage:
  sashimi_tanpopo gitlab RECIPE [RECIPE...] --mr-source-branch=mr_branch --mr-title=MR_TITLE -m, --message=COMMIT_MESSAGE

Options:
  -d, [--target-dir=TARGET_DIR]                                        # Target directory. Default: current directory
  -p, [--params=key:value]                                             # Params passed to recipe file
      [--dry-run], [--no-dry-run], [--skip-dry-run]                    # Whether to run dry run
                                                                       # Default: false
      [--color], [--no-color], [--skip-color]                          # Whether to colorize output
                                                                       # Default: true
      [--git-user-name=GIT_USER_NAME]                                  # user name for git commit. Default: username of user authenticated with token
      [--git-email=GIT_EMAIL]                                          # email for git commit. Default: <git_user_name>@noreply.<gitlab_host>
  -m, --message=COMMIT_MESSAGE                                         # commit message
      [--gitlab-project=user/repo]                                     # GitLab project for Merge Request. One of --gitlab-project, $GITLAB_PROJECT or $CI_PROJECT_PATH is required [$GITLAB_PROJECT, $CI_PROJECT_PATH]
      [--gitlab-api-url=GITLAB_API_URL]                                # GitLab API endpoint. One of --gitlab-api-url, $GITLAB_API_URL or $CI_API_V4_URL is required [$GITLAB_API_URL, $CI_API_V4_URL]
                                                                       # Default: https://gitlab.com/api/v4
      [--gitlab-token=GITLAB_TOKEN]                                    # GitLab access token. One of --gitlab-token or $GITLAB_TOKEN is required [$GITLAB_TOKEN]
      --mr-title=MR_TITLE                                              # Merge Request title
      [--mr-body=MR_BODY]                                              # Merge Request body
      --mr-source-branch=mr_branch                                     # Merge Request source branch
      [--mr-target-branch=main]                                        # Merge Request target branch). One of --mr-target-branch, $MR_TARGET_BRANCH or $CI_DEFAULT_BRANCH is required [$MR_TARGET_BRANCH, $CI_DEFAULT_BRANCH]
      [--mr-assignees=one two three]                                   # Merge Request assignees
      [--mr-reviewers=one two three]                                   # Merge Request reviewers
      [--mr-labels=one two three]                                      # Merge Request labels
      [--mr-draft], [--no-mr-draft], [--skip-mr-draft]                 # Whether to create draft Merge Request
                                                                       # Default: false
      [--mr-auto-merge], [--no-mr-auto-merge], [--skip-mr-auto-merge]  # Whether to set auto-merge to Merge Request
                                                                       # Default: false

--gitlab-token requires followings permissions

  • Role: Developer
  • Scopes: api

Recipe file specification

See docs/RECIPE.md

Use on CI services

GitHub Actions

https://github.com/marketplace/actions/sashimi_tanpopo_action

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and the created tag, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/sue445/sashimi_tanpopo.

License

The gem is available as open source under the terms of the MIT License.