Sha256: 59ac70f8a4277e5e536aa7865dc7c83cb4da6752acb0c0896c0b5802e7c01c86

Contents?: true

Size: 1.54 KB

Versions: 8

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

module Nextgen
  module Actions::Javascript
    def add_js_packages(*packages, dev: false)
      command = yarn? ? +"yarn add" : +"npm install --fund=false --audit-false"
      command << " -D" if dev
      run_js_command "#{command} #{packages.map(&:shellescape).join(" ")}"
    end
    alias add_js_package add_js_packages

    def remove_js_packages(*packages, capture: false)
      command = yarn? ? "yarn remove" : "npm uninstall"
      run_js_command "#{command} #{packages.map(&:shellescape).join(" ")}", capture:
    end
    alias remove_js_package remove_js_packages

    def add_package_json_scripts(scripts)
      scripts.each do |name, script|
        cmd = "npm pkg set scripts.#{name.to_s.shellescape}=#{script.shellescape}"
        say_status :run, cmd.truncate(60), :green
        run! cmd, verbose: false
      end
    end
    alias add_package_json_script add_package_json_scripts

    def remove_package_json_script(name)
      cmd = "npm pkg delete scripts.#{name.to_s.shellescape}"
      say_status :run, cmd.truncate(60), :green
      run! cmd, verbose: false
    end

    def js_package_manager
      File.exist?("yarn.lock") ? :yarn : :npm
    end

    def yarn?
      js_package_manager == :yarn
    end

    def run_js_command(cmd, capture: false)
      say_status(*cmd.split(" ", 2), :green)
      output = run! cmd, capture: true, verbose: false
      return output if capture
      return puts(output) unless output.match?(/^success /)

      puts output.lines.grep(/^(warning|success) /).join
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nextgen-0.31.0 lib/nextgen/actions/javascript.rb
nextgen-0.30.0 lib/nextgen/actions/javascript.rb
nextgen-0.29.0 lib/nextgen/actions/javascript.rb
nextgen-0.28.2 lib/nextgen/actions/javascript.rb
nextgen-0.28.1 lib/nextgen/actions/javascript.rb
nextgen-0.28.0 lib/nextgen/actions/javascript.rb
nextgen-0.27.1 lib/nextgen/actions/javascript.rb
nextgen-0.27.0 lib/nextgen/actions/javascript.rb