diversipub 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []