telepost 0.7.0 → 0.8.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 +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +42 -33
- data/LICENSE.txt +1 -1
- data/LICENSES/MIT.txt +1 -1
- data/README.md +9 -0
- data/Rakefile +2 -1
- data/lib/telepost.rb +32 -2
- data/telepost.gemspec +3 -3
- metadata +2 -20
- data/.0pdd.yml +0 -11
- data/.github/workflows/actionlint.yml +0 -25
- data/.github/workflows/codecov.yml +0 -25
- data/.github/workflows/copyrights.yml +0 -15
- data/.github/workflows/markdown-lint.yml +0 -23
- data/.github/workflows/pdd.yml +0 -19
- data/.github/workflows/rake.yml +0 -28
- data/.github/workflows/reuse.yml +0 -19
- data/.github/workflows/typos.yml +0 -19
- data/.github/workflows/xcop.yml +0 -15
- data/.github/workflows/yamllint.yml +0 -19
- data/.gitignore +0 -10
- data/.pdd +0 -5
- data/.rubocop.yml +0 -38
- data/.rultor.yml +0 -27
- data/renovate.json +0 -6
- data/test/test__helper.rb +0 -33
- data/test/test_telepost.rb +0 -67
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1ce7fcf4f1c91fc69b689ecc87f50b6e73148288151135c0da1c1bbd7bdae8ff
|
|
4
|
+
data.tar.gz: 4b4daa207bf50cc80e85a71f2ce646c1915d41026b8f04ff8bad7e5ec9f9f663
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9e34a5b2bf917792c5ace84e188e1403b59b3dfd6ac018f7cee1cc676870ad78f70c2420bcd8eadc6064cd15caadcfdacbc4f66376367e4212dd498dee37f5ec
|
|
7
|
+
data.tar.gz: 9c22f5ec9c6c372a611dcd5f468a74d46a0f2b191e87626b3945764fd59953a1b8bb92d9aaef8cb54850e0a43baa582e88bcf02c1ab97fd1dcb584e25a5f0760
|
data/Gemfile
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2018-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
source 'https://rubygems.org'
|
|
7
7
|
gemspec
|
|
8
8
|
|
|
9
|
-
gem 'minitest', '~>
|
|
9
|
+
gem 'minitest', '~>6.0', require: false
|
|
10
10
|
gem 'minitest-reporters', '~>1.7', require: false
|
|
11
11
|
gem 'rake', '~>13.2', require: false
|
|
12
12
|
gem 'rubocop', '~>1.71', require: false
|
data/Gemfile.lock
CHANGED
|
@@ -7,17 +7,18 @@ PATH
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
addressable (2.
|
|
11
|
-
public_suffix (>= 2.0.2, <
|
|
12
|
-
ansi (1.
|
|
10
|
+
addressable (2.9.0)
|
|
11
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
12
|
+
ansi (1.6.0)
|
|
13
13
|
ast (2.4.3)
|
|
14
|
-
bigdecimal (
|
|
14
|
+
bigdecimal (4.1.0)
|
|
15
15
|
builder (3.3.0)
|
|
16
16
|
concurrent-ruby (1.3.5)
|
|
17
|
-
crack (1.0.
|
|
17
|
+
crack (1.0.1)
|
|
18
18
|
bigdecimal
|
|
19
19
|
rexml
|
|
20
20
|
docile (1.4.1)
|
|
21
|
+
drb (2.2.3)
|
|
21
22
|
dry-core (1.1.0)
|
|
22
23
|
concurrent-ruby (~> 1.0)
|
|
23
24
|
logger
|
|
@@ -33,8 +34,8 @@ GEM
|
|
|
33
34
|
dry-types (~> 1.8, >= 1.8.2)
|
|
34
35
|
ice_nine (~> 0.11)
|
|
35
36
|
zeitwerk (~> 2.6)
|
|
36
|
-
dry-types (1.
|
|
37
|
-
bigdecimal (
|
|
37
|
+
dry-types (1.9.1)
|
|
38
|
+
bigdecimal (>= 3.0)
|
|
38
39
|
concurrent-ruby (~> 1.0)
|
|
39
40
|
dry-core (~> 1.0)
|
|
40
41
|
dry-inflector (~> 1.0)
|
|
@@ -48,54 +49,62 @@ GEM
|
|
|
48
49
|
multipart-post (~> 2.0)
|
|
49
50
|
faraday-net_http (3.4.1)
|
|
50
51
|
net-http (>= 0.5.0)
|
|
51
|
-
hashdiff (1.2.
|
|
52
|
+
hashdiff (1.2.1)
|
|
52
53
|
ice_nine (0.11.2)
|
|
53
|
-
json (2.
|
|
54
|
+
json (2.19.2)
|
|
55
|
+
json-schema (6.2.0)
|
|
56
|
+
addressable (~> 2.8)
|
|
57
|
+
bigdecimal (>= 3.1, < 5)
|
|
54
58
|
language_server-protocol (3.17.0.5)
|
|
55
59
|
lint_roller (1.1.0)
|
|
56
60
|
logger (1.7.0)
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
mcp (0.9.2)
|
|
62
|
+
json-schema (>= 4.1)
|
|
63
|
+
minitest (6.0.5)
|
|
64
|
+
drb (~> 2.0)
|
|
65
|
+
prism (~> 1.5)
|
|
66
|
+
minitest-reporters (1.8.0)
|
|
59
67
|
ansi
|
|
60
68
|
builder
|
|
61
|
-
minitest (>= 5.0)
|
|
69
|
+
minitest (>= 5.0, < 7)
|
|
62
70
|
ruby-progressbar
|
|
63
71
|
multipart-post (2.4.1)
|
|
64
72
|
net-http (0.6.0)
|
|
65
73
|
uri
|
|
66
74
|
parallel (1.27.0)
|
|
67
|
-
parser (3.3.
|
|
75
|
+
parser (3.3.10.2)
|
|
68
76
|
ast (~> 2.4.1)
|
|
69
77
|
racc
|
|
70
|
-
prism (1.
|
|
71
|
-
public_suffix (
|
|
78
|
+
prism (1.9.0)
|
|
79
|
+
public_suffix (7.0.5)
|
|
72
80
|
racc (1.8.1)
|
|
73
81
|
rainbow (3.1.1)
|
|
74
|
-
rake (13.
|
|
75
|
-
regexp_parser (2.
|
|
76
|
-
rexml (3.4.
|
|
77
|
-
rubocop (1.
|
|
82
|
+
rake (13.4.2)
|
|
83
|
+
regexp_parser (2.11.3)
|
|
84
|
+
rexml (3.4.4)
|
|
85
|
+
rubocop (1.85.1)
|
|
78
86
|
json (~> 2.3)
|
|
79
87
|
language_server-protocol (~> 3.17.0.2)
|
|
80
88
|
lint_roller (~> 1.1.0)
|
|
89
|
+
mcp (~> 0.6)
|
|
81
90
|
parallel (~> 1.10)
|
|
82
91
|
parser (>= 3.3.0.2)
|
|
83
92
|
rainbow (>= 2.2.2, < 4.0)
|
|
84
93
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
85
|
-
rubocop-ast (>= 1.
|
|
94
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
86
95
|
ruby-progressbar (~> 1.7)
|
|
87
96
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
88
|
-
rubocop-ast (1.
|
|
97
|
+
rubocop-ast (1.49.1)
|
|
89
98
|
parser (>= 3.3.7.2)
|
|
90
|
-
prism (~> 1.
|
|
91
|
-
rubocop-minitest (0.
|
|
99
|
+
prism (~> 1.7)
|
|
100
|
+
rubocop-minitest (0.39.1)
|
|
92
101
|
lint_roller (~> 1.1)
|
|
93
102
|
rubocop (>= 1.75.0, < 2.0)
|
|
94
103
|
rubocop-ast (>= 1.38.0, < 2.0)
|
|
95
|
-
rubocop-performance (1.
|
|
104
|
+
rubocop-performance (1.26.1)
|
|
96
105
|
lint_roller (~> 1.1)
|
|
97
106
|
rubocop (>= 1.75.0, < 2.0)
|
|
98
|
-
rubocop-ast (>= 1.
|
|
107
|
+
rubocop-ast (>= 1.47.1, < 2.0)
|
|
99
108
|
rubocop-rake (0.7.1)
|
|
100
109
|
lint_roller (~> 1.1)
|
|
101
110
|
rubocop (>= 1.72.1)
|
|
@@ -104,7 +113,7 @@ GEM
|
|
|
104
113
|
docile (~> 1.1)
|
|
105
114
|
simplecov-html (~> 0.11)
|
|
106
115
|
simplecov_json_formatter (~> 0.1)
|
|
107
|
-
simplecov-cobertura (3.
|
|
116
|
+
simplecov-cobertura (3.1.0)
|
|
108
117
|
rexml
|
|
109
118
|
simplecov (~> 0.19)
|
|
110
119
|
simplecov-html (0.13.2)
|
|
@@ -114,15 +123,15 @@ GEM
|
|
|
114
123
|
faraday (~> 2.0)
|
|
115
124
|
faraday-multipart (~> 1.0)
|
|
116
125
|
zeitwerk (~> 2.6)
|
|
117
|
-
unicode-display_width (3.
|
|
118
|
-
unicode-emoji (~> 4.
|
|
119
|
-
unicode-emoji (4.0
|
|
120
|
-
uri (1.0.
|
|
121
|
-
webmock (3.
|
|
126
|
+
unicode-display_width (3.2.0)
|
|
127
|
+
unicode-emoji (~> 4.1)
|
|
128
|
+
unicode-emoji (4.2.0)
|
|
129
|
+
uri (1.0.4)
|
|
130
|
+
webmock (3.26.2)
|
|
122
131
|
addressable (>= 2.8.0)
|
|
123
132
|
crack (>= 0.3.2)
|
|
124
133
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
125
|
-
yard (0.9.
|
|
134
|
+
yard (0.9.43)
|
|
126
135
|
zeitwerk (2.7.3)
|
|
127
136
|
|
|
128
137
|
PLATFORMS
|
|
@@ -133,7 +142,7 @@ PLATFORMS
|
|
|
133
142
|
x86_64-linux
|
|
134
143
|
|
|
135
144
|
DEPENDENCIES
|
|
136
|
-
minitest (~>
|
|
145
|
+
minitest (~> 6.0)
|
|
137
146
|
minitest-reporters (~> 1.7)
|
|
138
147
|
rake (~> 13.2)
|
|
139
148
|
rubocop (~> 1.71)
|
data/LICENSE.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2018-
|
|
3
|
+
Copyright (c) 2018-2026 Yegor Bugayenko
|
|
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/LICENSES/MIT.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2018-
|
|
3
|
+
Copyright (c) 2018-2026 Yegor Bugayenko
|
|
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
|
@@ -46,6 +46,15 @@ tp = Telepost.new('..token..', chats: [12345])
|
|
|
46
46
|
tp.spam('How are you?')
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
You can also attach a file (sent as a Telegram document). The
|
|
50
|
+
`file` argument accepts a path or an already-open `IO`/`File`,
|
|
51
|
+
and `caption:` is optional:
|
|
52
|
+
|
|
53
|
+
```ruby
|
|
54
|
+
tp = Telepost.new('..token..')
|
|
55
|
+
tp.attach(12345, '/tmp/dump.sql', caption: 'Today is dump')
|
|
56
|
+
```
|
|
57
|
+
|
|
49
58
|
That's it.
|
|
50
59
|
|
|
51
60
|
## How to contribute
|
data/Rakefile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2018-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'rubygems'
|
|
@@ -37,4 +37,5 @@ require 'yard'
|
|
|
37
37
|
desc 'Build Yard documentation'
|
|
38
38
|
YARD::Rake::YardocTask.new do |t|
|
|
39
39
|
t.files = ['lib/**/*.rb']
|
|
40
|
+
t.options = ['--fail-on-warning']
|
|
40
41
|
end
|
data/lib/telepost.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2018-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'telegram/bot'
|
|
@@ -18,7 +18,7 @@ require 'telegram/bot'
|
|
|
18
18
|
# {README}[https://github.com/yegor256/telepost/blob/master/README.md] file.
|
|
19
19
|
#
|
|
20
20
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
21
|
-
# Copyright:: Copyright (c) 2018-
|
|
21
|
+
# Copyright:: Copyright (c) 2018-2026 Yegor Bugayenko
|
|
22
22
|
# License:: MIT
|
|
23
23
|
class Telepost
|
|
24
24
|
# Fake implementation for testing
|
|
@@ -42,6 +42,12 @@ class Telepost
|
|
|
42
42
|
def post(chat, *lines)
|
|
43
43
|
@sent << "#{chat}: #{lines.join(' ')}"
|
|
44
44
|
end
|
|
45
|
+
|
|
46
|
+
def attach(chat, file, caption: nil)
|
|
47
|
+
path = file.is_a?(String) ? file : file.path
|
|
48
|
+
tail = caption.nil? ? '' : " caption=#{caption}"
|
|
49
|
+
@sent << "#{chat}: [attach:#{File.basename(path)}#{tail}]"
|
|
50
|
+
end
|
|
45
51
|
end
|
|
46
52
|
|
|
47
53
|
# When can't post a message
|
|
@@ -109,4 +115,28 @@ class Telepost
|
|
|
109
115
|
text: lines.join(' ')
|
|
110
116
|
)
|
|
111
117
|
end
|
|
118
|
+
|
|
119
|
+
# Attach a file (as a Telegram document) to the chat. The file
|
|
120
|
+
# argument can either be a path (String) or an open IO/File. The
|
|
121
|
+
# filename shown in Telegram comes from the basename of the path.
|
|
122
|
+
#
|
|
123
|
+
# @param chat [Integer, String] Chat ID or channel name
|
|
124
|
+
# @param file [String, File, IO] Path to the file or an open IO
|
|
125
|
+
# @param caption [String, nil] Optional caption for the attachment
|
|
126
|
+
# @param parse_mode [String] Parse mode used for the caption
|
|
127
|
+
# @return [Telegram::Bot::Types::Message] The sent message object
|
|
128
|
+
def attach(chat, file, caption: nil, parse_mode: 'Markdown')
|
|
129
|
+
document =
|
|
130
|
+
if file.is_a?(String)
|
|
131
|
+
Faraday::UploadIO.new(file, 'application/octet-stream', File.basename(file))
|
|
132
|
+
else
|
|
133
|
+
file
|
|
134
|
+
end
|
|
135
|
+
@bot.api.send_document(
|
|
136
|
+
chat_id: chat,
|
|
137
|
+
document:,
|
|
138
|
+
caption:,
|
|
139
|
+
parse_mode:
|
|
140
|
+
)
|
|
141
|
+
end
|
|
112
142
|
end
|
data/telepost.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2018-2026 Yegor Bugayenko
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
|
5
5
|
|
|
6
6
|
require 'English'
|
|
@@ -9,14 +9,14 @@ Gem::Specification.new do |s|
|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
|
10
10
|
s.required_ruby_version = '>=3.2'
|
|
11
11
|
s.name = 'telepost'
|
|
12
|
-
s.version = '0.
|
|
12
|
+
s.version = '0.8.0'
|
|
13
13
|
s.license = 'MIT'
|
|
14
14
|
s.summary = 'Simple Telegram posting Ruby gem'
|
|
15
15
|
s.description = 'Simple Telegram posting Ruby gem'
|
|
16
16
|
s.authors = ['Yegor Bugayenko']
|
|
17
17
|
s.email = 'yegor256@gmail.com'
|
|
18
18
|
s.homepage = 'https://github.com/yegor256/telepost'
|
|
19
|
-
s.files = `git ls-files`.split($RS)
|
|
19
|
+
s.files = `git ls-files | grep -v -E '^(test/|\\.|renovate)'`.split($RS)
|
|
20
20
|
s.rdoc_options = ['--charset=UTF-8']
|
|
21
21
|
s.extra_rdoc_files = ['README.md']
|
|
22
22
|
s.add_dependency 'telegram-bot-ruby', '~> 1.0'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: telepost
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yegor Bugayenko
|
|
@@ -30,21 +30,6 @@ extensions: []
|
|
|
30
30
|
extra_rdoc_files:
|
|
31
31
|
- README.md
|
|
32
32
|
files:
|
|
33
|
-
- ".0pdd.yml"
|
|
34
|
-
- ".github/workflows/actionlint.yml"
|
|
35
|
-
- ".github/workflows/codecov.yml"
|
|
36
|
-
- ".github/workflows/copyrights.yml"
|
|
37
|
-
- ".github/workflows/markdown-lint.yml"
|
|
38
|
-
- ".github/workflows/pdd.yml"
|
|
39
|
-
- ".github/workflows/rake.yml"
|
|
40
|
-
- ".github/workflows/reuse.yml"
|
|
41
|
-
- ".github/workflows/typos.yml"
|
|
42
|
-
- ".github/workflows/xcop.yml"
|
|
43
|
-
- ".github/workflows/yamllint.yml"
|
|
44
|
-
- ".gitignore"
|
|
45
|
-
- ".pdd"
|
|
46
|
-
- ".rubocop.yml"
|
|
47
|
-
- ".rultor.yml"
|
|
48
33
|
- Gemfile
|
|
49
34
|
- Gemfile.lock
|
|
50
35
|
- LICENSE.txt
|
|
@@ -54,10 +39,7 @@ files:
|
|
|
54
39
|
- Rakefile
|
|
55
40
|
- lib/telepost.rb
|
|
56
41
|
- logo.svg
|
|
57
|
-
- renovate.json
|
|
58
42
|
- telepost.gemspec
|
|
59
|
-
- test/test__helper.rb
|
|
60
|
-
- test/test_telepost.rb
|
|
61
43
|
homepage: https://github.com/yegor256/telepost
|
|
62
44
|
licenses:
|
|
63
45
|
- MIT
|
|
@@ -78,7 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
78
60
|
- !ruby/object:Gem::Version
|
|
79
61
|
version: '0'
|
|
80
62
|
requirements: []
|
|
81
|
-
rubygems_version: 3.6.
|
|
63
|
+
rubygems_version: 3.6.9
|
|
82
64
|
specification_version: 4
|
|
83
65
|
summary: Simple Telegram posting Ruby gem
|
|
84
66
|
test_files: []
|
data/.0pdd.yml
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: actionlint
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
jobs:
|
|
14
|
-
actionlint:
|
|
15
|
-
timeout-minutes: 15
|
|
16
|
-
runs-on: ubuntu-24.04
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
- name: Download actionlint
|
|
20
|
-
id: get_actionlint
|
|
21
|
-
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
22
|
-
shell: bash
|
|
23
|
-
- name: Check workflow files
|
|
24
|
-
run: ${{ steps.get_actionlint.outputs.executable }} -color
|
|
25
|
-
shell: bash
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: codecov
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
jobs:
|
|
11
|
-
codecov:
|
|
12
|
-
timeout-minutes: 15
|
|
13
|
-
runs-on: ubuntu-24.04
|
|
14
|
-
steps:
|
|
15
|
-
- uses: actions/checkout@v4
|
|
16
|
-
- uses: ruby/setup-ruby@v1
|
|
17
|
-
with:
|
|
18
|
-
ruby-version: 3.3
|
|
19
|
-
bundler-cache: true
|
|
20
|
-
- run: bundle config set --global path "$(pwd)/vendor/bundle"
|
|
21
|
-
- run: bundle install --no-color
|
|
22
|
-
- run: bundle exec rake
|
|
23
|
-
- uses: codecov/codecov-action@v5
|
|
24
|
-
with:
|
|
25
|
-
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: copyrights
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
pull_request:
|
|
9
|
-
jobs:
|
|
10
|
-
copyrights:
|
|
11
|
-
timeout-minutes: 15
|
|
12
|
-
runs-on: ubuntu-24.04
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
- uses: yegor256/copyrights-action@0.0.12
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: markdown-lint
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
paths-ignore: ['paper/**', 'sandbox/**']
|
|
14
|
-
concurrency:
|
|
15
|
-
group: markdown-lint-${{ github.ref }}
|
|
16
|
-
cancel-in-progress: true
|
|
17
|
-
jobs:
|
|
18
|
-
markdown-lint:
|
|
19
|
-
timeout-minutes: 15
|
|
20
|
-
runs-on: ubuntu-24.04
|
|
21
|
-
steps:
|
|
22
|
-
- uses: actions/checkout@v4
|
|
23
|
-
- uses: DavidAnson/markdownlint-cli2-action@v20.0.0
|
data/.github/workflows/pdd.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: pdd
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
jobs:
|
|
14
|
-
pdd:
|
|
15
|
-
timeout-minutes: 15
|
|
16
|
-
runs-on: ubuntu-24.04
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
- uses: volodya-lombrozo/pdd-action@master
|
data/.github/workflows/rake.yml
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: rake
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
jobs:
|
|
14
|
-
test:
|
|
15
|
-
strategy:
|
|
16
|
-
matrix:
|
|
17
|
-
os: [ubuntu-24.04, macos-15, windows-2022]
|
|
18
|
-
ruby: [3.3]
|
|
19
|
-
runs-on: ${{ matrix.os }}
|
|
20
|
-
steps:
|
|
21
|
-
- uses: actions/checkout@v4
|
|
22
|
-
- uses: ruby/setup-ruby@v1
|
|
23
|
-
with:
|
|
24
|
-
ruby-version: ${{ matrix.ruby }}
|
|
25
|
-
bundler-cache: true
|
|
26
|
-
- run: bundle config set --global path "$(pwd)/vendor/bundle"
|
|
27
|
-
- run: bundle install --no-color
|
|
28
|
-
- run: bundle exec rake
|
data/.github/workflows/reuse.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: reuse
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
jobs:
|
|
14
|
-
reuse:
|
|
15
|
-
timeout-minutes: 15
|
|
16
|
-
runs-on: ubuntu-24.04
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
- uses: fsfe/reuse-action@v5
|
data/.github/workflows/typos.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: typos
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
jobs:
|
|
14
|
-
typos:
|
|
15
|
-
timeout-minutes: 15
|
|
16
|
-
runs-on: ubuntu-24.04
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
- uses: crate-ci/typos@v1.33.1
|
data/.github/workflows/xcop.yml
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: xcop
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
pull_request:
|
|
9
|
-
jobs:
|
|
10
|
-
xcop:
|
|
11
|
-
timeout-minutes: 15
|
|
12
|
-
runs-on: ubuntu-24.04
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
- uses: g4s8/xcop-action@master
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
2
|
-
# SPDX-License-Identifier: MIT
|
|
3
|
-
---
|
|
4
|
-
# yamllint disable rule:line-length
|
|
5
|
-
name: yamllint
|
|
6
|
-
'on':
|
|
7
|
-
push:
|
|
8
|
-
branches:
|
|
9
|
-
- master
|
|
10
|
-
pull_request:
|
|
11
|
-
branches:
|
|
12
|
-
- master
|
|
13
|
-
jobs:
|
|
14
|
-
yamllint:
|
|
15
|
-
timeout-minutes: 15
|
|
16
|
-
runs-on: ubuntu-24.04
|
|
17
|
-
steps:
|
|
18
|
-
- uses: actions/checkout@v4
|
|
19
|
-
- uses: ibiqlik/action-yamllint@v3
|
data/.gitignore
DELETED
data/.pdd
DELETED
data/.rubocop.yml
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
4
|
-
# SPDX-License-Identifier: MIT
|
|
5
|
-
---
|
|
6
|
-
AllCops:
|
|
7
|
-
Exclude:
|
|
8
|
-
- 'bin/**/*'
|
|
9
|
-
- 'assets/**/*'
|
|
10
|
-
- 'vendor/**/*'
|
|
11
|
-
- 'j/**/*'
|
|
12
|
-
DisplayCopNames: true
|
|
13
|
-
TargetRubyVersion: 3.2
|
|
14
|
-
NewCops: enable
|
|
15
|
-
SuggestExtensions: false
|
|
16
|
-
plugins:
|
|
17
|
-
- rubocop-rake
|
|
18
|
-
- rubocop-minitest
|
|
19
|
-
- rubocop-performance
|
|
20
|
-
Minitest/EmptyLineBeforeAssertionMethods:
|
|
21
|
-
Enabled: false
|
|
22
|
-
Layout/EmptyLineAfterGuardClause:
|
|
23
|
-
Enabled: false
|
|
24
|
-
Layout/MultilineMethodCallIndentation:
|
|
25
|
-
Enabled: false
|
|
26
|
-
Metrics/AbcSize:
|
|
27
|
-
Max: 50
|
|
28
|
-
Metrics/MethodLength:
|
|
29
|
-
Max: 30
|
|
30
|
-
Metrics/CyclomaticComplexity:
|
|
31
|
-
Max: 10
|
|
32
|
-
Metrics/PerceivedComplexity:
|
|
33
|
-
Max: 10
|
|
34
|
-
Metrics/ParameterLists:
|
|
35
|
-
Max: 10
|
|
36
|
-
Layout/ParameterAlignment:
|
|
37
|
-
Enabled: false
|
|
38
|
-
require: []
|
data/.rultor.yml
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
4
|
-
# SPDX-License-Identifier: MIT
|
|
5
|
-
---
|
|
6
|
-
# yamllint disable rule:line-length
|
|
7
|
-
docker:
|
|
8
|
-
image: yegor256/ruby
|
|
9
|
-
assets:
|
|
10
|
-
rubygems.yml: yegor256/home#assets/rubygems.yml
|
|
11
|
-
install: |-
|
|
12
|
-
pdd -f /dev/null
|
|
13
|
-
sudo bundle install --no-color "--gemfile=$(pwd)/Gemfile"
|
|
14
|
-
release:
|
|
15
|
-
pre: false
|
|
16
|
-
script: |-
|
|
17
|
-
bundle exec rake
|
|
18
|
-
rm -rf *.gem
|
|
19
|
-
sed -i "s/0\.0\.0/${tag}/g" telepost.gemspec
|
|
20
|
-
git add telepost.gemspec
|
|
21
|
-
git commit -m "Version set to ${tag}"
|
|
22
|
-
gem build telepost.gemspec
|
|
23
|
-
chmod 0600 ../rubygems.yml
|
|
24
|
-
gem push *.gem --config-file ../rubygems.yml
|
|
25
|
-
merge:
|
|
26
|
-
script: |-
|
|
27
|
-
bundle exec rake
|
data/renovate.json
DELETED
data/test/test__helper.rb
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
4
|
-
# SPDX-License-Identifier: MIT
|
|
5
|
-
|
|
6
|
-
$stdout.sync = true
|
|
7
|
-
|
|
8
|
-
require 'simplecov'
|
|
9
|
-
require 'simplecov-cobertura'
|
|
10
|
-
unless SimpleCov.running || ENV['PICKS']
|
|
11
|
-
SimpleCov.command_name('test')
|
|
12
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
|
|
13
|
-
[
|
|
14
|
-
SimpleCov::Formatter::HTMLFormatter,
|
|
15
|
-
SimpleCov::Formatter::CoberturaFormatter
|
|
16
|
-
]
|
|
17
|
-
)
|
|
18
|
-
SimpleCov.minimum_coverage 85
|
|
19
|
-
SimpleCov.minimum_coverage_by_file 85
|
|
20
|
-
SimpleCov.start do
|
|
21
|
-
add_filter 'test/'
|
|
22
|
-
add_filter 'vendor/'
|
|
23
|
-
add_filter 'target/'
|
|
24
|
-
track_files 'lib/**/*.rb'
|
|
25
|
-
track_files '*.rb'
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
require 'minitest/autorun'
|
|
30
|
-
require 'minitest/reporters'
|
|
31
|
-
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new]
|
|
32
|
-
|
|
33
|
-
require 'webmock/minitest'
|
data/test/test_telepost.rb
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# SPDX-FileCopyrightText: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
4
|
-
# SPDX-License-Identifier: MIT
|
|
5
|
-
|
|
6
|
-
require 'yaml'
|
|
7
|
-
require_relative 'test__helper'
|
|
8
|
-
require_relative '../lib/telepost'
|
|
9
|
-
|
|
10
|
-
# Telepost test.
|
|
11
|
-
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
12
|
-
# Copyright:: Copyright (c) 2018-2025 Yegor Bugayenko
|
|
13
|
-
# License:: MIT
|
|
14
|
-
class TelepostTest < Minitest::Test
|
|
15
|
-
def test_fake_posting
|
|
16
|
-
tp = Telepost::Fake.new
|
|
17
|
-
tp.run
|
|
18
|
-
tp.post(123, 'This is', 'a simple', 'message')
|
|
19
|
-
assert_equal(1, tp.sent.count)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_fake_spam
|
|
23
|
-
tp = Telepost::Fake.new
|
|
24
|
-
tp.spam('how are you all?')
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_sends_single_message
|
|
28
|
-
WebMock.disable_net_connect!
|
|
29
|
-
stub_request(:post, 'https://api.telegram.org/botfoo/sendMessage').to_return(body: '{}')
|
|
30
|
-
tp = Telepost.new('foo')
|
|
31
|
-
tp.post(42, 'hello!')
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def test_sends_simple_spam
|
|
35
|
-
WebMock.disable_net_connect!
|
|
36
|
-
stub_request(:post, 'https://api.telegram.org/bottoken/sendMessage').to_return(body: '{}')
|
|
37
|
-
tp = Telepost.new('token', chats: [42])
|
|
38
|
-
tp.spam('hey!')
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_listens
|
|
42
|
-
WebMock.disable_net_connect!
|
|
43
|
-
stub_request(:post, 'https://api.telegram.org/botxx/getUpdates')
|
|
44
|
-
.to_return(status: 200, body: '{}')
|
|
45
|
-
tp = Telepost.new('xx')
|
|
46
|
-
t =
|
|
47
|
-
Thread.new do
|
|
48
|
-
tp.run do |chat, msg|
|
|
49
|
-
# we'll never reach this point
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
t.terminate
|
|
53
|
-
t.join
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def test_real_posting
|
|
57
|
-
WebMock.enable_net_connect!
|
|
58
|
-
cfg = '/code/home/assets/zerocracy/baza.yml'
|
|
59
|
-
skip unless File.exist?(cfg)
|
|
60
|
-
yaml = YAML.safe_load_file(cfg)
|
|
61
|
-
tp = Telepost.new(
|
|
62
|
-
yaml['tg']['token'],
|
|
63
|
-
chats: [yaml['tg']['admin_chat'].to_i]
|
|
64
|
-
)
|
|
65
|
-
tp.spam('This is just a test message from telepost test')
|
|
66
|
-
end
|
|
67
|
-
end
|