github-nippou 3.0.0.beta1 → 3.0.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bfc8acb06e7f4d5971323ca515e9c6395e2f0e15
4
- data.tar.gz: f17aca19e5918f47a96447e184ced1d51a8166de
3
+ metadata.gz: 2b2635f8f5c14d8ecf0f10ffa0595d01a8b3a6a2
4
+ data.tar.gz: 394c46d23a5672976d245179a8cbcee420a8f92f
5
5
  SHA512:
6
- metadata.gz: d5598fbc8daf144ef77bc82ff48812d1f219dbd61491d987817b23ab470ca55caebf2596eb038873ad026eca4866c64aacc212771c05dbda30e2aba63fe717db
7
- data.tar.gz: 4ec3ecf571db54972a3f768d2278778aa560d3e3697f6957b066a1a77a0892d525783b191c3561b99387dc0b8ed88d876c0c5c1d818e812630fefd8e07ccaad9
6
+ metadata.gz: 97396ec2e51a931f4124c6b48e0b917d1fb14c11653ea551d3a0bf9c65b98d49259882043228c4d365458dd7642a559afbcfb6b9fd5f1f5ef7f1ab08bc9a5d17
7
+ data.tar.gz: 2309f8a4184accc68c906c6328e8d7bba76839c8aad9df220b7a6bf53d6ac7ca7725c59c62807efbe44178c1e946620f5e38f7cda6a225e25bddc98f6d0ee891
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4.1
4
+ - 2.3.4
5
+ before_install: gem install -N bundler
@@ -1,8 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- github-nippou (3.0.0.beta1)
4
+ github-nippou (3.0.0.beta2)
5
5
  activesupport
6
+ highline
7
+ launchy
6
8
  octokit
7
9
  parallel
8
10
  thor
@@ -10,23 +12,28 @@ PATH
10
12
  GEM
11
13
  remote: https://rubygems.org/
12
14
  specs:
13
- activesupport (5.0.0)
15
+ activesupport (5.1.3)
14
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
15
17
  i18n (~> 0.7)
16
18
  minitest (~> 5.1)
17
19
  tzinfo (~> 1.1)
18
- addressable (2.4.0)
19
- concurrent-ruby (1.0.2)
20
+ addressable (2.5.1)
21
+ public_suffix (~> 2.0, >= 2.0.2)
22
+ concurrent-ruby (1.0.5)
20
23
  diff-lcs (1.3)
21
- faraday (0.9.2)
24
+ faraday (0.12.2)
22
25
  multipart-post (>= 1.2, < 3)
23
- i18n (0.7.0)
24
- minitest (5.9.0)
26
+ highline (1.7.8)
27
+ i18n (0.8.6)
28
+ launchy (2.4.3)
29
+ addressable (~> 2.3)
30
+ minitest (5.10.3)
25
31
  multipart-post (2.0.0)
26
- octokit (4.3.0)
27
- sawyer (~> 0.7.0, >= 0.5.3)
28
- parallel (1.9.0)
29
- rake (11.2.2)
32
+ octokit (4.7.0)
33
+ sawyer (~> 0.8.0, >= 0.5.3)
34
+ parallel (1.12.0)
35
+ public_suffix (2.0.5)
36
+ rake (12.0.0)
30
37
  rspec (3.6.0)
31
38
  rspec-core (~> 3.6.0)
32
39
  rspec-expectations (~> 3.6.0)
@@ -40,12 +47,12 @@ GEM
40
47
  diff-lcs (>= 1.2.0, < 2.0)
41
48
  rspec-support (~> 3.6.0)
42
49
  rspec-support (3.6.0)
43
- sawyer (0.7.0)
44
- addressable (>= 2.3.5, < 2.5)
45
- faraday (~> 0.8, < 0.10)
46
- thor (0.19.1)
47
- thread_safe (0.3.5)
48
- tzinfo (1.2.2)
50
+ sawyer (0.8.1)
51
+ addressable (>= 2.3.5, < 2.6)
52
+ faraday (~> 0.8, < 1.0)
53
+ thor (0.19.4)
54
+ thread_safe (0.3.6)
55
+ tzinfo (1.2.3)
49
56
  thread_safe (~> 0.1)
50
57
 
51
58
  PLATFORMS
