class Playwright::CLI::Utils::FileManager::FileManager

Constants

CONFIG_YML
GITIGNORE

Attributes

script_name[R]
type[R]

Public Class Methods

new(script_name: nil, type: nil) click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 28
def initialize script_name: nil, type: nil
  @script_name = script_name
  @type = type
end

Private Class Methods

all_commands_in_path() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 109
def self.all_commands_in_path
  @all_commands_in_path ||= path.map do |path_dir|
    Dir["#{path_dir}/*"].map { |executable| executable.split('/').last }
  end.flatten
end
create_file_structure() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 99
def self.create_file_structure
  FileUtils.mkdir_p plays_dir
  FileUtils.touch root_config_file
  FileUtils.mkdir_p rubies_dir
end
dot_playwright_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 83
def self.dot_playwright_dir
  playwright_parent_dir.join '.playwright'
end
executable_path_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 79
def self.executable_path_dir
  Pathname.new Playwright::CLI.configuration.executable_path_dir
end
path() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 105
def self.path
  ENV['PATH'].split ':'
end
plays_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 87
def self.plays_dir
  dot_playwright_dir.join 'plays'
end
playwright_parent_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 75
def self.playwright_parent_dir
  Pathname.new Playwright::CLI.configuration.home_dir
end
root_config_file() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 91
def self.root_config_file
  dot_playwright_dir.join 'config.rb'
end
rubies_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 95
def self.rubies_dir
  dot_playwright_dir.join 'rubies'
end

Public Instance Methods

install_script(script_name:, type: @script_name = script_name) click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 33
def install_script script_name:, type:
  @script_name = script_name
  @type = type
  create_script_files
  symlink_ruby_version
  set_permissions
  write_templates
  create_symlinks
  create_config_yml
  create_gitignore
  create_readme
  git_init
  open_editor
end
list_scripts() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 66
def list_scripts
  Dir.new(self.class.plays_dir).select do |file_or_dir|
    Dir.exists?(self.class.plays_dir.join(file_or_dir)) &&
      !['..', '.'].include?(file_or_dir)
  end
end
open_editor(script_name: nil) click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 53
def open_editor script_name: nil
  @script_name ||= script_name
  os.open_editor name: @script_name, path: root_dir
end
script_name_rb() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 58
def script_name_rb
  "#{script_name.to_snake_case}.rb"
end
script_name_sh() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 62
def script_name_sh
  "#{script_name}.sh"
end
uninstall_script(script_name) click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 48
def uninstall_script script_name
  @script_name = script_name
  delete_script_files
end

Private Instance Methods

bin_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 130
def bin_dir
  root_dir.join 'bin'
end
config_yml_file() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 158
def config_yml_file
  root_dir.join 'config.yml'
end
config_yml_file_exists?() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 162
def config_yml_file_exists?
  File.exists? config_yml_file
end
create_config_yml() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 296
def create_config_yml
  File.open config_yml_file, "w+" do |file|
    file.write CONFIG_YML.to_yaml
  end
end
create_expanded_files() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 230
def create_expanded_files
  FileUtils.mkdir_p script_lib_dir
  FileUtils.touch version_subcommand_file
end
create_gitignore() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 290
def create_gitignore
  File.open root_dir.join(".gitignore"), "w+" do |file|
    file.write GITIGNORE.join("\n")
  end
end
create_readme() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 302
def create_readme
  FileUtils.touch root_dir.join("README.md")
  new_template = Template.new(
    name: script_name,
    out_file: root_dir.join("README.md"),
    type: Template::README_TYPE
  )
  new_template.render
end
create_script_files() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 208
def create_script_files
  validate_before_create_script_files!
  self.class.create_file_structure

  FileUtils.mkdir_p root_dir
  display.print "New Directory Created: #{root_dir}"

  FileUtils.mkdir_p gems_dir
  display.print "New Directory Created: #{gems_dir}"

  FileUtils.mkdir_p bin_dir
  display.print "New Directory Created: #{bin_dir}"

  FileUtils.touch root_ruby_file
  display.print "New File Created: #{root_ruby_file}"

  FileUtils.touch launch_script_file
  display.print "New File Created: #{launch_script_file}"

  create_expanded_files if type == :expanded
end
delete_script_files() click to toggle source

DELETE METHODS

# File lib/playwright/cli/utils/file_manager.rb, line 316
def delete_script_files
  validate_before_delete_script_files!
  FileUtils.rm_rf root_dir if Dir.exists? root_dir
  FileUtils.rm symlink_file if File.symlink? symlink_file
  display.print "Playwright script '#{script_name}' destroyed!"
end
gems_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 134
def gems_dir
  root_dir.join 'gems'
end
git_init() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 284
def git_init
  git = Git.init root_dir.to_s
  git.add all: true
  git.commit 'initial commit'
end
launch_script_file() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 150
def launch_script_file
  bin_dir.join script_name_sh
end
launch_script_file_exists?() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 154
def launch_script_file_exists?
  File.exists? launch_script_file
end
root_dir() click to toggle source

PATHS & PATH PREDICATES

# File lib/playwright/cli/utils/file_manager.rb, line 126
def root_dir
  self.class.plays_dir.join script_name
end
root_dir_exists?() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 138
def root_dir_exists?
  File.exists? root_dir
end
root_ruby_file() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 142
def root_ruby_file
  root_dir.join script_name_rb
end
root_ruby_file_exists?() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 146
def root_ruby_file_exists?
  File.exists? root_ruby_file
end
script_lib_dir() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 190
def script_lib_dir
  root_dir.join 'lib'
end
set_permissions() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 235
def set_permissions
  FileUtils.chmod "u+x", root_ruby_file
  display.print "Executable Permissions Set: #{root_ruby_file}"
  FileUtils.chmod "u+x", launch_script_file
  display.print "Executable Permissions Set: #{launch_script_file}"
end
template() click to toggle source

LAZY ATTRIBUTES

# File lib/playwright/cli/utils/file_manager.rb, line 118
def template
  @template ||= Template.new name: script_name, out_file: root_ruby_file, type: type
end
validate_before_create_script_files!() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 272
def validate_before_create_script_files!
  if self.class.all_commands_in_path.include? script_name
    display.error "There is already a script in your $PATH with that name!"
  elsif root_ruby_file_exists?
    if ask.boolean_question "This playwright script already exists! Overwrite it?"
      delete_script_files
    else
      display.abort "Aborting Operation."
    end
  end
end
validate_before_delete_script_files!() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 323
def validate_before_delete_script_files!
  if symlink_file_exists? && !root_dir_exists?
    display.error "The script named '#{script_name}' is not a playright script!"
  elsif !root_dir_exists?
    display.error "No play with that name exists!"
  end
end
version_subcommand_file() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 194
def version_subcommand_file
  script_lib_dir.join 'version.rb'
end
write_templates() click to toggle source
# File lib/playwright/cli/utils/file_manager.rb, line 242
def write_templates
  template.render
  if type == Template::EXPANDED_TYPE
    new_template = Template.new(
      name: 'version.rb',
      out_file: version_subcommand_file,
      type: Template::SUBCOMMAND_TYPE,
      klass_name: template.klass_name
    )
    new_template.render
  end
  launch_script_file_template = Template.new(
    name: script_name_sh,
    out_file: launch_script_file,
    type: Template::SHELL_SCRIPT_TYPE,
    values: {
      script_name: script_name
    }
  )
  launch_script_file_template.render
end