webmention-cli 0.1.1 → 1.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef7a8cf20ce14f00d56edad9b81e6f26c99999a97d8e7ec1fe006d3394549721
4
- data.tar.gz: 037ff27c5b1679fb19e0eedece8c7f2796a4e95795a46e021daf34f29d8b92a7
3
+ metadata.gz: 4d335a55cc4406e0717186760a5e5f35d8eb1b3a9a5c64f3adb862ceb3583acf
4
+ data.tar.gz: a7379042d7b8201f051f7b75e59fb13b20225c63141e864b3ea82cd90148257c
5
5
  SHA512:
6
- metadata.gz: 2b6c83cb9805ceb0603f785382107f8b9d6921fb2956903ef236016fbc391898d3657ea3dd6e2facdae45d72ba3adda9a002b89919321bed79756f6ad86a664a
7
- data.tar.gz: 67d71a2ee620e59494351c6fbd5569fba362a8a2374122c92c27550720dac317952bf12356aec67bff8c8dbca8c3322b1910d088779c29be6890d568bfd902f0
6
+ metadata.gz: '09e1d040bd656e67d37df20e7c06098f2df93a2b8bbf2b360ac98b51d6cd2e744a90a740ff491957d3ea47162dd73f83edfa10354080af8765255fbf29409abe'
7
+ data.tar.gz: dc48cfc09b2d7b2300746a42cb29d5826507248e439bc0ddb7c3a80d30e7a0b4bbebf4bdede15234058d784afcdfccd3649f4c43755c187c26d5d1516f9edae9
data/.reek.yml ADDED
@@ -0,0 +1,6 @@
1
+ detectors:
2
+ IrresponsibleModule:
3
+ enabled: false
4
+
5
+ exclude_paths:
6
+ - vendor/
data/.rubocop.yml CHANGED
@@ -1,15 +1,26 @@
1
1
  require:
2
+ - rubocop-performance
2
3
  - rubocop-rspec
3
4
 
5
+ Layout/HashAlignment:
6
+ EnforcedHashRocketStyle: table
7
+
8
+ Layout/LineLength:
9
+ Enabled: false
10
+
4
11
  Metrics/BlockLength:
5
12
  Exclude:
13
+ - webmention-cli.gemspec
6
14
  - spec/**/*.rb
7
15
 
8
- Metrics/LineLength:
9
- Enabled: false
16
+ Naming/RescuedExceptionsVariableName:
17
+ PreferredName: exception
10
18
 
11
19
  Style/Documentation:
12
20
  Enabled: false
13
21
 
14
22
  Style/FrozenStringLiteralComment:
15
23
  Enabled: false
24
+
25
+ Style/SymbolArray:
26
+ Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.5
1
+ 2.5.7
data/.travis.yml CHANGED
@@ -1,19 +1,14 @@
1
+ dist: bionic
1
2
  language: ruby
2
3
  rvm:
3
- - 2.4.5
4
- - 2.5.3
5
- - 2.6.0
6
- cache:
7
- - bundler
8
- before_install:
9
- - gem install bundler -v '~> 1.17'
4
+ - 2.5
5
+ - 2.6
6
+ - 2.7
7
+ cache: bundler
10
8
  before_script:
11
9
  - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
12
10
  - chmod +x ./cc-test-reporter
13
11
  - ./cc-test-reporter before-build
14
- script:
15
- - bundle exec rubocop
16
- - bundle exec rake
17
12
  after_script:
18
13
  - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
19
14
  notifications:
data/CHANGELOG.md CHANGED
@@ -1,8 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.0 / 2020-02-08
4
+
5
+ - Rewrite gem code
6
+ - Rewrite specs
7
+ - Update development and runtime dependencies to latest versions (67744c1)
8
+ - Change supported Ruby versions to >= 2.5 and < 2.8 (1b30b8c)
9
+ - Update project Ruby version to 2.5.7 (21e94b6)
10
+
3
11
  ## 0.1.1 / 2019-01-03
4
12
 