data/README.md CHANGED
@@ -1,4 +1,12 @@
1
- # Github::Nippou [![Gem Version][gem-badge]][gem-link]
1
+ # Github::Nippou
2
+
3
+ [![Travis Status](https://img.shields.io/travis/masutaka/github-nippou.svg?style=flat-square)][travisci]
4
+ [![License](https://img.shields.io/github/license/masutaka/github-nippou.svg?style=flat-square)][license]
5
+ [![Gem](https://img.shields.io/gem/v/github-nippou.svg?style=flat-square)][gem-link]
6
+
7
+ [travisci]: https://travis-ci.org/masutaka/github-nippou
8
+ [license]: https://github.com/masutaka/github-nippou/blob/master/LICENSE.txt
9
+ [gem-link]: http://badge.fury.io/rb/github-nippou
2
10
 
3
11
  Displays today's your GitHub action.
4
12
 
@@ -70,6 +78,3 @@ You can omit the sub command `list`.
70
78
  In Japanese
71
79
 
72
80
  [github-nippou - GitHubから日報を作成 MOONGIFT](http://www.moongift.jp/2016/06/github-nippou-github%E3%81%8B%E3%82%89%E6%97%A5%E5%A0%B1%E3%82%92%E4%BD%9C%E6%88%90/)
73
-
74
- [gem-badge]: https://badge.fury.io/rb/github-nippou.svg
75
- [gem-link]: http://badge.fury.io/rb/github-nippou
data/Rakefile CHANGED
@@ -1 +1,5 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new('spec')
5
+ task default: :spec
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ['lib']
22
22
 
23
23
  spec.add_dependency 'activesupport'
24
+ spec.add_dependency 'highline'
25
+ spec.add_dependency 'launchy'
24
26
  spec.add_dependency 'octokit'
25
27
  spec.add_dependency 'parallel'
26
28
  spec.add_dependency 'thor'
@@ -3,5 +3,6 @@ require 'github/nippou/concerns/string_markdown'
3
3
 
4
4
  require 'github/nippou/commands'
5
5
  require 'github/nippou/format'
6
+ require 'github/nippou/settings'
6
7
  require 'github/nippou/user_events'
7
8
  require 'github/nippou/version'
@@ -1,3 +1,5 @@
1
+ require 'highline/import'
2
+ require 'launchy'
1
3
  require 'parallel'
2
4
  require 'thor'
3
5
  require 'yaml'
@@ -14,7 +16,7 @@ module Github
14
16
  aliases: :u, desc: 'Retrieves GitHub user_events until the date'
15
17
  class_option :debug, type: :boolean, default: false, aliases: :d, desc: 'Debug mode'
16
18
 
17
- desc 'list', "Displays today's GitHub events formatted for Nippou"
19
+ desc 'list', "Displays today's GitHub events formatted for Nippou (Default)"
18
20
  def list
19
21
  lines = []
20
22
  mutex = Mutex.new
@@ -36,35 +38,48 @@ module Github
36
38
  puts <<~MESSAGE
37
39
  ** Gist scope required.
38
40
 
39
- You need personal access token which has gist scope.
40
- Please add gist scope on your personal access token if you use this command.
41
+ You need personal access token which has `gist` scope.
42
+ Please add `gist` scope to your personal access token, visit
43
+ https://github.com/settings/tokens
41
44
  MESSAGE
42
45
  exit!
43
46
  end
44
- unless `git config github-nippou.settings-gist-id`.chomp.empty?
47
+
48
+ if settings.gist_id.present?
45
49
  puts <<~MESSAGE
46
50
  ** Already initialized.
47
51
 
48
- It already have gist id that github-nippou.settings-gist-id on your .gitconfig.
52
+ Your `~/.gitconfig` already has gist_id as `github-nippou.settings-gist-id`.
49
53
  MESSAGE
50
- exit!
54
+ exit
55
+ end
56
+
57
+ puts 'This command will create a gist and update your `~/.gitconfig`.'
58
+
59
+ unless HighLine.agree('Are you sure? [y/n] ')
60
+ puts 'Canceled.'
61
+ abort
51
62
  end
52
63
 
53
- result = client.create_gist(
54
- description: 'github-nippou settings',
55
- public: true,
56
- files: { 'settings.yml' => { content: settings.to_yaml }}
57
- ).to_h
58
- `git config --global github-nippou.settings-gist-id #{result[:id]}`
64
+ gist = settings.create_gist
65
+ `git config --global github-nippou.settings-gist-id #{gist.id}`
59
66
 
60
67
  puts <<~MESSAGE
61
- The github-nippou settings was created on following url: #{result[:html_url]}
62
- And the gist id was set your .gitconfig
63
- You can check the gist id with following command
68
+ The github-nippou settings was created on #{gist.html_url}
69
+
70
+ And the gist_id was appended to your `~/.gitconfig`. You can
71
+ check the gist_id with following command.
72
+
64
73
  $ git config --global github-nippou.settings-gist-id
65
74
  MESSAGE
66
75
  end
67
76
 
77
+ desc 'open-settings', 'Open settings url with web browser'
78
+ def open_settings
79
+ puts "Open #{settings.url}"
80
+ Launchy.open(settings.url)
81
+ end
82
+
68
83
  desc 'version', 'Displays version'
69
84
  def version
70
85
  puts VERSION
@@ -93,7 +108,7 @@ module Github
93
108
  puts <<~MESSAGE
94
109
  ** User required.
95
110
 
96
- Please set github-nippou.user to your .gitconfig.
111
+ Please set github-nippou.user to your `~/.gitconfig`.
97
112
  $ git config --global github-nippou.user [Your GitHub account]
98
113
  MESSAGE
99
114
  exit!
@@ -111,10 +126,10 @@ module Github
111
126
  puts <<~MESSAGE
112
127
  ** Authorization required.
113
128
 
114
- Please set github-nippou.token to your .gitconfig.
129
+ Please set github-nippou.token to your `~/.gitconfig`.
115
130
  $ git config --global github-nippou.token [Your GitHub access token]
116
131
 
117
- To get new token with `repo` scope, visit
132
+ To get new token with `repo` and `gist` scope, visit
118
133
  https://github.com/settings/tokens/new
119
134
  MESSAGE
120
135
  exit!
@@ -122,34 +137,7 @@ module Github
122
137
  end
123
138
 
124
139
  def settings
125
- return @settings if @settings.present?
126
-
127
- yaml_data =
128
- case
129
- when ENV['GITHUB_NIPPOU_SETTINGS']
130
- ENV['GITHUB_NIPPOU_SETTINGS'].chomp
131
- when !`git config github-nippou.settings`.chomp.empty?
132
- `git config github-nippou.settings`.chomp
133
- when !`git config github-nippou.settings-gist-id`.chomp.empty?
134
- gist_id = `git config github-nippou.settings-gist-id`.chomp
135
- gist = client.gist(gist_id)
136
- gist[:files][:'settings.yml'][:content]
137
- end
138
-
139
- @settings =
140
- if yaml_data
141
- YAML.load(yaml_data).deep_symbolize_keys
142
- else
143
- YAML.load_file(File.expand_path('../../../config/settings.yml', __dir__)).deep_symbolize_keys
144
- end
145
- rescue Psych::SyntaxError => e
146
- puts <<~MESSAGE
147
- ** YAML syntax error.
148
-
149
- #{e.message}
150
- #{yaml_data}
151
- MESSAGE
152
- exit
140
+ @settings ||= Settings.new(client: client)
153
141
  end
154
142
 
155
143
  def thread_num
@@ -4,8 +4,10 @@ module Github
4
4
  using SawyerResourceGithub
5
5
  using StringMarkdown
6
6
 
7
- attr_reader :settings
8
-
7
+ # @param client [Octokit::Client]
8
+ # @param thread_num [Integer]
9
+ # @param settings [Settings]
10
+ # @param debug [Boolean]
9
11
  def initialize(client, thread_num, settings, debug)
10
12
  @client = client
11
13
  @thread_num = thread_num
@@ -55,6 +57,8 @@ module Github
55
57
 
56
58
  private
57
59
 
60
+ attr_reader :settings
61
+
58
62
  def issue(user_event)
59
63
  case
60
64
  when user_event.payload.pull_request
@@ -71,23 +75,24 @@ module Github
71
75
  lines.sort { |a, b| a[:url] <=> b[:url] }
72
76
  end
73
77
 
74
- def format_status(status)
75
- settings[:dictionary][:status][status]
76
- end
77
-
78
78
  def format_subject(subject)
79
- sprintf(settings[:format][:subject], subject: subject)
79
+ sprintf(settings.format.subject, subject: subject)
80
80
  end
81
81
 
82
82
  def format_line(line)
83
83
  sprintf(
84
- settings[:format][:line],
84
+ settings.format.line,
85
85
  title: line[:title].markdown_escape,
86
86
  url: line[:url],
87
87
  user: line[:user],
88
88
  status: format_status(line[:status])
89
89
  ).strip
90
90
  end
91
+
92
+ def format_status(status)
93
+ return nil if status.nil?
94
+ settings.dictionary.status.send(status)
95
+ end
91
96
  end
92
97
  end
93
98
  end
@@ -0,0 +1,110 @@
1
+ require 'json'
2
+ require 'ostruct'
3
+
4
+ module Github
5
+ module Nippou
6
+ class Settings
7
+ # @param client [Octokit::Client]
8
+ def initialize(client:)
9
+ @client = client
10
+ end
11
+
12
+ # Getting gist id which has settings.yml
13
+ #
14
+ # @return [String] gist id
15
+ def gist_id
16
+ @gist_id ||=
17
+ begin
18
+ ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] ||
19
+ begin
20
+ git_config = `git config github-nippou.settings-gist-id`.chomp
21
+ git_config.present? ? git_config : nil
22
+ end
23
+ end
24
+ end
25
+
26
+ # Create gist with config/settings.yml
27
+ #
28
+ # @return [Sawyer::Resource]
29
+ def create_gist
30
+ client.create_gist(
31
+ description: 'github-nippou settings',
32
+ public: true,
33
+ files: { 'settings.yml' => { content: default_settings.to_yaml }}
34
+ )
35
+ end
36
+
37
+ # Getting settings url
38
+ #
39
+ # @return [String]
40
+ def url
41
+ @url ||=
42
+ if gist_id
43
+ client.gist(gist_id).html_url
44
+ else
45
+ "https://github.com/masutaka/github-nippou/blob/v#{VERSION}/config/settings.yml"
46
+ end
47
+ end
48
+
49
+ # Getting format settings
50
+ #
51
+ # @return [OpenStruct]
52
+ def format
53
+ open_struct(data[:format])
54
+ end
55
+
56
+ # Getting dictionary settings
57
+ #
58
+ # @return [OpenStruct]
59
+ def dictionary
60
+ open_struct(data[:dictionary])
61
+ end
62
+
63
+ private
64
+
65
+ attr_reader :client
66
+
67
+ # Getting default settings.yml as Hash
68
+ #
69
+ # return [Hash]
70
+ def default_settings
71
+ @default_settings ||=
72
+ YAML.load_file(
73
+ File.expand_path('../../../config/settings.yml', __dir__)
74
+ )
75
+ end
76
+
77
+ # Getting settings data as Hash
78
+ #
79
+ # return [Hash]
80
+ def data
81
+ @data ||=
82
+ begin
83
+ if gist_id.present?
84
+ gist = client.gist(gist_id)
85
+ yaml_data = gist[:files][:'settings.yml'][:content]
86
+ YAML.load(yaml_data).deep_symbolize_keys
87
+ else
88
+ default_settings.deep_symbolize_keys
89
+ end
90
+ rescue Psych::SyntaxError
91
+ puts <<~MESSAGE
92
+ ** YAML syntax error.
93
+
94
+ #{$!.message}
95
+ #{yaml_data}
96
+ MESSAGE
97
+ raise $!
98
+ end
99
+ end
100
+
101
+ # Cast to OpenStruct
102
+ #
103
+ # @param hash [Hash]
104
+ # @return [OpenStruct]
105
+ def open_struct(hash)
106
+ JSON.parse(hash.to_json, object_class: OpenStruct)
107
+ end
108
+ end
109
+ end
110
+ end
@@ -1,5 +1,5 @@
1
1
  module Github
2
2
  module Nippou
3
- VERSION = '3.0.0.beta1'
3
+ VERSION = '3.0.0.beta2'
4
4
  end
5
5
  end
@@ -0,0 +1,7 @@
1
+ format:
2
+ **!!invalid!!**
3
+ line: '* [%{title}](%{url}) by %{user} %{status}'
4
+ dictionary:
5
+ status:
6
+ merged: '**merged!**'
7
+ closed: '**closed!**'
@@ -0,0 +1,7 @@
1
+ format:
2
+ subject: '### %{subject}'
3
+ line: '* [%{title}](%{url}) by %{user} %{status}'
4
+ dictionary:
5
+ status:
6
+ merged: '**merged!**'
7
+ closed: '**closed!**'
@@ -0,0 +1,96 @@
1
+ describe Github::Nippou::Settings do
2
+ let(:client) { Octokit::Client.new(login: 'taro', access_token: '1234abcd') }
3
+ let(:settings) { described_class.new(client: client) }
4
+
5
+ after { ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = nil }
6
+
7
+ describe '#gist_id' do
8
+ before { ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = '0123456789' }
9
+
10
+ it 'is valid' do
11
+ expect(settings.gist_id).to eq '0123456789'
12
+ end
13
+ end
14
+
15
+ describe '#create_gist' do
16
+ it 'responds to #create_gist' do
17
+ expect(settings).to respond_to :create_gist
18
+ end
19
+ end
20
+
21
+ describe '#url' do
22
+ context 'given gist_id' do
23
+ let(:gist_id) { '0123456789' }
24
+
25
+ before do
26
+ ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = gist_id
27
+ response = OpenStruct.new(html_url: "https://gist.github.com/#{gist_id}")
28
+ allow(client).to receive(:gist).and_return(response)
29
+ end
30
+
31
+ it 'is gist url' do
32
+ expect(settings.url).to eq "https://gist.github.com/#{gist_id}"
33
+ end
34
+ end
35
+
36
+ context 'given no gist_id' do
37
+ it 'is github url' do
38
+ expect(settings.url).to eq "https://github.com/masutaka/github-nippou/blob/v#{Github::Nippou::VERSION}/config/settings.yml"
39
+ end
40
+ end
41
+ end
42
+
43
+ describe '#format' do
44
+ before do
45
+ ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = '12345'
46
+ allow(client).to receive(:gist).and_return( files: { 'settings.yml': { content: settings_yaml } } )
47
+ end
48
+
49
+ context 'given valid settings' do
50
+ let(:settings_yaml) { load_fixture('settings-valid.yml') }
51
+
52
+ it 'is valid `subject`' do
53
+ expect(settings.format.subject).to eq '### %{subject}'
54
+ end
55
+
56
+ it 'is valid `line`' do
57
+ expect(settings.format.line).to eq '* [%{title}](%{url}) by %{user} %{status}'
58
+ end
59
+ end
60
+
61
+ context 'given invalid settings' do
62
+ let(:settings_yaml) { load_fixture('settings-invalid.yml') }
63
+
64
+ it 'outputs YAML syntax error message' do
65
+ expect { settings.format }.to raise_error Psych::SyntaxError
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '#dictionary' do
71
+ before do
72
+ ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = '12345'
73
+ allow(client).to receive(:gist).and_return( files: { 'settings.yml': { content: settings_yaml } } )
74
+ end
75
+
76
+ context 'given valid settings' do
77
+ let(:settings_yaml) { load_fixture('settings-valid.yml') }
78
+
79
+ it 'is valid `status.merged`' do
80
+ expect(settings.dictionary.status.merged).to eq '**merged!**'
81
+ end
82
+
83
+ it 'is valid `status.closed`' do
84
+ expect(settings.dictionary.status.closed).to eq '**closed!**'
85
+ end
86
+ end
87
+
88
+ context 'given invalid settings' do
89
+ let(:settings_yaml) { load_fixture('settings-invalid.yml') }
90
+
91
+ it 'outputs YAML syntax error message' do
92
+ expect { settings.dictionary }.to raise_error Psych::SyntaxError
93
+ end
94
+ end
95
+ end
96
+ end
@@ -14,8 +14,14 @@
14
14
 
15
15
  require 'github/nippou'
16
16
 
17
+ Dir[File.expand_path('support/**/*.rb', __dir__)].each do |f|
18
+ require f
19
+ end
20
+
17
21
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
18
22
  RSpec.configure do |config|
23
+ config.include LoadFixtureHelper
24
+
19
25
  # rspec-expectations config goes here. You can use an alternate
20
26
  # assertion/expectation library such as wrong or the stdlib/minitest
21
27
  # assertions if you prefer.
@@ -46,6 +52,12 @@ RSpec.configure do |config|
46
52
  # triggering implicit auto-inclusion in groups with matching metadata.
47
53
  config.shared_context_metadata_behavior = :apply_to_host_groups
48
54
 
55
+ # Run specs in random order to surface order dependencies. If you find an
56
+ # order dependency and want to debug it, you can fix the order by providing
57
+ # the seed, which is printed after each run.
58
+ # --seed 1234
59
+ config.order = :random
60
+
49
61
  # The settings below are suggested to provide a good initial experience
50
62
  # with RSpec, but feel free to customize to your heart's content.
51
63
  =begin
@@ -87,12 +99,6 @@ RSpec.configure do |config|
87
99
  # particularly slow.
88
100
  config.profile_examples = 10
89
101
 
90
- # Run specs in random order to surface order dependencies. If you find an
91
- # order dependency and want to debug it, you can fix the order by providing
92
- # the seed, which is printed after each run.
93
- # --seed 1234
94
- config.order = :random
95
-
96
102
  # Seed global randomization in this process using the `--seed` CLI option.
97
103
  # Setting this allows you to use `--seed` to deterministically reproduce
98
104
  # test failures related to randomization by passing the same `--seed` value
@@ -0,0 +1,5 @@
1
+ module LoadFixtureHelper
2
+ def load_fixture(name)
3
+ File.read(File.expand_path("../fixtures/#{name}", __dir__))
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-nippou
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta1
4
+ version: 3.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Masuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-30 00:00:00.000000000 Z
11
+ date: 2017-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: highline
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: launchy
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: octokit
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +148,7 @@ extra_rdoc_files: []
120
148
  files:
121
149
  - ".gitignore"
122
150
  - ".rspec"
151
+ - ".travis.yml"
123
152
  - Gemfile
124
153
  - Gemfile.lock
125
154
  - LICENSE.txt
@@ -133,10 +162,14 @@ files:
133
162
  - lib/github/nippou/concerns/sawyer_resource_github.rb
134
163
  - lib/github/nippou/concerns/string_markdown.rb
135
164
  - lib/github/nippou/format.rb
165
+ - lib/github/nippou/settings.rb
136
166
  - lib/github/nippou/user_events.rb
137
167
  - lib/github/nippou/version.rb
138
- - spec/github/nippou/commands_spec.rb
168
+ - spec/fixtures/settings-invalid.yml
169
+ - spec/fixtures/settings-valid.yml
170
+ - spec/github/nippou/settings_spec.rb
139
171
  - spec/spec_helper.rb
172
+ - spec/support/load_fixture.rb
140
173
  homepage: https://github.com/masutaka/github-nippou
141
174
  licenses:
142
175
  - MIT
@@ -162,5 +195,8 @@ signing_key:
162
195
  specification_version: 4
163
196
  summary: Print today's your GitHub action.
164
197
  test_files:
165
- - spec/github/nippou/commands_spec.rb
198
+ - spec/fixtures/settings-invalid.yml
199
+ - spec/fixtures/settings-valid.yml
200
+ - spec/github/nippou/settings_spec.rb
166
201
  - spec/spec_helper.rb
202
+ - spec/support/load_fixture.rb
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Github::Nippou::Commands do
4
- let(:commands) { described_class.new }
5
-
6
- describe '#settings' do
7
- subject(:execute) { commands.send(:settings) }
8
-
9
- let(:settings) do
10
- {
11
- format: {
12
- subject: '### %{subject}',
13
- line: '* [%{title}](%{url}) by %{user} %{status}',
14
- },
15
- }
16
- end
17
-
18
- let(:yaml) { settings.to_yaml }
19
-
20
- context "when ENV['GITHUB_NIPPOU_SETTINGS'] present" do
21
- before { ENV['GITHUB_NIPPOU_SETTINGS'] = yaml }
22
-
23
- context 'given valid YAML syntax' do
24
- it 'should set YAML value to @settings' do
25
- expect { execute }
26
- .to change { commands.instance_variable_get(:@settings) }
27
- .to settings
28
- end
29
- end
30
-
31
- context 'given invalid YAML syntax' do
32
- before do
33
- ENV['GITHUB_NIPPOU_SETTINGS'] = <<~INVALID_YAML
34
- format:
35
- **!!invalid!!**
36
- line: '* [%{title}](%{url}) by %{user} %{status}'
37
- INVALID_YAML
38
- end
39
-
40
- it 'should output YAML syntax error message' do
41
- expect {
42
- begin
43
- execute
44
- rescue SystemExit
45
- nil
46
- end
47
- }.to output(<<~ERROR).to_stdout
48
- ** YAML syntax error.
49
-
50
- (<unknown>): did not find expected alphabetic or numeric character while scanning an alias at line 2 column 3
51
- format:
52
- **!!invalid!!**
53
- line: '* [%{title}](%{url}) by %{user} %{status}'
54
- ERROR
55
- end
56
- end
57
- end
58
- end
59
- end