lita-cmd 0.1.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 +7 -0
- data/.gitignore +20 -0
- data/.ruby-version +1 -0
- data/Gemfile +3 -0
- data/README.md +62 -0
- data/Rakefile +6 -0
- data/lib/lita-cmd.rb +12 -0
- data/lib/lita/handlers/cmd.rb +66 -0
- data/lita-cmd.gemspec +24 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/cmd_spec.rb +4 -0
- data/spec/spec_helper.rb +6 -0
- data/templates/.gitkeep +0 -0
- metadata +143 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: caf9a05b2c736236f6360721cdcd988e831116b2
|
4
|
+
data.tar.gz: 143dfdb31f5d047bfeb8067a83b1596ff5d306cb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a231064871a2954b82d4ad7238fa3b81618557260158e1e37054e2b963560c65b92307a3bef63203e89a87429ce8abe827f61e34ac7ffca83c3bab6fdfaabf5e
|
7
|
+
data.tar.gz: 73c2f14739c6b312b88dc22688754e1d7ae64ac72edfdeaf3f2b74e87fd901935650ebb3a2658953b5a912e107453e392bf277a5ffb967b17856234b3daebac4
|
data/.gitignore
ADDED
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.1.5@lita-cmd
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
# lita-cmd
|
2
|
+
|
3
|
+
Run scripts from your lita machine and get back the output!
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add lita-cmd to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "lita-cmd"
|
11
|
+
```
|
12
|
+
|
13
|
+
## Configuration
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
Lita.configure do |config|
|
17
|
+
# Lita CMD stuff
|
18
|
+
config.handlers.cmd.scripts_dir = "/path/to/dir/you/expose"
|
19
|
+
end
|
20
|
+
```
|
21
|
+
|
22
|
+
Also, make sure that you are a member of the `devops` Lita Auth group. This requirement will change soon. See Roadmap below.
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
- `cmd-help`
|
27
|
+
- Query the configured directory for filenames and return them
|
28
|
+
- `cmd`
|
29
|
+
- Execute a file in the configured directory
|
30
|
+
|
31
|
+
>- dfinninger: `lita cmd-help`
|
32
|
+
- lita:
|
33
|
+
```
|
34
|
+
hello
|
35
|
+
name
|
36
|
+
```
|
37
|
+
- dfinninger: `lita cmd hello`
|
38
|
+
- lita:
|
39
|
+
```
|
40
|
+
Hello!
|
41
|
+
```
|
42
|
+
- dfinninger: `lita cmd name`
|
43
|
+
- lita:
|
44
|
+
```
|
45
|
+
Your name is: ... well, idk, man...
|
46
|
+
```
|
47
|
+
- dfinninger: `lita cmd name Devon`
|
48
|
+
- lita:
|
49
|
+
```
|
50
|
+
Your name is: Devon
|
51
|
+
```
|
52
|
+
|
53
|
+
## Notes
|
54
|
+
|
55
|
+
- Make sure that your files are executable
|
56
|
+
- (`chmod +x FILE`)
|
57
|
+
- Make sure that you've included the correct shebang
|
58
|
+
- `#!/bin/bash`, `#!/usr/bin/env ruby`, etc...
|
59
|
+
|
60
|
+
## Roadmap
|
61
|
+
|
62
|
+
- [ ] Include support for directory-based access control
|
data/Rakefile
ADDED
data/lib/lita-cmd.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require "lita"
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require "lita/handlers/cmd"
|
8
|
+
|
9
|
+
Lita::Handlers::Cmd.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
module Lita
|
4
|
+
module Handlers
|
5
|
+
class Cmd < Handler
|
6
|
+
|
7
|
+
config :scripts_dir
|
8
|
+
|
9
|
+
route(/^\s*cmd-help\s*$/, :cmd_help, command: true, help: {
|
10
|
+
"cmd-help" => "get a list of scripts available for execution"
|
11
|
+
})
|
12
|
+
|
13
|
+
def cmd_help(resp)
|
14
|
+
out = Array.new
|
15
|
+
|
16
|
+
Dir.chdir(config.scripts_dir)
|
17
|
+
Dir.glob('*').each { |d| out << d }
|
18
|
+
|
19
|
+
list = out.sort.join("\n")
|
20
|
+
|
21
|
+
resp.reply code_blockify(list)
|
22
|
+
end
|
23
|
+
|
24
|
+
route(/^\s*cmd\s+(\S*)\s*(.*)$/, :cmd, command: true, help: {
|
25
|
+
"cmd SCRIPT" => "run the SCRIPT specified; use `lita cmd help` for a list"
|
26
|
+
})
|
27
|
+
|
28
|
+
def cmd(resp)
|
29
|
+
dir = config.scripts_dir
|
30
|
+
script = resp.matches[0][0]
|
31
|
+
opts = resp.matches[0][1].split(" ")
|
32
|
+
Dir.chdir('/tmp')
|
33
|
+
|
34
|
+
out = String.new
|
35
|
+
err = String.new
|
36
|
+
Open3.popen3("#{dir}/#{script}", *opts) do |i, o, e, wait_thread|
|
37
|
+
o.each { |line| out << "[stdout] #{line}" }
|
38
|
+
e.each { |line| err << "[stderr] #{line}" }
|
39
|
+
end
|
40
|
+
|
41
|
+
if err != String.new
|
42
|
+
out << "\n\n#{err}"
|
43
|
+
end
|
44
|
+
|
45
|
+
# Scrub Unicode to ASCII
|
46
|
+
encoding_options = {
|
47
|
+
:invalid => :replace, # Replace invalid byte sequences
|
48
|
+
:undef => :replace, # Replace anything not defined in ASCII
|
49
|
+
:replace => '' # Use a blank for those replacements
|
50
|
+
}
|
51
|
+
ascii_out = out.encode(Encoding.find('ASCII'), encoding_options)
|
52
|
+
|
53
|
+
ascii_out.split("\n").each_slice(50) do |slice|
|
54
|
+
resp.reply code_blockify(slice.join("\n"))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def code_blockify(text)
|
59
|
+
"```\n" + text + "\n```"
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
Lita.register_handler(Cmd)
|
65
|
+
end
|
66
|
+
end
|
data/lita-cmd.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = "lita-cmd"
|
3
|
+
spec.version = "0.1.0"
|
4
|
+
spec.authors = ["Devon Finninger"]
|
5
|
+
spec.email = ["devon.finninger@peopleadmin.com"]
|
6
|
+
spec.description = "Run commands from Lita"
|
7
|
+
spec.summary = "Run commands from Lita"
|
8
|
+
spec.homepage = "https://github.com/dfinninger/lita-cmd"
|
9
|
+
spec.license = "MIT"
|
10
|
+
spec.metadata = { "lita_plugin_type" => "handler" }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ["lib"]
|
16
|
+
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.3"
|
18
|
+
|
19
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
20
|
+
spec.add_development_dependency "pry-byebug"
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rack-test"
|
23
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
24
|
+
end
|
data/locales/en.yml
ADDED
data/spec/spec_helper.rb
ADDED
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-cmd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Devon Finninger
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry-byebug
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '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'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack-test
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.0.0
|
97
|
+
description: Run commands from Lita
|
98
|
+
email:
|
99
|
+
- devon.finninger@peopleadmin.com
|
100
|
+
executables: []
|
101
|
+
extensions: []
|
102
|
+
extra_rdoc_files: []
|
103
|
+
files:
|
104
|
+
- ".gitignore"
|
105
|
+
- ".ruby-version"
|
106
|
+
- Gemfile
|
107
|
+
- README.md
|
108
|
+
- Rakefile
|
109
|
+
- lib/lita-cmd.rb
|
110
|
+
- lib/lita/handlers/cmd.rb
|
111
|
+
- lita-cmd.gemspec
|
112
|
+
- locales/en.yml
|
113
|
+
- spec/lita/handlers/cmd_spec.rb
|
114
|
+
- spec/spec_helper.rb
|
115
|
+
- templates/.gitkeep
|
116
|
+
homepage: https://github.com/dfinninger/lita-cmd
|
117
|
+
licenses:
|
118
|
+
- MIT
|
119
|
+
metadata:
|
120
|
+
lita_plugin_type: handler
|
121
|
+
post_install_message:
|
122
|
+
rdoc_options: []
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: '0'
|
130
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
requirements: []
|
136
|
+
rubyforge_project:
|
137
|
+
rubygems_version: 2.4.3
|
138
|
+
signing_key:
|
139
|
+
specification_version: 4
|
140
|
+
summary: Run commands from Lita
|
141
|
+
test_files:
|
142
|
+
- spec/lita/handlers/cmd_spec.rb
|
143
|
+
- spec/spec_helper.rb
|