elelem-tools 0.1.1 → 0.3.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/.github/workflows/release.yml +61 -0
- data/.release-please-manifest.json +3 -0
- data/.rspec +1 -0
- data/.rubocop.yml +62 -0
- data/CHANGELOG.md +27 -0
- data/Rakefile +5 -1
- data/lib/elelem/tools/compact.rb +8 -6
- data/lib/elelem/tools/confirm.rb +11 -0
- data/lib/elelem/tools/edit.rb +17 -11
- data/lib/elelem/tools/eval.rb +15 -14
- data/lib/elelem/tools/exec.rb +50 -0
- data/lib/elelem/tools/fork.rb +9 -0
- data/lib/elelem/tools/git.rb +14 -10
- data/lib/elelem/tools/glob.rb +14 -9
- data/lib/elelem/tools/grep.rb +22 -17
- data/lib/elelem/tools/init.rb +22 -20
- data/lib/elelem/tools/interview.rb +11 -10
- data/lib/elelem/tools/list.rb +11 -10
- data/lib/elelem/tools/permissions.json +7 -0
- data/lib/elelem/tools/permissions.rb +75 -0
- data/lib/elelem/tools/shell.rb +19 -17
- data/lib/elelem/tools/task.rb +10 -9
- data/lib/elelem/tools/verify.rb +43 -37
- data/lib/elelem/tools/version.rb +1 -1
- data/lib/elelem/tools.rb +5 -0
- data/release-please-config.json +13 -0
- data/spec/elelem/tools/arguments_spec.rb +62 -0
- data/spec/elelem/tools/edit_spec.rb +40 -0
- data/spec/elelem/tools/fallback_spec.rb +53 -0
- data/spec/elelem/tools/git_spec.rb +35 -0
- data/spec/elelem/tools/permissions_spec.rb +181 -0
- data/spec/elelem/tools/verify_spec.rb +36 -0
- data/spec/spec_helper.rb +13 -0
- data/spec/support/session.rb +11 -0
- metadata +47 -7
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe "the verify tool" do
|
|
4
|
+
around { |example| Dir.mktmpdir { |dir| Dir.chdir(dir) { example.run } } }
|
|
5
|
+
|
|
6
|
+
it "fails when a check fails" do
|
|
7
|
+
File.write("bad.rb", "def oops")
|
|
8
|
+
result = run_tool("verify", { "path" => "bad.rb" })
|
|
9
|
+
|
|
10
|
+
expect(result).not_to be_ok
|
|
11
|
+
expect(result[:error]).to include(result[:exit_status].to_s)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "checks a written file once, in the write's own result" do
|
|
15
|
+
checks = []
|
|
16
|
+
session.toolbox.before("execute") { |args| checks << args["command"] }
|
|
17
|
+
result = run_tool("write", { "path" => "bad.rb", "content" => "def oops" })
|
|
18
|
+
|
|
19
|
+
expect(result[:verify]).to include(command: "ruby -c bad.rb", ok: false)
|
|
20
|
+
expect(checks).to eq(["ruby -c bad.rb"])
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "passes when every check passes" do
|
|
24
|
+
File.write("good.rb", "1")
|
|
25
|
+
|
|
26
|
+
expect(run_tool("verify", { "path" => "good.rb" })[:verified]).to eq(["ruby -c good.rb"])
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "passes the path to the shell as one word" do
|
|
30
|
+
path = "a b; touch pwned.rb"
|
|
31
|
+
File.write(path, "1")
|
|
32
|
+
|
|
33
|
+
expect(run_tool("verify", { "path" => path })).to be_ok
|
|
34
|
+
expect(File).not_to exist("pwned.rb")
|
|
35
|
+
end
|
|
36
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "../lib/elelem/tools"
|
|
4
|
+
require_relative "support/session"
|
|
5
|
+
|
|
6
|
+
RSpec.configure do |config|
|
|
7
|
+
config.disable_monkey_patching!
|
|
8
|
+
config.include SessionHelper
|
|
9
|
+
|
|
10
|
+
config.expect_with :rspec do |c|
|
|
11
|
+
c.syntax = :expect
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SessionHelper
|
|
4
|
+
def session
|
|
5
|
+
@session ||= Elelem::Config.build_session("demo", input: Elelem::NullInput.new, output: Elelem::NullOutput.new)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def run_tool(name, args)
|
|
9
|
+
session.toolbox.run(name, args)
|
|
10
|
+
end
|
|
11
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: elelem-tools
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mo khan
|
|
@@ -11,18 +11,38 @@ date: 1980-01-02 00:00:00.000000000 Z
|
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: elelem
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 0.13.1
|
|
19
|
+
- - "<"
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '1'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
requirements:
|
|
26
|
+
- - ">="
|
|
27
|
+
- !ruby/object:Gem::Version
|
|
28
|
+
version: 0.13.1
|
|
29
|
+
- - "<"
|
|
30
|
+
- !ruby/object:Gem::Version
|
|
31
|
+
version: '1'
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: json
|
|
14
34
|
requirement: !ruby/object:Gem::Requirement
|
|
15
35
|
requirements:
|
|
16
36
|
- - "~>"
|
|
17
37
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: '0
|
|
38
|
+
version: '3.0'
|
|
19
39
|
type: :runtime
|
|
20
40
|
prerelease: false
|
|
21
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
42
|
requirements:
|
|
23
43
|
- - "~>"
|
|
24
44
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: '0
|
|
45
|
+
version: '3.0'
|
|
26
46
|
- !ruby/object:Gem::Dependency
|
|
27
47
|
name: pathname
|
|
28
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,29 +78,49 @@ executables: []
|
|
|
58
78
|
extensions: []
|
|
59
79
|
extra_rdoc_files: []
|
|
60
80
|
files:
|
|
81
|
+
- ".github/workflows/release.yml"
|
|
82
|
+
- ".release-please-manifest.json"
|
|
83
|
+
- ".rspec"
|
|
84
|
+
- ".rubocop.yml"
|
|
85
|
+
- CHANGELOG.md
|
|
61
86
|
- LICENSE.txt
|
|
62
87
|
- Rakefile
|
|
63
88
|
- lib/elelem/tools.rb
|
|
64
89
|
- lib/elelem/tools/compact.rb
|
|
90
|
+
- lib/elelem/tools/confirm.rb
|
|
65
91
|
- lib/elelem/tools/edit.rb
|
|
66
92
|
- lib/elelem/tools/eval.rb
|
|
93
|
+
- lib/elelem/tools/exec.rb
|
|
94
|
+
- lib/elelem/tools/fork.rb
|
|
67
95
|
- lib/elelem/tools/git.rb
|
|
68
96
|
- lib/elelem/tools/glob.rb
|
|
69
97
|
- lib/elelem/tools/grep.rb
|
|
70
98
|
- lib/elelem/tools/init.rb
|
|
71
99
|
- lib/elelem/tools/interview.rb
|
|
72
100
|
- lib/elelem/tools/list.rb
|
|
101
|
+
- lib/elelem/tools/permissions.json
|
|
102
|
+
- lib/elelem/tools/permissions.rb
|
|
73
103
|
- lib/elelem/tools/shell.rb
|
|
74
104
|
- lib/elelem/tools/task.rb
|
|
75
105
|
- lib/elelem/tools/verify.rb
|
|
76
106
|
- lib/elelem/tools/version.rb
|
|
77
|
-
|
|
107
|
+
- release-please-config.json
|
|
108
|
+
- spec/elelem/tools/arguments_spec.rb
|
|
109
|
+
- spec/elelem/tools/edit_spec.rb
|
|
110
|
+
- spec/elelem/tools/fallback_spec.rb
|
|
111
|
+
- spec/elelem/tools/git_spec.rb
|
|
112
|
+
- spec/elelem/tools/permissions_spec.rb
|
|
113
|
+
- spec/elelem/tools/verify_spec.rb
|
|
114
|
+
- spec/spec_helper.rb
|
|
115
|
+
- spec/support/session.rb
|
|
116
|
+
homepage: https://elelem.sh
|
|
78
117
|
licenses:
|
|
79
118
|
- MIT
|
|
80
119
|
metadata:
|
|
81
120
|
allowed_push_host: https://rubygems.org
|
|
82
|
-
homepage_uri: https://
|
|
83
|
-
source_code_uri: https://
|
|
121
|
+
homepage_uri: https://elelem.sh
|
|
122
|
+
source_code_uri: https://github.com/elelem-sh/tools
|
|
123
|
+
rubygems_mfa_required: 'true'
|
|
84
124
|
rdoc_options: []
|
|
85
125
|
require_paths:
|
|
86
126
|
- lib
|
|
@@ -95,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
95
135
|
- !ruby/object:Gem::Version
|
|
96
136
|
version: '0'
|
|
97
137
|
requirements: []
|
|
98
|
-
rubygems_version: 4.0.
|
|
138
|
+
rubygems_version: 4.0.6
|
|
99
139
|
specification_version: 4
|
|
100
140
|
summary: Optional tools for elelem.
|
|
101
141
|
test_files: []
|