playwright-cli 0.1.1 → 0.1.3
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.lock +3 -1
- data/lib/assets/templates/expanded_script_template.erb +33 -0
- data/lib/assets/templates/{new_script.erb → simple_script_template.erb} +2 -2
- data/lib/assets/templates/version_subcommand_template.erb +22 -0
- data/lib/playwright/cli.rb +11 -2
- data/lib/playwright/cli/commands.rb +6 -4
- data/lib/playwright/cli/commands/destroy/command.rb +2 -14
- data/lib/playwright/cli/commands/edit.rb +24 -0
- data/lib/playwright/cli/commands/edit/command.rb +27 -0
- data/lib/playwright/cli/commands/generate.rb +3 -2
- data/lib/playwright/cli/commands/generate/command.rb +8 -61
- data/lib/playwright/cli/configuration.rb +17 -0
- data/lib/playwright/cli/template.rb +25 -10
- data/lib/playwright/cli/utils.rb +1 -1
- data/lib/playwright/cli/utils/ask.rb +2 -1
- data/lib/playwright/cli/utils/file_manager.rb +212 -0
- data/lib/playwright/cli/version.rb +1 -1
- data/playwright-cli.gemspec +1 -0
- metadata +23 -4
- data/lib/playwright/cli/utils/script_files.rb +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c70812c6e97a5e0351036b1f32cc533e7833d59ad46c32efb16b6cdc8e167023
|
4
|
+
data.tar.gz: c39ef6a202fed3feeb7015d1f0adbfdfe29fd42f41a4493555e4e67b28f2d5d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bbffdc6bdb10897709564e578ea6b9312dd2a2c0f8a468a5c80b9a7d0e98624c5a5fcc72bfef381ca55492d3bbcfa4b54a24bce7e6e8d50d0bb606ba3c22ac36
|
7
|
+
data.tar.gz: 2c93bab7b6fc00a73d48fc5f3eae2f332ae8ec1cd9468bc8aa9998269381d6a343fbe7d6287156e982d2e4671c6e57e956acbb9a6b4cbf38fa7db3aee787d4e9
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
playwright-cli (0.1.
|
4
|
+
playwright-cli (0.1.3)
|
5
5
|
colorize (~> 0.1)
|
6
6
|
hanami-cli (~> 0.1)
|
7
7
|
|
@@ -18,6 +18,7 @@ GEM
|
|
18
18
|
hanami-utils (1.1.2)
|
19
19
|
concurrent-ruby (~> 1.0)
|
20
20
|
transproc (~> 1.0)
|
21
|
+
memfs (1.0.0)
|
21
22
|
method_source (0.9.0)
|
22
23
|
pry (0.9.12.6)
|
23
24
|
coderay (~> 1.0)
|
@@ -47,6 +48,7 @@ PLATFORMS
|
|
47
48
|
|
48
49
|
DEPENDENCIES
|
49
50
|
bundler (~> 1.16)
|
51
|
+
memfs (~> 1.0)
|
50
52
|
playwright-cli!
|
51
53
|
pry (~> 0.9.0)
|
52
54
|
pry-nav (~> 0.2.4)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'playwright/cli'
|
4
|
+
require_relative 'lib/version'
|
5
|
+
|
6
|
+
module <%= klass_name %>
|
7
|
+
module CLI
|
8
|
+
module Commands
|
9
|
+
extend Playwright::CLI::Registry
|
10
|
+
|
11
|
+
class Greet < Playwright::CLI::Command
|
12
|
+
desc "Says a greeting to the name given. This is an example."
|
13
|
+
|
14
|
+
argument :name, required: true, desc: 'Whom shall I greet?'
|
15
|
+
|
16
|
+
example [
|
17
|
+
"\"Johnny Boy\" #=> Why, hello Johnny Boy!"
|
18
|
+
]
|
19
|
+
|
20
|
+
def call(name:, **)
|
21
|
+
puts "Why, hello #{name}!"
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
register 'greet', Greet
|
27
|
+
register 'version', Version, aliases: ['v', '-v', '--version']
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
Playwright::CLI.new(<%= klass_name %>::CLI::Commands).call
|
@@ -7,7 +7,7 @@ module <%= klass_name %>
|
|
7
7
|
module Commands
|
8
8
|
extend Playwright::CLI::Registry
|
9
9
|
|
10
|
-
class
|
10
|
+
class Root < Playwright::CLI::Command
|
11
11
|
desc "Says a greeting to the name given. This is an example."
|
12
12
|
|
13
13
|
argument :name, required: true, desc: 'Whom shall I greet?'
|
@@ -22,7 +22,7 @@ module <%= klass_name %>
|
|
22
22
|
|
23
23
|
end
|
24
24
|
|
25
|
-
|
25
|
+
register_root Root
|
26
26
|
|
27
27
|
end
|
28
28
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module <%= klass_name %>
|
2
|
+
module CLI
|
3
|
+
|
4
|
+
VERSION = "0.0.1"
|
5
|
+
|
6
|
+
module Commands
|
7
|
+
extend Playwright::CLI::Registry
|
8
|
+
|
9
|
+
class Version < Playwright::CLI::Command
|
10
|
+
desc "Responds with the version number."
|
11
|
+
|
12
|
+
example ["#=> #{VERSION}"]
|
13
|
+
|
14
|
+
def call(**)
|
15
|
+
puts VERSION
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/playwright/cli.rb
CHANGED
@@ -13,19 +13,28 @@ module Playwright
|
|
13
13
|
PLAYS_BIN_PATH = File.join(PLAYS_PATH, 'bin')
|
14
14
|
TEMPLATES_PATH = File.join(ROOT_PATH, 'lib', 'assets', 'templates')
|
15
15
|
|
16
|
+
require "playwright/cli/configuration"
|
16
17
|
require "playwright/cli/utils"
|
17
18
|
require "playwright/cli/commands"
|
18
19
|
require "playwright/cli/registry"
|
19
20
|
require "playwright/cli/template"
|
20
21
|
require "playwright/cli/version"
|
21
22
|
|
23
|
+
def self.configuration
|
24
|
+
@configuration ||= Configuration.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.configure
|
28
|
+
yield(configuration)
|
29
|
+
end
|
30
|
+
|
22
31
|
def self.call(*args)
|
23
32
|
new(Commands).call(*args)
|
24
33
|
end
|
25
|
-
|
34
|
+
|
26
35
|
def call(arguments: ARGV, out: $stdout)
|
27
36
|
result = commands.get(arguments)
|
28
|
-
|
37
|
+
|
29
38
|
if !result.found? && commands.has_root?
|
30
39
|
result = commands.get_root(arguments)
|
31
40
|
command, args = parse(result, out)
|
@@ -2,13 +2,15 @@ module Playwright
|
|
2
2
|
class CLI < Hanami::CLI
|
3
3
|
module Commands
|
4
4
|
extend Hanami::CLI::Registry
|
5
|
-
require 'playwright/cli/commands/version'
|
6
|
-
require 'playwright/cli/commands/generate'
|
7
5
|
require 'playwright/cli/commands/destroy'
|
6
|
+
require 'playwright/cli/commands/edit'
|
7
|
+
require 'playwright/cli/commands/generate'
|
8
|
+
require 'playwright/cli/commands/version'
|
8
9
|
|
9
|
-
register "version", Version, aliases: ['v', '-v', '--version']
|
10
|
-
register "generate", Generate, aliases: ['g', 'new']
|
11
10
|
register "destroy", Destroy, aliases: ['delete', 'd']
|
11
|
+
register "edit", Edit, aliases: ['e']
|
12
|
+
register "generate", Generate, aliases: ['g', 'new']
|
13
|
+
register "version", Version, aliases: ['v', '-v', '--version']
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -6,7 +6,7 @@ module Playwright
|
|
6
6
|
class Destroy < Hanami::CLI::Command
|
7
7
|
class Command
|
8
8
|
include Utils::Display
|
9
|
-
include Utils::
|
9
|
+
include Utils::FileManager
|
10
10
|
|
11
11
|
TEMPLATE_FILE = 'new_script.erb'.freeze
|
12
12
|
PATH_BIN_DIR = File.join('/', 'usr', 'local', 'bin').freeze
|
@@ -21,19 +21,7 @@ module Playwright
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def run
|
24
|
-
|
25
|
-
destroy_script
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def validate!
|
31
|
-
script_path_and_file?
|
32
|
-
end
|
33
|
-
|
34
|
-
def destroy_script
|
35
|
-
delete_playwright_script
|
36
|
-
display.color_print "Playwright script \"#{@name}\" destroyed!"
|
24
|
+
file_manager.uninstall_script @name
|
37
25
|
end
|
38
26
|
|
39
27
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'playwright/cli/commands/edit/command'
|
2
|
+
|
3
|
+
module Playwright
|
4
|
+
class CLI < Hanami::CLI
|
5
|
+
module Commands
|
6
|
+
extend Hanami::CLI::Registry
|
7
|
+
|
8
|
+
class Edit < Hanami::CLI::Command
|
9
|
+
desc "Opens your editor to playwright command."
|
10
|
+
|
11
|
+
argument :name, required: true, desc: 'Script name'
|
12
|
+
|
13
|
+
example [
|
14
|
+
"my-script # opens your editor to my-script"
|
15
|
+
]
|
16
|
+
|
17
|
+
def call(name: nil, **)
|
18
|
+
Command.run(name)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Playwright
|
2
|
+
class CLI < Hanami::CLI
|
3
|
+
module Commands
|
4
|
+
extend Hanami::CLI::Registry
|
5
|
+
|
6
|
+
class Edit < Hanami::CLI::Command
|
7
|
+
class Command
|
8
|
+
include Utils::Display
|
9
|
+
include Utils::FileManager
|
10
|
+
|
11
|
+
def self.run(name)
|
12
|
+
new(name).run
|
13
|
+
end
|
14
|
+
|
15
|
+
def initialize(name)
|
16
|
+
@name = name
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
file_manager.open_editor script_name: @name
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -9,13 +9,14 @@ module Playwright
|
|
9
9
|
desc "Builds a template for a new playwright command."
|
10
10
|
|
11
11
|
argument :name, required: true, desc: 'Script name'
|
12
|
+
option :type, default: 'simple', values: %w[ expanded simple ]
|
12
13
|
|
13
14
|
example [
|
14
15
|
"my-new-script\n# script will be called with my-new-script\n# class will be called MyNewScript"
|
15
16
|
]
|
16
17
|
|
17
|
-
def call(name
|
18
|
-
Command.run(name)
|
18
|
+
def call(name:, type:, **)
|
19
|
+
Command.run(name, type.to_sym)
|
19
20
|
end
|
20
21
|
end
|
21
22
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'playwright/cli/template'
|
2
|
+
|
1
3
|
module Playwright
|
2
4
|
class CLI < Hanami::CLI
|
3
5
|
module Commands
|
@@ -7,77 +9,22 @@ module Playwright
|
|
7
9
|
class Command
|
8
10
|
include Utils::Display
|
9
11
|
include Utils::Ask
|
10
|
-
include Utils::
|
12
|
+
include Utils::FileManager
|
11
13
|
|
12
14
|
TEMPLATE_FILE = 'new_script.erb'.freeze
|
13
15
|
PATH_BIN_DIR = File.join('/', 'usr', 'local', 'bin').freeze
|
14
16
|
|
15
|
-
def self.run(name)
|
16
|
-
new(name).run
|
17
|
+
def self.run(name, type)
|
18
|
+
new(name, type).run
|
17
19
|
end
|
18
20
|
|
19
|
-
def initialize(name)
|
20
|
-
@template = Playwright::CLI::Template.new(file: TEMPLATE_FILE, script_name: name)
|
21
|
+
def initialize(name, type)
|
21
22
|
@name = name
|
23
|
+
@type = type
|
22
24
|
end
|
23
25
|
|
24
26
|
def run
|
25
|
-
|
26
|
-
create_script
|
27
|
-
set_permissions
|
28
|
-
symlink_into_path
|
29
|
-
open_editor
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
private
|
34
|
-
|
35
|
-
def valid?
|
36
|
-
validate!
|
37
|
-
yield
|
38
|
-
end
|
39
|
-
|
40
|
-
def validate!
|
41
|
-
if symlink_path_and_file? && !script_path_and_file?
|
42
|
-
display.error "There is already a script in your #{PATH_BIN_DIR} with that name!"
|
43
|
-
elsif script_path_and_file?
|
44
|
-
if ask.boolean_question "This playwright script already exists! Overwrite it?"
|
45
|
-
delete_playwright_script
|
46
|
-
else
|
47
|
-
display.abort "Aborting Operation."
|
48
|
-
end
|
49
|
-
end
|
50
|
-
true
|
51
|
-
end
|
52
|
-
|
53
|
-
def create_script
|
54
|
-
if script_path_and_file?
|
55
|
-
display.error "This script already exists!"
|
56
|
-
end
|
57
|
-
FileUtils.mkdir_p(Playwright::CLI::PLAYS_BIN_PATH)
|
58
|
-
FileUtils.touch(script_path_and_file)
|
59
|
-
File.write(script_path_and_file, @template.render)
|
60
|
-
display.color_print "New File Created: #{script_path_and_file}"
|
61
|
-
end
|
62
|
-
|
63
|
-
def set_permissions
|
64
|
-
FileUtils.chmod "u+x", script_path_and_file
|
65
|
-
display.color_print "Executable Permissions Set!"
|
66
|
-
end
|
67
|
-
|
68
|
-
def symlink_into_path
|
69
|
-
delete_symlink_path_file
|
70
|
-
FileUtils.symlink(script_path_and_file, symlink_path_and_file)
|
71
|
-
display.color_print "Symlink Created!"
|
72
|
-
end
|
73
|
-
|
74
|
-
def open_editor
|
75
|
-
`$EDITOR #{script_path_and_file}`
|
76
|
-
if $?.success?
|
77
|
-
display.color_print "Opening script in your editor..."
|
78
|
-
else
|
79
|
-
display.error "Could not open Editor!"
|
80
|
-
end
|
27
|
+
file_manager.install_script script_name: @name, type: @type
|
81
28
|
end
|
82
29
|
|
83
30
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Playwright
|
2
|
+
class CLI
|
3
|
+
class Configuration
|
4
|
+
attr_accessor :home_dir,
|
5
|
+
:executable_path_dir
|
6
|
+
|
7
|
+
DEFAULT_HOME = ENV['HOME']
|
8
|
+
DEFAULT_EXECUTABLE_PATH_DIR = File.join('/', 'usr', 'local', 'bin')
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
@home_dir = DEFAULT_HOME
|
12
|
+
@executable_path_dir = DEFAULT_EXECUTABLE_PATH_DIR
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,24 +1,39 @@
|
|
1
|
+
require 'playwright/cli/utils/file_manager'
|
2
|
+
|
1
3
|
module Playwright
|
2
4
|
class CLI < Hanami::CLI
|
3
5
|
class Template
|
4
6
|
|
5
|
-
attr_reader :script_name
|
7
|
+
attr_reader :script_name, :out_file, :type
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
SIMPLE_TYPE = :simple
|
10
|
+
SIMPLE_TEMPLATE = 'simple_script_template.erb'
|
11
|
+
EXPANDED_TYPE = :expanded
|
12
|
+
EXPANDED_TEMPLATE = 'expanded_script_template.erb'
|
13
|
+
SUBCOMMAND_TYPE = :subcommand
|
14
|
+
SUBCOMMAND_TEMPLATE = 'version_subcommand_template.erb'
|
11
15
|
|
12
|
-
|
13
|
-
|
16
|
+
TEMPLATE_MAP = {
|
17
|
+
SIMPLE_TYPE => SIMPLE_TEMPLATE,
|
18
|
+
EXPANDED_TYPE => EXPANDED_TEMPLATE,
|
19
|
+
SUBCOMMAND_TYPE => SUBCOMMAND_TEMPLATE
|
20
|
+
}
|
21
|
+
|
22
|
+
def initialize(name:, out_file:, type: SIMPLE_TYPE, klass_name: nil)
|
23
|
+
@script_name = name
|
24
|
+
@out_file = out_file
|
25
|
+
@template_file = File.join(Playwright::CLI::TEMPLATES_PATH, TEMPLATE_MAP[type])
|
26
|
+
@klass_name = klass_name
|
14
27
|
end
|
15
28
|
|
16
|
-
def
|
17
|
-
|
29
|
+
def klass_name
|
30
|
+
@klass_name || @script_name.gsub('.rb', '').split(/[A-Z\-\_\/]/).map(&:capitalize).join
|
18
31
|
end
|
19
32
|
|
20
33
|
def render
|
21
|
-
|
34
|
+
contents = File.read(@template_file)
|
35
|
+
text = ERB.new(contents).result(binding)
|
36
|
+
File.write(out_file, text)
|
22
37
|
end
|
23
38
|
|
24
39
|
end
|
data/lib/playwright/cli/utils.rb
CHANGED
@@ -18,7 +18,8 @@ module Playwright
|
|
18
18
|
|
19
19
|
def boolean_question question
|
20
20
|
display.color_print "#{question} [yn]", color: DEFAULT_COLOR
|
21
|
-
response =
|
21
|
+
response = $stdin.gets
|
22
|
+
sanitized_response = response.chomp.strip.downcase.to_sym if response && response.length > 0
|
22
23
|
boolean_response_map[response]
|
23
24
|
end
|
24
25
|
|
@@ -0,0 +1,212 @@
|
|
1
|
+
require 'playwright/cli/utils/ask'
|
2
|
+
require 'playwright/cli/utils/display'
|
3
|
+
require 'playwright/cli/configuration'
|
4
|
+
require 'playwright/cli/template'
|
5
|
+
|
6
|
+
module Playwright
|
7
|
+
class CLI < Hanami::CLI
|
8
|
+
module Utils
|
9
|
+
module FileManager
|
10
|
+
|
11
|
+
def file_manager
|
12
|
+
@file_manager ||= FileManager.new
|
13
|
+
end
|
14
|
+
|
15
|
+
class FileManager
|
16
|
+
include Display
|
17
|
+
include Ask
|
18
|
+
|
19
|
+
attr_reader :script_name, :type
|
20
|
+
|
21
|
+
def initialize script_name: nil, type: nil
|
22
|
+
@script_name = script_name
|
23
|
+
@type = type
|
24
|
+
end
|
25
|
+
|
26
|
+
def install_script script_name:, type:
|
27
|
+
@script_name = script_name
|
28
|
+
@type = type
|
29
|
+
create_script_files
|
30
|
+
set_permissions
|
31
|
+
write_template
|
32
|
+
create_symlink
|
33
|
+
open_editor
|
34
|
+
end
|
35
|
+
|
36
|
+
def uninstall_script script_name
|
37
|
+
@script_name = script_name
|
38
|
+
delete_script_files
|
39
|
+
end
|
40
|
+
|
41
|
+
def open_editor script_name: nil
|
42
|
+
@script_name ||= script_name
|
43
|
+
%x[$EDITOR #{root_dir}]
|
44
|
+
if $?.success?
|
45
|
+
display.color_print "Opening `#{@script_name}` in your editor..."
|
46
|
+
else
|
47
|
+
display.error "Could not open Editor!"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def script_name_rb
|
52
|
+
"#{script_name}.rb"
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def self.playwright_parent_dir
|
58
|
+
Playwright::CLI.configuration.home_dir
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.executable_path_dir
|
62
|
+
Playwright::CLI.configuration.executable_path_dir
|
63
|
+
end
|
64
|
+
|
65
|
+
def self.dot_playwright_dir
|
66
|
+
File.join playwright_parent_dir, '.playwright'
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.plays_dir
|
70
|
+
File.join dot_playwright_dir, 'plays'
|
71
|
+
end
|
72
|
+
|
73
|
+
def self.config_file
|
74
|
+
File.join dot_playwright_dir, 'config.rb'
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.create_file_structure
|
78
|
+
FileUtils.mkdir_p(plays_dir)
|
79
|
+
FileUtils.touch(config_file)
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.path
|
83
|
+
ENV['PATH'].split(':')
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.all_commands_in_path
|
87
|
+
@all_commands_in_path ||= path.map do |path_dir|
|
88
|
+
Dir["#{path_dir}/*"].map { |executable| executable.split('/').last }
|
89
|
+
end.flatten
|
90
|
+
end
|
91
|
+
# ==============================================================================
|
92
|
+
# LAZY ATTRIBUTES
|
93
|
+
# ==============================================================================
|
94
|
+
|
95
|
+
def template
|
96
|
+
@template ||= Template.new(name: script_name_rb, out_file: executable_file, type: type)
|
97
|
+
end
|
98
|
+
|
99
|
+
# ==============================================================================
|
100
|
+
# PATHS & PATH PREDICATES
|
101
|
+
# ==============================================================================
|
102
|
+
|
103
|
+
def root_dir
|
104
|
+
File.join self.class.plays_dir, script_name
|
105
|
+
end
|
106
|
+
|
107
|
+
def root_dir_exists?
|
108
|
+
File.exists? root_dir
|
109
|
+
end
|
110
|
+
|
111
|
+
def executable_file
|
112
|
+
File.join root_dir, script_name_rb
|
113
|
+
end
|
114
|
+
|
115
|
+
def executable_file_exists?
|
116
|
+
File.exists? executable_file
|
117
|
+
end
|
118
|
+
|
119
|
+
def symlink_file
|
120
|
+
File.join self.class.executable_path_dir, script_name
|
121
|
+
end
|
122
|
+
|
123
|
+
def symlink_file_exists?
|
124
|
+
File.symlink? symlink_file
|
125
|
+
end
|
126
|
+
|
127
|
+
def script_lib_dir
|
128
|
+
File.join root_dir, 'lib'
|
129
|
+
end
|
130
|
+
|
131
|
+
def version_subcommand_file
|
132
|
+
File.join script_lib_dir, 'version.rb'
|
133
|
+
end
|
134
|
+
|
135
|
+
# ==============================================================================
|
136
|
+
# CREATE METHODS
|
137
|
+
# ==============================================================================
|
138
|
+
|
139
|
+
def create_script_files
|
140
|
+
validate_before_create_script_files!
|
141
|
+
self.class.create_file_structure
|
142
|
+
FileUtils.mkdir_p root_dir
|
143
|
+
display.color_print "New Directory Created: #{root_dir}"
|
144
|
+
FileUtils.touch executable_file
|
145
|
+
display.color_print "New File Created: #{executable_file}"
|
146
|
+
create_expanded_files if type == :expanded
|
147
|
+
end
|
148
|
+
|
149
|
+
def create_expanded_files
|
150
|
+
FileUtils.mkdir_p script_lib_dir
|
151
|
+
FileUtils.touch version_subcommand_file
|
152
|
+
end
|
153
|
+
|
154
|
+
def set_permissions
|
155
|
+
FileUtils.chmod "u+x", executable_file
|
156
|
+
display.color_print "Executable Permissions Set: #{executable_file}"
|
157
|
+
end
|
158
|
+
|
159
|
+
def write_template
|
160
|
+
template.render
|
161
|
+
if type == Template::EXPANDED_TYPE
|
162
|
+
new_template = Template.new(
|
163
|
+
name: 'version.rb',
|
164
|
+
out_file: version_subcommand_file,
|
165
|
+
type: Template::SUBCOMMAND_TYPE,
|
166
|
+
klass_name: template.klass_name
|
167
|
+
)
|
168
|
+
new_template.render
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
def create_symlink
|
173
|
+
FileUtils.symlink(executable_file, symlink_file)
|
174
|
+
display.color_print "New Symlink Created: #{symlink_file} from #{executable_file}"
|
175
|
+
end
|
176
|
+
|
177
|
+
def validate_before_create_script_files!
|
178
|
+
if self.class.all_commands_in_path.include?(script_name)
|
179
|
+
display.error "There is already a script in your $PATH with that name!"
|
180
|
+
elsif executable_file_exists?
|
181
|
+
if ask.boolean_question "This playwright script already exists! Overwrite it?"
|
182
|
+
delete_playwright_script
|
183
|
+
else
|
184
|
+
display.abort "Aborting Operation."
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
# ==============================================================================
|
190
|
+
# DELETE METHODS
|
191
|
+
# ==============================================================================
|
192
|
+
|
193
|
+
def delete_script_files
|
194
|
+
validate_before_delete_script_files!
|
195
|
+
FileUtils.rm_rf root_dir
|
196
|
+
FileUtils.rm symlink_file
|
197
|
+
display.color_print "Playwright script '#{script_name}' destroyed!"
|
198
|
+
end
|
199
|
+
|
200
|
+
def validate_before_delete_script_files!
|
201
|
+
if symlink_file_exists? && !root_dir_exists?
|
202
|
+
display.error "The script named '#{script_name}' is not a playright script!"
|
203
|
+
elsif !root_dir_exists?
|
204
|
+
display.error "No play with that name exists!"
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
end
|
data/playwright-cli.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
37
|
spec.add_development_dependency "pry", "~> 0.9.0"
|
38
38
|
spec.add_development_dependency "pry-nav", "~> 0.2.4"
|
39
|
+
spec.add_development_dependency "memfs", "~> 1.0"
|
39
40
|
|
40
41
|
spec.add_runtime_dependency "hanami-cli", "~>0.1"
|
41
42
|
spec.add_runtime_dependency "colorize", "~>0.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playwright-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Gregory
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.2.4
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: memfs
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: hanami-cli
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,21 +141,26 @@ files:
|
|
127
141
|
- bin/console
|
128
142
|
- bin/setup
|
129
143
|
- exe/playwright
|
130
|
-
- lib/assets/templates/
|
144
|
+
- lib/assets/templates/expanded_script_template.erb
|
145
|
+
- lib/assets/templates/simple_script_template.erb
|
146
|
+
- lib/assets/templates/version_subcommand_template.erb
|
131
147
|
- lib/playwright/cli.rb
|
132
148
|
- lib/playwright/cli/command.rb
|
133
149
|
- lib/playwright/cli/commands.rb
|
134
150
|
- lib/playwright/cli/commands/destroy.rb
|
135
151
|
- lib/playwright/cli/commands/destroy/command.rb
|
152
|
+
- lib/playwright/cli/commands/edit.rb
|
153
|
+
- lib/playwright/cli/commands/edit/command.rb
|
136
154
|
- lib/playwright/cli/commands/generate.rb
|
137
155
|
- lib/playwright/cli/commands/generate/command.rb
|
138
156
|
- lib/playwright/cli/commands/version.rb
|
157
|
+
- lib/playwright/cli/configuration.rb
|
139
158
|
- lib/playwright/cli/registry.rb
|
140
159
|
- lib/playwright/cli/template.rb
|
141
160
|
- lib/playwright/cli/utils.rb
|
142
161
|
- lib/playwright/cli/utils/ask.rb
|
143
162
|
- lib/playwright/cli/utils/display.rb
|
144
|
-
- lib/playwright/cli/utils/
|
163
|
+
- lib/playwright/cli/utils/file_manager.rb
|
145
164
|
- lib/playwright/cli/version.rb
|
146
165
|
- playwright-cli.gemspec
|
147
166
|
homepage: https://github.com/mgreg90/playwright-cli
|
@@ -1,40 +0,0 @@
|
|
1
|
-
module Playwright
|
2
|
-
class CLI < Hanami::CLI
|
3
|
-
module Utils
|
4
|
-
module ScriptFiles
|
5
|
-
|
6
|
-
PATH_BIN_DIR = File.join('/', 'usr', 'local', 'bin').freeze
|
7
|
-
|
8
|
-
def script_path_and_file
|
9
|
-
File.join Playwright::CLI::PLAYS_BIN_PATH, @name
|
10
|
-
end
|
11
|
-
|
12
|
-
def script_path_and_file?
|
13
|
-
File.exists? script_path_and_file
|
14
|
-
end
|
15
|
-
|
16
|
-
def symlink_path_and_file
|
17
|
-
File.join PATH_BIN_DIR, @name
|
18
|
-
end
|
19
|
-
|
20
|
-
def symlink_path_and_file?
|
21
|
-
File.exists? symlink_path_and_file
|
22
|
-
end
|
23
|
-
|
24
|
-
def delete_playwright_script
|
25
|
-
delete_script_file
|
26
|
-
delete_symlink_path_file
|
27
|
-
end
|
28
|
-
|
29
|
-
def delete_script_file
|
30
|
-
FileUtils.rm script_path_and_file if script_path_and_file?
|
31
|
-
end
|
32
|
-
|
33
|
-
def delete_symlink_path_file
|
34
|
-
FileUtils.rm symlink_path_and_file if symlink_path_and_file?
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|