Commit 89567373 authored by Robert Speicher's avatar Robert Speicher

Add a `--force` option to bin/changelog

parent 99a12e12
...@@ -12,6 +12,7 @@ Options = Struct.new( ...@@ -12,6 +12,7 @@ Options = Struct.new(
:amend, :amend,
:author, :author,
:dry_run, :dry_run,
:force,
:merge_request, :merge_request,
:title :title
) )
...@@ -29,6 +30,10 @@ class ChangelogOptionParser ...@@ -29,6 +30,10 @@ class ChangelogOptionParser
options.amend = value options.amend = value
end end
opts.on('-f', '--force', 'Overwrite an existing entry') do |value|
options.force = value
end
opts.on('-m', '--merge-request [integer]', Integer, 'Merge Request ID') do |value| opts.on('-m', '--merge-request [integer]', Integer, 'Merge Request ID') do |value|
options.merge_request = value options.merge_request = value
end end
...@@ -111,8 +116,9 @@ class ChangelogEntry ...@@ -111,8 +116,9 @@ class ChangelogEntry
def assert_new_file! def assert_new_file!
return unless File.exist?(file_path) return unless File.exist?(file_path)
return if options.force
fail_with "#{file_path} already exists!" fail_with "#{file_path} already exists! Use `--force` to overwrite."
end end
def assert_title! def assert_title!
......
...@@ -46,13 +46,14 @@ author: ...@@ -46,13 +46,14 @@ author:
The entry filename is based on the name of the current Git branch. If you run The entry filename is based on the name of the current Git branch. If you run
the command above on a branch called `feature/hey-dz`, it will generate a the command above on a branch called `feature/hey-dz`, it will generate a
`changelogs/unreleased/feature-hey-dz` file. `changelogs/unreleased/feature-hey-dz.yml` file.
### Arguments ### Arguments
| Argument | Shorthand | Purpose | | Argument | Shorthand | Purpose |
| ----------------- | --------- | --------------------------------------------- | | ----------------- | --------- | --------------------------------------------- |
| `--amend` | | Amend the previous commit | | `--amend` | | Amend the previous commit |
| `--force` | `-f` | Overwrite an existing entry |
| `--merge-request` | `-m` | Merge Request ID | | `--merge-request` | `-m` | Merge Request ID |
| `--dry-run` | `-n` | Don't actually write anything, just print | | `--dry-run` | `-n` | Don't actually write anything, just print |
| `--git-username` | `-u` | Use Git user.name configuration as the author | | `--git-username` | `-u` | Use Git user.name configuration as the author |
...@@ -79,6 +80,23 @@ merge_request: ...@@ -79,6 +80,23 @@ merge_request:
author: author:
``` ```
#### `--force` or `-f`
Use **`--force`** or **`-f`** to overwrite an existing changelog entry if it
already exists.
```text
$ bin/changelog 'Hey DZ, I added a feature to GitLab!'
error changelogs/unreleased/feature-hey-dz.yml already exists! Use `--force` to overwrite.
$ bin/changelog 'Hey DZ, I added a feature to GitLab!' --force
create changelogs/unreleased/feature-hey-dz.yml
---
title: Hey DZ, I added a feature to GitLab!
merge_request: 1983
author:
```
#### `--merge-request` or `-m` #### `--merge-request` or `-m`
Use the **`--merge-request`** or **`-m`** argument to provide the Use the **`--merge-request`** or **`-m`** argument to provide the
......
...@@ -10,6 +10,18 @@ describe 'bin/changelog' do ...@@ -10,6 +10,18 @@ describe 'bin/changelog' do
expect(options.amend).to eq true expect(options.amend).to eq true
end end
it 'parses --force' do
options = described_class.parse(%w[foo --force bar])
expect(options.force).to eq true
end
it 'parses -f' do
options = described_class.parse(%w[foo -f bar])
expect(options.force).to eq true
end
it 'parses --merge-request' do it 'parses --merge-request' do
options = described_class.parse(%w[foo --merge-request 1234 bar]) options = described_class.parse(%w[foo --merge-request 1234 bar])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment