Current section

42 Versions

Jump to

Compare versions

4 files changed
+40 additions
-19 deletions
  @@ -5,6 +5,15 @@ See [Conventional Commits](Https://conventionalcommits.org) for commit guideline
5 5
6 6 <!-- changelog -->
7 7
8 + ## v0.1.1 (2025-05-24)
9 +
10 +
11 +
12 +
13 + ### Improvements:
14 +
15 + * only suggest top-level deps
16 +
8 17 ## v0.1.0 (2025-05-24)
  @@ -6,7 +6,7 @@
6 6 {<<"GitHub">>,<<"https://github.com/ash-project/ash_graphql">>},
7 7 {<<"Website">>,<<"https://ash-hq.org">>}]}.
8 8 {<<"name">>,<<"usage_rules">>}.
9 - {<<"version">>,<<"0.1.0">>}.
9 + {<<"version">>,<<"0.1.1">>}.
10 10 {<<"description">>,
11 11 <<"A dev tool for Elixir projects to gather LLM usage rules from dependencies">>}.
12 12 {<<"elixir">>,<<"~> 1.18">>}.
  @@ -93,9 +93,16 @@ if Code.ensure_loaded?(Igniter) do
93 93 # Add all usage-rules.md files from deps directory to igniter
94 94 igniter = Igniter.include_glob(igniter, "deps/*/usage-rules.md")
95 95
96 + top_level_deps =
97 + Mix.Project.get().project()[:deps] |> Enum.map(&elem(&1, 0))
98 +
96 99 # Get all deps from both Mix.Project.deps_paths and Igniter rewrite sources
97 100 mix_deps =
98 - Enum.map(Mix.Project.deps_paths(), fn {dep, path} ->
101 + Mix.Project.deps_paths()
102 + |> Enum.filter(fn {dep, _path} ->
103 + dep in top_level_deps
104 + end)
105 + |> Enum.map(fn {dep, path} ->
99 106 {dep, Path.relative_to_cwd(path)}
100 107 end)
101 108
  @@ -151,24 +158,28 @@ if Code.ensure_loaded?(Igniter) do
151 158 end
152 159
153 160 defp get_deps_from_igniter(igniter) do
154 - igniter.rewrite.sources
155 - |> Enum.filter(fn {path, _source} ->
156 - String.match?(path, ~r|^deps/[^/]+/usage-rules\.md$|)
157 - end)
158 - |> Enum.map(fn {path, _source} ->
159 - # Extract package name from deps/package_name/usage-rules.md
160 - package_name =
161 - path
162 - |> String.split("/")
163 - |> Enum.at(1)
164 - |> String.to_atom()
161 + if igniter.assigns[:test_mode?] do
162 + igniter.rewrite.sources
163 + |> Enum.filter(fn {path, _source} ->
164 + String.match?(path, ~r|^deps/[^/]+/usage-rules\.md$|)
165 + end)
166 + |> Enum.map(fn {path, _source} ->
167 + # Extract package name from deps/package_name/usage-rules.md
168 + package_name =
169 + path
170 + |> String.split("/")
171 + |> Enum.at(1)
172 + |> String.to_atom()
165 173
166 - # Extract package path from deps/package_name/usage-rules.md
167 - package_path = Path.dirname(path)
174 + # Extract package path from deps/package_name/usage-rules.md
175 + package_path = Path.dirname(path)
168 176
169 - {package_name, package_path}
170 - end)
171 - |> Enum.uniq()
177 + {package_name, package_path}
178 + end)
179 + |> Enum.uniq()
180 + else
181 + []
182 + end
172 183 end
173 184
174 185 defp add_usage_error(igniter) do
  @@ -1,7 +1,7 @@
1 1 defmodule UsageRules.MixProject do
2 2 use Mix.Project
3 3
4 - @version "0.1.0"
4 + @version "0.1.1"
5 5 @description """
6 6 A dev tool for Elixir projects to gather LLM usage rules from dependencies
7 7 """
  @@ -90,6 +90,7 @@ defmodule UsageRules.MixProject do
90 90 {:credo, ">= 0.0.0", only: [:dev, :test], runtime: false},
91 91 {:dialyxir, ">= 0.0.0", only: [:dev, :test], runtime: false},
92 92 {:sobelow, ">= 0.0.0", only: [:dev, :test], runtime: false},
93 + {:mix_audit, ">= 0.0.0", only: [:dev, :test], runtime: false},
93 94 {:git_ops, "~> 2.0", only: [:dev]}
94 95 ]
95 96 end