Two distribution defects left installed skills stale (issue PeterGuy326#8): 1. skill setup resolved its source from cwd / exe-adjacent checkouts, so an upgraded binary happily re-installed whatever stale checkout it was run from, and agents kept routing 'create robot' into the chat dead end. The skills/mono and skills/multi trees are now embedded (go:embed) and setup defaults to that copy, materialized into ~/.dws/skills/<mode> — upgrading the binary upgrades what setup installs. --source and DWS_SKILL_SOURCE stay as explicit overrides, and an override that has no skill root errors out instead of silently falling back. 2. dws upgrade's skill refresh (knownSkillDirs) skipped ~/.qoder and ~/.qoderwork, so Qoder/QoderWork hosts never got refreshed routing. Added both to the dir table and its seven mirrors (npm install.js, install.sh/ps1, install-skills.sh, homebrew template, package test, verify-package-managers.sh). setup-side detection and --target qoder/qoderwork already work on this branch; this closes the remaining upgrade-side and source-side gaps.
75 lines
2.3 KiB
Cheetah
75 lines
2.3 KiB
Cheetah
class __CLASS_NAME__ < Formula
|
|
desc "DingTalk Workspace CLI"
|
|
homepage "https://github.com/DingTalk-Real-AI/dingtalk-workspace-cli"
|
|
url "__ARCHIVE_URL__"
|
|
sha256 "__ARCHIVE_SHA256__"
|
|
license "Apache-2.0"
|
|
__KEG_ONLY_LINE__
|
|
|
|
resource "skills" do
|
|
url "__SKILLS_URL__"
|
|
sha256 "__SKILLS_SHA256__"
|
|
end
|
|
|
|
def install
|
|
require "fileutils"
|
|
|
|
root = Dir["dws-*"].find { |entry| File.directory?(entry) } || "."
|
|
binary = File.join(root, "dws")
|
|
raise "binary not found: #{binary}" unless File.exist?(binary)
|
|
|
|
bin.install binary => "dws"
|
|
|
|
%w[LICENSE NOTICE README.md CHANGELOG.md].each do |name|
|
|
source = File.join(root, name)
|
|
pkgshare.install source if File.exist?(source)
|
|
end
|
|
|
|
skill_dest = pkgshare/"skills/dws"
|
|
skill_dest.mkpath
|
|
resource("skills").stage do
|
|
FileUtils.cp_r(Dir["*"], skill_dest)
|
|
end
|
|
end
|
|
|
|
def post_install
|
|
require "fileutils"
|
|
|
|
skill_root = pkgshare/"skills/dws"
|
|
entries = Dir["#{skill_root}/*"]
|
|
return if entries.empty?
|
|
|
|
targets = [
|
|
Pathname.new(File.join(Dir.home, ".agents/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".claude/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".cursor/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".qoder/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".qoderwork/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".gemini/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".codex/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".github/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".windsurf/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".augment/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".cline/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".amp/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".kiro/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".trae/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".openclaw/skills/dws")),
|
|
Pathname.new(File.join(Dir.home, ".hermes/skills/dws")),
|
|
]
|
|
|
|
targets.each_with_index do |dest, index|
|
|
parent_gate = dest.parent.parent
|
|
next if index > 0 && !parent_gate.directory?
|
|
|
|
FileUtils.rm_rf(dest)
|
|
FileUtils.mkdir_p(dest)
|
|
FileUtils.cp_r(entries, dest)
|
|
end
|
|
end
|
|
|
|
test do
|
|
assert_match "dws", shell_output("#{bin}/dws --help")
|
|
end
|
|
end
|