desc “Node package manager wrapper: yarn” namespace :npm do

desc "Fresh copy of node modules"
task :init => ["clean:cache", "clean:temp"] do
  if File.file?(NPM_FILE)
    sh "yarn install";
  else
    sh "yarn init"
  end
end

desc "Install dependencies"
task :install do |task, args|
  sh "yarn install"
end

desc "Add a dependency"
task :add, [:package] do |task, args|
  sh "yarn add #{args[:package]}"
end

desc "Added a dev dependency"
task :dev, [:package] do |task, args|
  sh "yarn add #{args[:package]} --dev"
end

desc "Remove a dependency"
task :remove, [:package] do |task, args|
  sh "yarn remove #{args[:package]}"
end

desc "Package version bump"
task :bump, [:version] do |t, args|
  if args[:version]
    config['version'] = args[:version]

    File.write(
      NPM_FILE,
      JSON.pretty_generate(config)
    )
  end
end

desc "Publish a package publicly"
task :publish do
  sh %{ npm publish --access=public }
end

end