mchat 0.1.0 → 0.2.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: 3f0aebc0b0bcebdc9caad7172d05d3474fef6b0064023f280401a8736f19fbb6
4
- data.tar.gz: dda796643faa8e779b12a9e4ce1714edc4625563848dfef30af3e1e93acd4276
3
+ metadata.gz: 6aefb6d9811fd9c32d4d2d4245bb28830c4660e4a9e8b4c83371cd0c97cf3b69
4
+ data.tar.gz: af93fe1a94375326e7a20cf141bb0e4936e317eb53398c874deb10d20d025480
5
5
  SHA512:
6
- metadata.gz: db62700957058f56b4ad13ea5b4f5d2e7e8b2508316e31365c11bbebf646e6ac7b053f499bf0cdf2f7a096a4c95a69e701b416e2b1eab5bf453f2ab42a55bd47
7
- data.tar.gz: 4965daf82bc576a79ac1a05cd86ff925b9daebf4e22ce904a61814af39ae2a91c245a58da436d8e746185ded5b9947d2a74a609fa8058a510c763b95f306ed32
6
+ metadata.gz: '076984b05f9c3482cc520fb95ef31c9a29c1630fea35e7d946741e949f8883ea883981f4888d840e9b49fd675e6e202585d7c264c59a475e80271b5416f5cd80'
7
+ data.tar.gz: 02d42e72ad4619dafe0e069861c9d60af8f14c49f8f23f03e2d88cda199c9281f4ab282636e9cd5543b9b01dbf9fce59f2f8147e1f3b9faf496fcf2d82193553
data/Dockerfile ADDED
@@ -0,0 +1,20 @@
1
+ FROM ruby:3.1-buster
2
+
3
+ ENV LANG=C.UTF-8
4
+
5
+ RUN apt update -y
6
+ RUN apt install screen -y
7
+ RUN apt install vim -y
8
+ RUN apt install nano -y
9
+
10
+ RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
11
+ RUN gem install bundler
12
+ RUN bundle config mirror.https://rubygems.org https://gems.ruby-china.com
13
+
14
+
15
+ # Install gems
16
+ RUN gem install rainbow
17
+ RUN gem install httparty
18
+ RUN gem install mchat
19
+
20
+ CMD ["bash"]
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Mchat is IRC like chat client.
4
4
 
5
+ [Doc: 用Ruby打造一个命令行Slack](https://mark24code.github.io/ruby/2022/08/15/%E7%94%A8Ruby%E6%89%93%E9%80%A0%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E8%A1%8CSlack.html)
6
+
5
7
  ![preview](./assets/preview.png)
6
8
 
7
9
  This is Mchat client repo, server repo:
@@ -24,6 +26,12 @@ mchat
24
26
  /h
25
27
  ```
26
28
 
29
+ 或者使用Docker
30
+
31
+ 直接使用
32
+
33
+ `docker run -it mark24code/mchat`
34
+
27
35
 
28
36
 
29
37
  ----
data/Rakefile CHANGED
@@ -13,9 +13,17 @@ end
13
13
 
14
14
  # RuboCop::RakeTask.new
15
15
 
16
- Rake::TestTask.new(:preview) do |t|
16
+ desc 'build gem & local install it'
17
+ task :preview do
17
18
  system("gem build mchat.gemspec && gem install ./mchat-#{Mchat::VERSION}.gem")
18
19
  end
19
20
 
21
+ desc 'build docker images & push'
22
+ task :docker_pd do
23
+ system("docker build -t mark24code/mchat:latest .")
24
+ system("docker push mark24code/mchat")
25
+ system("docker build -t mark24code/mchat:#{Mchat::VERSION} .")
26
+ system("docker push mark24code/mchat:#{Mchat::VERSION}")
27
+ end
20
28
 
21
29
  task default: %i[test]
data/exe/mchat CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'optparse'
2
3
  require 'pathname'
4
+ require_relative '../lib/mchat/version.rb'
3
5
  require_relative "../lib/mchat/comps/font"
4
6
  class String
5
7
  include Mchat::Style
@@ -8,8 +10,8 @@ require_relative "../lib/mchat/comps/user_config"
8
10
  class MchatApp
9
11
  include Mchat::UserConfig
10
12
 
11
- def initialize
12
- first_time_use
13
+ def initialize(opts={})
14
+ @server = opts.fetch(:server, nil)
13
15
  @screenrc_dir = Pathname.new(Dir.home).join('.mchat')
14
16
  @screenrc = Pathname.new(Dir.home).join('.mchat').join('screenrc')
15
17
  end
@@ -30,10 +32,16 @@ class MchatApp
30
32
  init_config = %Q(
31
33
  split -v
32
34
 
33
- screen -t timeline 'mchat_timeline'
35
+ screen -t timeline mchat_timeline
34
36
  focus
35
- screen -t repl 'mchat_repl'
36
37
  )
38
+ if @server
39
+ # search `eval` 接受完整参数
40
+ # https://www.gnu.org/software/screen/manual/screen.html
41
+ init_config << "screen -t repl eval mchat_repl --server=#{@server}"
42
+ else
43
+ init_config << "screen -t repl mchat_repl"
44
+ end
37
45
  f << init_config
38
46
  end
39
47
  end
@@ -59,4 +67,24 @@ class MchatApp
59
67
  end
60
68
 
61
69
 
62
- MchatApp.new.run
70
+
71
+ options = {}
72
+ OptionParser.new do |opts|
73
+ opts.banner = "Usage: mchat [options]"
74
+
75
+ opts.on("--version", "version") do
76
+
77
+ puts "Mchat v#{::Mchat::VERSION}"
78
+ puts ""
79
+ puts "author: mark24"
80
+ puts "mail: mark.zhangyoung@qq.com"
81
+ return
82
+ end
83
+
84
+ opts.on("--server=SERVER", "server") do |server|
85
+ options[:server] = server
86
+ end
87
+
88
+ end.parse!
89
+
90
+ MchatApp.new(options).run
data/exe/mchat_repl CHANGED
@@ -1,7 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'optparse'
3
+ require_relative '../lib/mchat/version.rb'
2
4
  require_relative "../lib/mchat"
3
5
 
4
- repl = Mchat::Repl.new
6
+
7
+ options = {}
8
+ OptionParser.new do |opts|
9
+ opts.banner = "Usage: mchat_repl [options]"
10
+
11
+ opts.on("--version", "version") do
12
+
13
+ puts "MchatRepl v#{::Mchat::VERSION}"
14
+ puts ""
15
+ puts "author: mark24"
16
+ puts "mail: mark.zhangyoung@qq.com"
17
+ return
18
+ end
19
+
20
+ opts.on("--server=SERVER", "server") do |server|
21
+ options[:server] = server
22
+ end
23
+
24
+ end.parse!
25
+
26
+
27
+ repl = Mchat::Repl.new(options)
5
28
 
6
29
  trap("INT") { repl.quit_command_run }
7
30
 
data/exe/mchat_timeline CHANGED
@@ -1,8 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'optparse'
3
+ require_relative '../lib/mchat/version.rb'
2
4
  require_relative "../lib/mchat/timeline"
3
5
 
4
- tl = Mchat::Timeline.new
5
6
 
6
- trap("INT") { tl.hook_close }
7
+ OptionParser.new do |opts|
8
+ opts.banner = "Usage: mchat [options]"
7
9
 
8
- tl.run
10
+ opts.on("--version", "version") do
11
+
12
+ puts "MchatTimeline v#{::Mchat::VERSION}"
13
+ puts ""
14
+ puts "author: mark24"
15
+ puts "mail: mark.zhangyoung@qq.com"
16
+ return
17
+ end
18
+ end.parse!
19
+
20
+ tl = Mchat::Timeline.new
21
+
22
+ trap("INT") { tl.hook_close }
23
+
24
+ tl.run
data/exe/mchat_uninstall CHANGED
@@ -1,8 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'optparse'
3
+ require_relative '../lib/mchat/version.rb'
2
4
 
3
- puts "[mchat] clean config ..."
4
- system("rm -rf .mchat")
5
- puts "[mchat] uninstall mchat ..."
6
- system("gem uninstall mchat")
5
+ options = {}
6
+ OptionParser.new do |opts|
7
+ opts.banner = "Usage: mchat_uninstall [options]"
7
8
 
8
- puts "[mchat] all files have uninstalled. Bye :D"
9
+ opts.on("--version", "version") do
10
+
11
+ puts "MchatUninstall v#{::Mchat::VERSION}"
12
+ puts ""
13
+ puts "author: mark24"
14
+ puts "mail: mark.zhangyoung@qq.com"
15
+ return
16
+ end
17
+ end.parse!
18
+
19
+
20
+ def goodbye_job
21
+ puts "[mchat] clean config ..."
22
+ system("rm -rf .mchat")
23
+ puts "[mchat] uninstall mchat ..."
24
+ system("gem uninstall mchat")
25
+
26
+ puts "[mchat] all files have uninstalled. Bye :D"
27
+ end
28
+
29
+ goodbye_job
@@ -18,7 +18,7 @@ init_config = %Q(
18
18
  wait_prefix: ">>"
19
19
  display_welcome: true
20
20
  clear_repl_everytime: true
21
- server: "localhost:4567"
21
+ # server: "localhost:4567"
22
22
 
23
23
  )
24
24
  f << init_config
@@ -35,20 +35,33 @@ server: "localhost:4567"
35
35
  return opt
36
36
  end
37
37
 
38
- def first_time_use
39
- if !user_config_exist?
40
- read_user_config
41
- puts "Mchat first run TIPS".style.jade
38
+ def check_server_before_all
39
+ if !@server
40
+ puts "Mchat about `Server` Tips".style.jade
41
+ puts ""
42
+ puts "your server: `#{@server}`"
42
43
  puts ""
43
- puts "Mchat not found user config, maybe this is your first time run Mchat."
44
44
  init_config = "~/.mchat".style.warn
45
45
  puts "Mchat has help your create config to #{init_config}"
46
46
  server_field = "<server> field".style.warn
47
47
  puts "Before you run mchat, edit your config file, change #{server_field} to yours:"
48
48
  puts "vim #{CONFIG_PATH.to_s}".style.warn
49
- puts "make sure your server works, before run Mchat. :D"
50
-
51
- exit 0
49
+ puts "make sure your server works, before run Mchat."
50
+ puts ""
51
+ puts "If you have server address, you can also run like this:"
52
+ puts "mchat --server='http://<your host>'"
53
+ puts "e.g. mchat --server='http://localhost:4567'"
54
+ puts "so you will not need to edit mchatrc." + " :)".style.warn
55
+ puts ""
56
+ puts "Confirm? (y/yes)"
57
+ while true
58
+ confirm = gets
59
+ confirm = confirm.strip
60
+ if confirm == 'y' || confirm == 'yes'
61
+ system('screen -X quit')
62
+ end
63
+ sleep 0.1
64
+ end
52
65
  end
53
66
  end
54
67
  end
data/lib/mchat/repl.rb CHANGED
@@ -104,14 +104,16 @@ module Mchat
104
104
 
105
105
  # Instance ########################3
106
106
 
107
- def initialize
108
- first_time_use
107
+ def initialize(opts = {})
109
108
 
110
109
  @config = read_user_config
111
- @server = @config.fetch("server") || 'localhost:4567'
110
+
111
+ @server = opts.fetch(:server, nil) || @config.fetch("server", nil) || nil
112
+
113
+ check_server_before_all
112
114
 
113
115
  @api = ::Mchat::Request.new(@server)
114
-
116
+
115
117
  @wait_prefix = @config.fetch("wait_prefix") || ">>"
116
118
  @display_welcome = @config.fetch("display_welcome") || true
117
119
 
@@ -215,7 +217,7 @@ module Mchat
215
217
  startup_msg = resp.fetch("data")
216
218
  return Message.new(startup_msg).display
217
219
  end
218
-
220
+
219
221
  def before_loop_setup
220
222
  # cli
221
223
  _puts welcome(@display_welcome)
@@ -55,6 +55,7 @@ module Mchat
55
55
  def hook_close
56
56
  @reader.hook_quit
57
57
  system('screen -X quit')
58
+ exit 0
58
59
  end
59
60
 
60
61
  def dispatch(m)
data/lib/mchat/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mchat
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mchat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark24
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-15 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2022-08-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rainbow
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.1.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.20.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.20.0
13
41
  description: IRC like chat client power by ruby
14
42
  email:
15
43
  - mark.zhangyoung@qq.com
@@ -21,6 +49,7 @@ executables:
21
49
  extensions: []
22
50
  extra_rdoc_files: []
23
51
  files:
52
+ - Dockerfile
24
53
  - Gemfile
25
54
  - Gemfile.lock
26
55
  - LICENSE.txt