5
- - Expand supported Ruby versions to include 2.6 ([8930501](https://github.com/jgarber623/webmention-cli/commit/8930501)).
13
+ - Expand supported Ruby versions to include 2.6 (8930501
6
14
 
7
15
  ## 0.1.0 / 2018-08-14
8
16
 
data/CONTRIBUTING.md CHANGED
@@ -8,9 +8,9 @@ There are a couple ways you can help improve webmention-cli:
8
8
 
9
9
  ## Getting Started
10
10
 
11
- webmention-cli is developed using Ruby 2.4.5 and is additionally tested against Ruby 2.5.3 and 2.6.0 using [Travis CI](https://travis-ci.com/jgarber623/webmention-cli).
11
+ webmention-cli is developed using Ruby 2.5.7 and is additionally tested against Ruby 2.6 and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/webmention-cli).
12
12
 
13
- Before making changes to webmention-cli, you'll want to install Ruby 2.4.5. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm). Once you've installed Ruby 2.4.5 using your method of choice, install the project's gems by running:
13
+ Before making changes to webmention-cli, you'll want to install Ruby 2.5.7. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm). Once you've installed Ruby 2.5.7 using your method of choice, install the project's gems by running:
14
14
 
15
15
  ```sh
16
16
  bundle install
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2018 Jason Garber
3
+ Copyright (c) 2018–present Jason Garber
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -11,9 +11,9 @@
11
11
 
12
12
  ## Getting Started
13
13
 
14
- Before installing and using webmention-cli, you'll want to have [Ruby](https://www.ruby-lang.org) 2.4 (or newer) installed. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm).
14
+ Before installing and using webmention-cli, you'll want to have [Ruby](https://www.ruby-lang.org) 2.5 (or newer) installed. It's recommended that you use a Ruby version managment tool like [rbenv](https://github.com/rbenv/rbenv), [chruby](https://github.com/postmodern/chruby), or [rvm](https://github.com/rvm/rvm).
15
15
 
16
- webmention-cli is developed using Ruby 2.4.5 and is additionally tested against Ruby 2.5.3 and 2.6.0 using [Travis CI](https://travis-ci.com/jgarber623/webmention-cli).
16
+ webmention-cli is developed using Ruby 2.5.7 and is additionally tested against Ruby 2.6 and 2.7 using [Travis CI](https://travis-ci.com/jgarber623/webmention-cli).
17
17
 
18
18
  ## Installation
19
19
 
@@ -25,29 +25,40 @@ gem install webmention-cli
25
25
 
26
26
  webmention-cli makes available the following commands:
27
27
 
28
- ### `webmention endpoint <url>`
28
+ ### `webmention endpoint <target>`
29
29
 
30
- Discover the webmention endpoint for the given `<url>` using the [webmention-endpoint-ruby](https://github.com/jgarber623/webmention-endpoint-ruby) gem's endpoint discovery.
30
+ Discover the webmention endpoint for the given `<target>` URL using the [webmention-endpoint-ruby](https://github.com/jgarber623/webmention-endpoint-ruby) gem's endpoint discovery.
31
31
 
32
32
  ```sh
33
33
  $ webmention endpoint https://sixtwothree.org
34
34
  https://sixtwothree.org/webmentions
35
35
  ```
36
36
 
37
+ ### `webmention send <source> <target>`
38
+
39
+ Send a webmention from `<source>` URL to the given `<target>` URL using the [webmention-client-ruby](https://github.com/indieweb/webmention-client-ruby) gem.
40
+
41
+ ```sh
42
+ $ webmention send https://sixtwothree.org/posts/an-engineer-walks-into-a-design-sprint https://adactio.com/journal/6246
43
+ 202 Accepted
44
+ ```
45
+
46
+ The `send` command will return either an HTTP status _or_ the value of the response's `Location` header (if provided _and_ the response's HTTP status is `201 Created`).
47
+
37
48
  ### `webmention verify <source> <target>`
38
49
 
39
50
  Confirm whether or not a `<source>` URL links to the given `<target>` URL using the [webmention-verification-ruby](https://github.com/jgarber623/webmention-verification-ruby) gem's verifers.
40
51
 
41
52
  ```sh
42
53
  $ webmention verify https://kartikprabhu.com/notes/re-launching-franciscms https://sixtwothree.org/posts/launching-franciscms-onto-the-indieweb
43
- SUCCESS: https://kartikprabhu.com/notes/re-launching-franciscms links to https://sixtwothree.org/posts/launching-franciscms-onto-the-indieweb
54
+ true
44
55
  ```
45
56
 
46
57
  By default, the `verify` command will strictly match URLs. For a bit more flexibility, use the `--no-strict` flag:
47
58
 
48
59
  ```sh
49
60
  $ webmention verify https://aaronparecki.com/2014/12/17/5/webmention-indieweb https://sixtwothree.org/posts/open-sourcing-my-webmention-service --no-strict
50
- SUCCESS: https://aaronparecki.com/2014/12/17/5/webmention-indieweb links to https://sixtwothree.org/posts/open-sourcing-my-webmention-service
61
+ true
51
62
  ```
52
63
 
53
64
  ## Contributing
data/Rakefile CHANGED
@@ -1,6 +1,17 @@
1
1
  require 'bundler/gem_tasks'
2
+
3
+ require 'reek/rake/task'
2
4
  require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
6
+
7
+ Reek::Rake::Task.new do |task|
8
+ task.fail_on_error = false
9
+ end
3
10
 
4
11
  RSpec::Core::RakeTask.new
5
12
 
6
- task default: :spec
13
+ RuboCop::RakeTask.new do |task|
14
+ task.fail_on_error = false
15
+ end
16
+
17
+ task default: [:rubocop, :reek, :spec]
data/exe/webmention CHANGED
@@ -3,6 +3,6 @@
3
3
  lib = File.expand_path('../lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
- require 'webmention_cli'
6
+ require 'webmention/cli'
7
7
 
8
- WebmentionCLI::Webmention.start(ARGV)
8
+ Webmention::CLI.start(ARGV)
@@ -0,0 +1,22 @@
1
+ require 'thor'
2
+
3
+ require 'indieweb/endpoints'
4
+ require 'webmention'
5
+ require 'webmention/verification'
6
+
7
+ require 'webmention/cli/version'
8
+ require 'webmention/cli/exceptions'
9
+
10
+ require 'webmention/cli/commands/endpoint'
11
+ require 'webmention/cli/commands/send'
12
+ require 'webmention/cli/commands/verify'
13
+
14
+ require 'webmention/cli/runner'
15
+
16
+ module Webmention
17
+ module CLI
18
+ def self.start(argv)
19
+ Runner.start(argv)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ module Webmention
2
+ module CLI
3
+ module Commands
4
+ class Endpoint
5
+ def initialize(url)
6
+ @url = url
7
+ end
8
+
9
+ def run
10
+ IndieWeb::Endpoints.get(@url).webmention
11
+ rescue IndieWeb::Endpoints::ArgumentError,
12
+ IndieWeb::Endpoints::InvalidURIError => exception
13
+ raise ArgumentError, exception
14
+ rescue IndieWeb::Endpoints::IndieWebEndpointsError => exception
15
+ raise WebmentionEndpointError, exception
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ module Webmention
2
+ module CLI
3
+ module Commands
4
+ class Send
5
+ def initialize(source, target)
6
+ @source = source
7
+ @target = target
8
+ end
9
+
10
+ def run
11
+ Webmention.send_mention(@source, @target)
12
+ rescue Webmention::ArgumentError,
13
+ Webmention::InvalidURIError => exception
14
+ raise ArgumentError, exception
15
+ rescue Webmention::WebmentionClientError => exception
16
+ raise WebmentionSendError, exception
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ module Webmention
2
+ module CLI
3
+ module Commands
4
+ class Verify
5
+ def initialize(source, target, strict)
6
+ @source = source
7
+ @target = target
8
+ @strict = strict
9
+ end
10
+
11
+ def run
12
+ Webmention::Verification.verified?(@source, @target, strict: @strict)
13
+ rescue Webmention::Verification::ArgumentError,
14
+ Webmention::Verification::InvalidURIError => exception
15
+ raise ArgumentError, exception
16
+ rescue Webmention::Verification::WebmentionVerificationError => exception
17
+ raise WebmentionVerificationError, exception
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ module Webmention
2
+ module CLI
3
+ class Error < RuntimeError; end
4
+
5
+ class ArgumentError < Error; end
6
+
7
+ class WebmentionEndpointError < Error
8
+ def initialize(msg = 'No Webmention endpoint found')
9
+ super(msg)
10
+ end
11
+ end
12
+
13
+ class WebmentionSendError < Error; end
14
+
15
+ class WebmentionVerificationError < Error; end
16
+ end
17
+ end
@@ -0,0 +1,71 @@
1
+ module Webmention
2
+ module CLI
3
+ class Runner < Thor
4
+ include Thor::Actions
5
+
6
+ package_name 'Webmention'
7
+
8
+ map ['-v', '--version'] => :__version
9
+
10
+ desc 'endpoint <target>', 'Discover Webmention endpoint for <target> URL'
11
+ def endpoint(target)
12
+ url = Commands::Endpoint.new(target).run
13
+
14
+ raise WebmentionEndpointError unless url
15
+
16
+ say_success(url)
17
+ rescue Error => exception
18
+ say_failure(exception)
19
+ end
20
+
21
+ desc 'send <source> <target>', 'Send a webmention from <source> URL to <target> URL'
22
+ def send(source, target)
23
+ response = Commands::Send.new(source, target).run
24
+
25
+ raise WebmentionEndpointError unless response
26
+
27
+ status = response.status
28
+ location = response.headers[:location]
29
+
30
+ raise WebmentionSendError, status unless status.success?
31
+
32
+ say_success(response.code == 201 && location ? location : status)
33
+ rescue Error => exception
34
+ say_failure(exception)
35
+ end
36
+
37
+ desc 'verify <source> <target>', 'Verify <source> URL links to <target> URL'
38
+ option :strict, type: :boolean, desc: 'Enable or disable strict URL matching', default: true
39
+ def verify(source, target)
40
+ verified = Commands::Verify.new(source, target, options[:strict]).run
41
+
42
+ raise WebmentionVerificationError, verified unless verified
43
+
44
+ say_success(verified)
45
+ rescue Error => exception
46
+ say_failure(exception)
47
+ end
48
+
49
+ desc '--version', 'Print version information'
50
+ def __version
51
+ say "webmention-cli version #{Webmention::CLI::VERSION}"
52
+ end
53
+
54
+ no_commands do
55
+ def say_failure(message)
56
+ say message, :red
57
+ exit 1
58
+ end
59
+
60
+ def say_success(message)
61
+ say message, :green
62
+ exit 0
63
+ end
64
+ end
65
+
66
+ def self.exit_on_failure?
67
+ true
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,5 @@
1
+ module Webmention
2
+ module CLI
3
+ VERSION = '1.0.0'.freeze
4
+ end
5
+ end
@@ -1,13 +1,13 @@
1
1
  lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
- require 'webmention_cli/version'
4
+ require 'webmention/cli/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.required_ruby_version = ['>= 2.4', '< 2.7']
7
+ spec.required_ruby_version = ['>= 2.5', '< 2.8']
8
8
 
9
9
  spec.name = 'webmention-cli'
10
- spec.version = WebmentionCLI::VERSION
10
+ spec.version = Webmention::CLI::VERSION
11
11
  spec.authors = ['Jason Garber']
12
12
  spec.email = ['jason@sixtwothree.org']
13
13
 
@@ -22,15 +22,23 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = ['webmention']
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.17'
26
- spec.add_development_dependency 'rake', '~> 12.3'
27
- spec.add_development_dependency 'rspec', '~> 3.8'
28
- spec.add_development_dependency 'rubocop', '~> 0.62.0'
29
- spec.add_development_dependency 'rubocop-rspec', '~> 1.31'
30
- spec.add_development_dependency 'simplecov', '~> 0.16.1'
31
- spec.add_development_dependency 'simplecov-console', '~> 0.4.2'
32
-
33
- spec.add_runtime_dependency 'thor', '~> 0.20.3'
34
- spec.add_runtime_dependency 'webmention-endpoint', '~> 2.0'
35
- spec.add_runtime_dependency 'webmention-verification', '~> 0.1.2'
25
+ spec.metadata = {
26
+ 'bug_tracker_uri' => "#{spec.homepage}/issues",
27
+ 'changelog_uri' => "#{spec.homepage}/blob/v#{spec.version}/CHANGELOG.md"
28
+ }
29
+
30
+ spec.add_development_dependency 'rake', '~> 13.0'
31
+ spec.add_development_dependency 'reek', '~> 5.6'
32
+ spec.add_development_dependency 'rspec', '~> 3.9'
33
+ spec.add_development_dependency 'rubocop', '~> 0.79.0'
34
+ spec.add_development_dependency 'rubocop-performance', '~> 1.5'
35
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.37'
36
+ spec.add_development_dependency 'simplecov', '~> 0.18.0'
37
+ spec.add_development_dependency 'simplecov-console', '~> 0.6.0'
38
+ spec.add_development_dependency 'webmock', '~> 3.8'
39
+
40
+ spec.add_runtime_dependency 'indieweb-endpoints', '~> 2.0'
41
+ spec.add_runtime_dependency 'thor', '~> 1.0'
42
+ spec.add_runtime_dependency 'webmention', '~> 2.0'
43
+ spec.add_runtime_dependency 'webmention-verification', '~> 2.0'
36
44
  end
metadata CHANGED
@@ -1,129 +1,171 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmention-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Garber
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-03 00:00:00.000000000 Z
11
+ date: 2020-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.17'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.17'
26
+ version: '13.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: reek
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.3'
33
+ version: '5.6'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.3'
40
+ version: '5.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.8'
47
+ version: '3.9'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.8'
54
+ version: '3.9'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.62.0
61
+ version: 0.79.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.79.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-performance
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.5'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: 0.62.0
82
+ version: '1.5'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rubocop-rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '1.31'
89
+ version: '1.37'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '1.31'
96
+ version: '1.37'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: simplecov
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.16.1
103
+ version: 0.18.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.16.1
110
+ version: 0.18.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: simplecov-console
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.4.2
117
+ version: 0.6.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.4.2
124
+ version: 0.6.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.8'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '3.8'
139
+ - !ruby/object:Gem::Dependency
140
+ name: indieweb-endpoints
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.0'
111
153
  - !ruby/object:Gem::Dependency
112
154
  name: thor
113
155
  requirement: !ruby/object:Gem::Requirement
114
156
  requirements:
115
157
  - - "~>"
116
158
  - !ruby/object:Gem::Version
117
- version: 0.20.3
159
+ version: '1.0'
118
160
  type: :runtime
119
161
  prerelease: false
120
162
  version_requirements: !ruby/object:Gem::Requirement
121
163
  requirements:
122
164
  - - "~>"
123
165
  - !ruby/object:Gem::Version
124
- version: 0.20.3
166
+ version: '1.0'
125
167
  - !ruby/object:Gem::Dependency
126
- name: webmention-endpoint
168
+ name: webmention
127
169
  requirement: !ruby/object:Gem::Requirement
128
170
  requirements:
129
171
  - - "~>"
@@ -142,14 +184,14 @@ dependencies:
142
184
  requirements:
143
185
  - - "~>"
144
186
  - !ruby/object:Gem::Version
145
- version: 0.1.2
187
+ version: '2.0'
146
188
  type: :runtime
147
189
  prerelease: false
148
190
  version_requirements: !ruby/object:Gem::Requirement
149
191
  requirements:
150
192
  - - "~>"
151
193
  - !ruby/object:Gem::Version
152
- version: 0.1.2
194
+ version: '2.0'
153
195
  description: A command-line interface for Webmention.
154
196
  email:
155
197
  - jason@sixtwothree.org
@@ -160,6 +202,7 @@ extra_rdoc_files: []
160
202
  files:
161
203
  - ".editorconfig"
162
204
  - ".gitignore"
205
+ - ".reek.yml"
163
206
  - ".rspec"
164
207
  - ".rubocop"
165
208
  - ".rubocop.yml"
@@ -173,14 +216,20 @@ files:
173
216
  - README.md
174
217
  - Rakefile
175
218
  - exe/webmention
176
- - lib/webmention_cli.rb
177
- - lib/webmention_cli/version.rb
178
- - lib/webmention_cli/webmention.rb
219
+ - lib/webmention/cli.rb
220
+ - lib/webmention/cli/commands/endpoint.rb
221
+ - lib/webmention/cli/commands/send.rb
222
+ - lib/webmention/cli/commands/verify.rb
223
+ - lib/webmention/cli/exceptions.rb
224
+ - lib/webmention/cli/runner.rb
225
+ - lib/webmention/cli/version.rb
179
226
  - webmention-cli.gemspec
180
227
  homepage: https://github.com/jgarber623/webmention-cli
181
228
  licenses:
182
229
  - MIT
183
- metadata: {}
230
+ metadata:
231
+ bug_tracker_uri: https://github.com/jgarber623/webmention-cli/issues
232
+ changelog_uri: https://github.com/jgarber623/webmention-cli/blob/v1.0.0/CHANGELOG.md
184
233
  post_install_message:
185
234
  rdoc_options: []
186
235
  require_paths:
@@ -189,17 +238,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
189
238
  requirements:
190
239
  - - ">="
191
240
  - !ruby/object:Gem::Version
192
- version: '2.4'
241
+ version: '2.5'
193
242
  - - "<"
194
243
  - !ruby/object:Gem::Version
195
- version: '2.7'
244
+ version: '2.8'
196
245
  required_rubygems_version: !ruby/object:Gem::Requirement
197
246
  requirements:
198
247
  - - ">="
199
248
  - !ruby/object:Gem::Version
200
249
  version: '0'
201
250
  requirements: []
202
- rubygems_version: 3.0.2
251
+ rubygems_version: 3.1.2
203
252
  signing_key:
204
253
  specification_version: 4
205
254
  summary: A command-line interface for Webmention.
@@ -1,6 +0,0 @@
1
- require 'thor'
2
- require 'webmention/endpoint'
3
- require 'webmention/verification'
4
-
5
- require 'webmention_cli/version'
6
- require 'webmention_cli/webmention'
@@ -1,3 +0,0 @@
1
- module WebmentionCLI
2
- VERSION = '0.1.1'.freeze
3
- end
@@ -1,40 +0,0 @@
1
- module WebmentionCLI
2
- class Webmention < Thor
3
- def self.exit_on_failure?
4
- true
5
- end
6
-
7
- desc 'endpoint <url>', 'Discover webmention endpoint for <url>'
8
- def endpoint(url)
9
- result = ::Webmention::Endpoint.discover(url)
10
-
11
- puts result if result
12
-
13
- exit(result ? true : false)
14
- rescue ::Webmention::Endpoint::ArgumentError, ::Webmention::Endpoint::InvalidURIError
15
- raise Thor::MalformattedArgumentError, "ERROR: Expected '#{url}' to be an absolute URI (e.g. https://example.com)"
16
- end
17
-
18
- # desc 'send <source> <target>', 'Send a webmention from <source> URL to <target> URL'
19
- # def send(source, target)
20
- # puts source
21
- # puts target
22
- # end
23
-
24
- desc 'verify <source> <target>', 'Verify <source> URL links to <target> URL'
25
- option :strict, type: :boolean, desc: 'Enable or disable strict URL matching', default: true
26
- def verify(source, target)
27
- result = ::Webmention::Verification::Client.new(source, target, strict: options[:strict]).verified?
28
-
29
- if result
30
- puts "SUCCESS: #{source} links to #{target}"
31
- else
32
- puts "ERROR: #{source} does not link to #{target}"
33
- end
34
-
35
- exit(result)
36
- rescue ::Webmention::Verification::ArgumentError
37
- raise Thor::MalformattedArgumentError, "ERROR: Expected '#{source}' and '#{target}' to be absolute URIs (e.g. https://example.com)"
38
- end
39
- end
40
- end