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.
@@ -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
@@ -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.1.1
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.10'
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.10'
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
- homepage: https://src.mokhan.ca/elelem/tools
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://src.mokhan.ca/elelem/tools
83
- source_code_uri: https://src.mokhan.ca/elelem/tools
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.20
138
+ rubygems_version: 4.0.6
99
139
  specification_version: 4
100
140
  summary: Optional tools for elelem.
101
141
  test_files: []