diversipub 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: ff79e6bbaaef02976cdab39dd832904f9edc0dda03e05def0d414bb2f95083d5
4
+ data.tar.gz: 83156674fb231b3d0b316bac1fd3767cdeacdeb0d96f7658f1d2ae7dadae4259
5
+ SHA512:
6
+ metadata.gz: 59c3e57e952143448c14c2276988f27aa80f518c6b2887e8fd3bdab221dcf6f7fa7b616295298f99832b50ae2d62ff39a44621533d378f8506a7b0e94d700ac3
7
+ data.tar.gz: fa9d2a8c8435277ec86c28494d3f7c62d8bd88d82195dbc60818916152f08245de630b03f3966d1d05db7ecb7001bdf7da8c9c490b96e42dafc7f13b02a28689
data/.gitignore ADDED
@@ -0,0 +1,44 @@
1
+ *.gem
2
+ *.rbc
3
+ *.so
4
+
5
+ /.byebug_history
6
+ /.config/
7
+ /.rake_tasks~
8
+ /InstalledFiles/
9
+ /pkg/
10
+ /tmp/
11
+
12
+ # Used by dotenv library to load environment variables.
13
+ /.env
14
+
15
+ # RSpec configuration and generated files.
16
+ /.rspec
17
+ /coverage/
18
+ /spec/examples.txt
19
+ /spec/reports/
20
+ /test/tmp/
21
+ /test/version_tmp/
22
+
23
+ # Documentation cache and generated files.
24
+ /.yardoc/
25
+ /_yardoc/
26
+ /doc/
27
+ /rdoc/
28
+
29
+ # Environment normalization.
30
+ /.bundle/
31
+ /vendor/bundle/
32
+ /lib/bundler/man/
33
+
34
+ # For a library or gem, you might want to ignore these files since the code is
35
+ # intended to run in multiple environments; otherwise, check them in.
36
+ /Gemfile.lock
37
+ /.ruby-version
38
+ /.ruby-gemset
39
+
40
+ # Unless supporting rvm < 1.11.0 or doing something fancy, ignore this.
41
+ /.rvmrc
42
+
43
+ # Used by RuboCop. Remote config files pulled in from inherit_from directive.
44
+ /.rubocop-https?--*
data/.rubocop.yml ADDED
@@ -0,0 +1,61 @@
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 3.0
7
+ DisplayCopNames: true
8
+ NewCops: enable
9
+
10
+ Layout/AccessModifierIndentation:
11
+ EnforcedStyle: outdent
12
+
13
+ Layout/LineLength:
14
+ Max: 80
15
+
16
+ Lint/AmbiguousOperatorPrecedence:
17
+ Enabled: false
18
+
19
+ Lint/ReturnInVoidContext:
20
+ Enabled: false
21
+
22
+ Metrics/BlockLength:
23
+ Exclude:
24
+ - '*.gemspec'
25
+ - 'Rakefile'
26
+ - 'spec/**/*_spec.rb'
27
+
28
+ Metrics/MethodLength:
29
+ CountAsOne: ['array', 'hash', 'heredoc']
30
+
31
+ Metrics/ParameterLists:
32
+ Exclude:
33
+ - 'lib/diversipub/main.rb'
34
+
35
+ Style/AndOr:
36
+ EnforcedStyle: conditionals
37
+
38
+ Style/Documentation:
39
+ Exclude:
40
+ - 'Rakefile'
41
+
42
+ Style/DoubleNegation:
43
+ Enabled: false
44
+
45
+ Style/HashAsLastArrayItem:
46
+ Enabled: false
47
+
48
+ Style/PerlBackrefs:
49
+ Enabled: false
50
+
51
+ Style/TrailingCommaInArguments:
52
+ EnforcedStyleForMultiline: comma
53
+
54
+ Style/TrailingCommaInArrayLiteral:
55
+ EnforcedStyleForMultiline: comma
56
+
57
+ Style/TrailingCommaInHashLiteral:
58
+ EnforcedStyleForMultiline: comma
59
+
60
+ Style/VariableInterpolation:
61
+ Enabled: false
data/.yardopts ADDED
@@ -0,0 +1,4 @@
1
+ --markup markdown
2
+ --readme README.md
3
+ --protected
4
+ --private
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in diversipub.gemspec
6
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Alex Kotov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ diversipub
2
+ ==========
3
+
4
+ A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others.
data/Rakefile ADDED
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+
5
+ CLEAN << '.yardoc'
6
+ CLEAN << 'doc'
7
+
8
+ desc 'Run default checks'
9
+ task default: %i[lint]
10
+
11
+ desc 'Run code analysis tools'
12
+ task lint: %i[rubocop yard:cov]
13
+
14
+ desc 'Fix code style (rubocop --auto-correct)'
15
+ task fix: 'rubocop:auto_correct'
16
+
17
+ begin
18
+ require 'rubocop/rake_task'
19
+ RuboCop::RakeTask.new
20
+ rescue LoadError
21
+ nil
22
+ end
23
+
24
+ begin
25
+ require 'yard'
26
+ YARD::Rake::YardocTask.new
27
+ rescue LoadError
28
+ nil
29
+ end
30
+
31
+ desc 'Open development console'
32
+ task :console do
33
+ exec 'bundle', 'exec', File.expand_path(File.join('bin', 'console'), __dir__)
34
+ end
35
+
36
+ namespace :yard do
37
+ desc 'Measure documentation coverage'
38
+ task :cov do
39
+ result = `bundle exec yard stats`.lines.last.strip.freeze
40
+ m = result.match(/\A(\d+(\.\d+)?)% documented\z/)
41
+ raise 'Invalid result' if m.nil?
42
+
43
+ coverage = m[1].to_f.round(2)
44
+ puts "Documentation coverage: #{coverage}%"
45
+ # TODO: raise 'Not fully documented!' if coverage != 100
46
+ end
47
+ end
data/bin/console ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'diversipub'
6
+ require 'pry'
7
+
8
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/sh
2
+
3
+ set -eux
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/diversipub/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ repo = 'https://git.causa-arcana.com/causa-arcana/diversipub'
7
+ home = repo
8
+ bugs = "#{repo}/issues"
9
+ docs = "https://www.rubydoc.info/gems/diversipub/#{Diversipub::VERSION}"
10
+
11
+ spec.name = 'diversipub'
12
+ spec.version = Diversipub::VERSION
13
+ spec.license = 'MIT'
14
+ spec.homepage = home
15
+ spec.platform = Gem::Platform::RUBY
16
+
17
+ spec.required_ruby_version = '~> 3.0'
18
+
19
+ spec.authors = ['Alex Kotov']
20
+ spec.email = ['kotovalexarian@gmail.com']
21
+
22
+ spec.summary =
23
+ 'A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others'
24
+
25
+ spec.description = <<~DESCRIPTION.split("\n").map(&:strip).join ' '
26
+ A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others.
27
+ DESCRIPTION
28
+
29
+ spec.metadata['rubygems_mfa_required'] = 'true'
30
+ spec.metadata['homepage_uri'] = home
31
+ spec.metadata['source_code_uri'] = home
32
+ spec.metadata['bug_tracker_uri'] = bugs
33
+ spec.metadata['documentation_uri'] = docs
34
+
35
+ spec.bindir = 'exe'
36
+ spec.require_paths = ['lib']
37
+
38
+ spec.files = Dir.chdir File.expand_path __dir__ do
39
+ `git ls-files -z`.split("\x0").reject do |f|
40
+ f.match %r{\A(?:test|spec|features)/}
41
+ end
42
+ end
43
+
44
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename f }
45
+
46
+ spec.add_runtime_dependency 'puma', '~> 6.2', '>= 6.2.2'
47
+ spec.add_runtime_dependency 'rack', '~> 2.2', '>= 2.2.7'
48
+ spec.add_runtime_dependency 'sinatra', '~> 3.0', '>= 3.0.6'
49
+
50
+ spec.add_development_dependency 'bundler', '~> 2.4'
51
+ spec.add_development_dependency 'pry', '~> 0.14'
52
+ spec.add_development_dependency 'rake', '~> 13.0'
53
+ spec.add_development_dependency 'rubocop-performance', '~> 1.13'
54
+ spec.add_development_dependency 'rubocop-rake', '~> 0.6'
55
+ spec.add_development_dependency 'yard', '~> 0.9'
56
+ end
data/exe/diversipub ADDED
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ gem_name = 'diversipub'
5
+
6
+ begin
7
+ require gem_name
8
+ rescue LoadError
9
+ lib = File.expand_path('../lib', __dir__).freeze
10
+ file = File.join lib, "#{gem_name}.rb"
11
+ $LOAD_PATH.unshift lib if File.file?(file) && !$LOAD_PATH.include?(lib)
12
+ require gem_name
13
+ end
14
+
15
+ # Clean common ENVs
16
+ ENV.delete 'APP_ENV'
17
+ ENV.delete 'RACK_ENV'
18
+ ENV.delete 'RAILS_ENV'
19
+
20
+ # Clean Puma ENVs
21
+ ENV.delete 'LISTEN_FDS'
22
+ ENV.delete 'LISTEN_PID'
23
+ ENV.delete 'MAX_THREADS'
24
+ ENV.delete 'MIN_THREADS'
25
+ ENV.delete 'NOTIFY_SOCKET'
26
+ ENV.delete 'PUMA_BUNDLER_PRUNED'
27
+ ENV.delete 'PUMA_DEBUG'
28
+ ENV.delete 'PUMA_LOG_CONFIG'
29
+ ENV.delete 'PUMA_MAX_THREADS'
30
+ ENV.delete 'PUMA_MIN_THREADS'
31
+ ENV.delete 'SCRIPT_NAME'
32
+ ENV.delete 'WATCHDOG_PID'
33
+ ENV.delete 'WATCHDOG_USEC'
34
+ ENV.delete 'WEB_CONCURRENCY'
35
+
36
+ # Clean Rack ENVs
37
+ ENV.delete 'RACK_MULTIPART_FILE_LIMIT'
38
+ ENV.delete 'RACK_MULTIPART_PART_LIMIT'
39
+ ENV.delete 'RACK_MULTIPART_TOTAL_PART_LIMIT'
40
+
41
+ # Clean Sinatra ENVs
42
+ ENV.delete 'PORT'
43
+
44
+ # Freeze well-known constants
45
+ ARGV.each(&:freeze).freeze
46
+ ENV.each_key(&:freeze).each_value(&:freeze) # ENV itself can't be frozen
47
+
48
+ # Freeze well-known globals
49
+ $ARGV&.each(&:freeze).freeze # $ARGV is nil sometimes
50
+ $LOAD_PATH.each(&:freeze).freeze
51
+
52
+ # Some hacks
53
+ module Puma
54
+ def self.forkable? = false
55
+ end
56
+
57
+ # Non-buffered output
58
+ $stdout.sync = true
59
+ $stderr.sync = true
60
+
61
+ main = Diversipub::Main.new(
62
+ pwd: Pathname.pwd,
63
+ program_name: $PROGRAM_NAME,
64
+ argv: ARGV,
65
+ env: ENV,
66
+ stdin: $stdin,
67
+ stdout: $stdout,
68
+ stderr: $stderr,
69
+ )
70
+
71
+ trap('INT') { main.stop_gracefully } if Signal.list['INT']
72
+ trap('TERM') { main.stop_urgently } if Signal.list['TERM']
73
+ exit main.run
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Diversipub
4
+ ##
5
+ # The whole application runner.
6
+ #
7
+ class Main
8
+ attr_reader :pwd, :program_name, :argv, :env, :stdin, :stdout, :stderr
9
+
10
+ def initialize(pwd:,
11
+ program_name:,
12
+ argv:,
13
+ env:,
14
+ stdin:,
15
+ stdout:,
16
+ stderr:)
17
+ self.pwd = pwd
18
+ self.program_name = program_name
19
+ self.argv = argv
20
+ self.env = env
21
+ self.stdin = stdin
22
+ self.stdout = stdout
23
+ self.stderr = stderr
24
+ @running = true
25
+ end
26
+
27
+ def run
28
+ p pwd
29
+ p program_name
30
+ p argv
31
+ p env
32
+ p stdin
33
+ p stdout
34
+ p stderr
35
+
36
+ puma_task.join_thread
37
+ true
38
+ end
39
+
40
+ def stop_gracefully
41
+ puma_task.stop_gracefully
42
+ nil
43
+ end
44
+
45
+ def stop_urgently
46
+ puma_task.stop_urgently
47
+ nil
48
+ end
49
+
50
+ private
51
+
52
+ attr_writer :stdin, :stdout, :stderr
53
+
54
+ def pwd=(pwd)
55
+ @pwd = Pathname.new(pwd).freeze
56
+ end
57
+
58
+ def program_name=(program_name)
59
+ @program_name = String(program_name).freeze
60
+ end
61
+
62
+ def argv=(argv)
63
+ @argv = [*argv].map { |arg| String(arg).freeze }.freeze
64
+ end
65
+
66
+ def env=(env)
67
+ @env = [*env].to_h do |key, value|
68
+ [String(key).freeze, String(value).freeze]
69
+ end.freeze
70
+ end
71
+
72
+ def puma_task
73
+ @puma_task ||= PumaTask.new self
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Diversipub
4
+ ##
5
+ # Puma web server task runner.
6
+ #
7
+ class PumaTask
8
+ def initialize(main)
9
+ @main = main
10
+ end
11
+
12
+ def join_thread
13
+ thread.join
14
+ nil
15
+ end
16
+
17
+ def stop_gracefully
18
+ puma.stop
19
+ nil
20
+ end
21
+
22
+ alias stop_urgently stop_gracefully
23
+
24
+ private
25
+
26
+ def thread
27
+ @thread ||= Thread.start { puma.run }
28
+ end
29
+
30
+ def puma
31
+ @puma ||= Puma::Launcher.new(
32
+ puma_config,
33
+ log_writer: puma_log_writer,
34
+ )
35
+ end
36
+
37
+ def puma_config
38
+ @puma_config ||= Puma::Configuration.new puma_options.dup
39
+ end
40
+
41
+ def puma_options
42
+ @puma_options ||= {
43
+ app: rack_app,
44
+ binds: ['tcp://127.0.0.1:9292'].freeze,
45
+ environment: 'production',
46
+ log_requests: true,
47
+ logger: puma_logger,
48
+ rackup: nil,
49
+ tag: 'diversipub',
50
+ tcp_host: '127.0.0.1',
51
+ tcp_port: 9292,
52
+ workers: 0,
53
+ }.freeze
54
+ end
55
+
56
+ def puma_log_writer
57
+ @puma_log_writer ||= Puma::LogWriter.new @main.stderr, @main.stderr
58
+ end
59
+
60
+ def puma_logger
61
+ @puma_logger ||= Logger.new(@main.stderr).tap do |puma_logger|
62
+ puma_logger.level = Logger::DEBUG
63
+ end
64
+ end
65
+
66
+ def rack_app
67
+ @rack_app ||= RackApp.new sinatra_app
68
+ end
69
+
70
+ def sinatra_app
71
+ @sinatra_app ||= SinatraApp.new @main
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Diversipub
4
+ ##
5
+ # Rack web application.
6
+ #
7
+ class RackApp
8
+ def initialize(sinatra_app)
9
+ @sinatra_app = sinatra_app
10
+ end
11
+
12
+ def call(env)
13
+ to_app.call env
14
+ end
15
+
16
+ def to_app
17
+ @to_app ||= builder.to_app
18
+ end
19
+
20
+ private
21
+
22
+ def builder
23
+ @builder ||= Rack::Builder.new.tap do |builder|
24
+ builder.run @sinatra_app
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Diversipub
4
+ ##
5
+ # Sinatra web application.
6
+ #
7
+ class SinatraApp < Sinatra::Base
8
+ set :environment, :production
9
+ set :root, File.expand_path('../..', __dir__).freeze
10
+ set :views, nil
11
+ set :public_folder, nil
12
+
13
+ def initialize(main)
14
+ super()
15
+ @main = main
16
+ end
17
+
18
+ class << self
19
+ # Disable default Sinatra servers & middleware.
20
+ alias new new!
21
+ end
22
+
23
+ get '/' do
24
+ 'Hello, World!'
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Diversipub
4
+ # Gem version.
5
+ VERSION = '0.0.0'
6
+ end
data/lib/diversipub.rb ADDED
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ ####################
4
+ # Standard library #
5
+ ####################
6
+
7
+ require 'logger'
8
+ require 'pathname'
9
+
10
+ ########
11
+ # Gems #
12
+ ########
13
+
14
+ require 'puma'
15
+ require 'rack'
16
+ require 'rack/handler/puma'
17
+ require 'sinatra/base'
18
+
19
+ ################
20
+ # Own requires #
21
+ ################
22
+
23
+ require_relative 'diversipub/main'
24
+ require_relative 'diversipub/puma_task'
25
+ require_relative 'diversipub/rack_app'
26
+ require_relative 'diversipub/sinatra_app'
27
+ require_relative 'diversipub/version'
28
+
29
+ ##
30
+ # A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others.
31
+ #
32
+ module Diversipub
33
+ end
metadata ADDED
@@ -0,0 +1,210 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: diversipub
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Alex Kotov
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-05-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: puma
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 6.2.2
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '6.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 6.2.2
33
+ - !ruby/object:Gem::Dependency
34
+ name: rack
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.2'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.2.7
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.2.7
53
+ - !ruby/object:Gem::Dependency
54
+ name: sinatra
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.0'
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 3.0.6
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '3.0'
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 3.0.6
73
+ - !ruby/object:Gem::Dependency
74
+ name: bundler
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '2.4'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '2.4'
87
+ - !ruby/object:Gem::Dependency
88
+ name: pry
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '0.14'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '0.14'
101
+ - !ruby/object:Gem::Dependency
102
+ name: rake
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '13.0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '13.0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: rubocop-performance
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.13'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '1.13'
129
+ - !ruby/object:Gem::Dependency
130
+ name: rubocop-rake
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '0.6'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '0.6'
143
+ - !ruby/object:Gem::Dependency
144
+ name: yard
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '0.9'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '0.9'
157
+ description: A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others.
158
+ email:
159
+ - kotovalexarian@gmail.com
160
+ executables:
161
+ - diversipub
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - ".gitignore"
166
+ - ".rubocop.yml"
167
+ - ".yardopts"
168
+ - Gemfile
169
+ - LICENSE
170
+ - README.md
171
+ - Rakefile
172
+ - bin/console
173
+ - bin/setup
174
+ - diversipub.gemspec
175
+ - exe/diversipub
176
+ - lib/diversipub.rb
177
+ - lib/diversipub/main.rb
178
+ - lib/diversipub/puma_task.rb
179
+ - lib/diversipub/rack_app.rb
180
+ - lib/diversipub/sinatra_app.rb
181
+ - lib/diversipub/version.rb
182
+ homepage: https://git.causa-arcana.com/causa-arcana/diversipub
183
+ licenses:
184
+ - MIT
185
+ metadata:
186
+ rubygems_mfa_required: 'true'
187
+ homepage_uri: https://git.causa-arcana.com/causa-arcana/diversipub
188
+ source_code_uri: https://git.causa-arcana.com/causa-arcana/diversipub
189
+ bug_tracker_uri: https://git.causa-arcana.com/causa-arcana/diversipub/issues
190
+ documentation_uri: https://www.rubydoc.info/gems/diversipub/0.0.0
191
+ post_install_message:
192
+ rdoc_options: []
193
+ require_paths:
194
+ - lib
195
+ required_ruby_version: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '3.0'
200
+ required_rubygems_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ requirements: []
206
+ rubygems_version: 3.2.33
207
+ signing_key:
208
+ specification_version: 4
209
+ summary: A publishing platform for HTTP, Gemini, ActivityPub, RSS, Atom, and others
210
+ test_files: []