All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
v0.4.8 (2024-11-27)
- add
expand_env?
option toIgniter.Code.Common.add_code/3
(#151)
-
if alias elements are strings ensure they aren't interpreted as AST
-
don't move modules back to their "proper" location
-
use new
ignore_missing_sub_formatters
option in rewrite
-
add
:force?
option toIgniter.Project.Application.add_child/3
(#156) -
handle io formatting more uniformly (#148)
-
handle io formatting more uniformly
v0.4.7 (2024-11-12)
- Add
Igniter.Libs.Swoosh
for working with Swoosh
- print a consistent number of blank lines around diffs (#147)
v0.4.6 (2024-11-06)
-
suppress module conflict warning when running upgrade_igniter
-
pass dot_formatter when updating rewrite sources (#144)
-
skip unknown deps in dot formatter
- Add
priv_dir
functions to return priv directory (#141)
v0.4.5 (2024-11-04)
- skip unknown deps in dot formatter
v0.4.4 (2024-11-03)
- support replace_or_append instruction when modifying task aliases
- Add
priv_dir
functions to return priv directory (#141)
v0.4.3 (2024-11-02)
- various fixes for test formatting
- Tools for removing formatter plugins & imported deps
v0.4.2 (2024-11-02)
- properly compose upgrade tasks
- update rewrite to 1.0.0 (#135)
v0.4.1 (2024-11-01)
- apply 0.3 compatibility fixes for upgrades
v0.3.77 (2024-11-01)
-
don't skip igniter composition on existing issues
-
handle
Igniter.Project.Application.app_module/1
returning tuple -
properly retain trailing newlines in
replace_code/2
-
handle grouped options in positional args parsing
-
properly pass --with-args to generator
-
handle connected
=
in extract_positional_args -
properly split args on equals symbol
-
Igniter.Code.Common.replace_code/2
: Don't leave zipper at parent when extending blocks (#123)
-
Parse
argv
by default and store inIgniter
struct (#131) -
upgrade
igniter/2
toigniter/1
in simple cases -
optimize
Igniter.Project.Module.find_module/2
when all files haven't been loaded -
add
Igniter.Test.diff/2
(#120) -
add
Igniter.Test.diff/2
v0.3.76 (2024-10-28)
-
properly ignore
with-args
when passing args to installers -
expand_literal
should expand single-child blocks -
expand_literal
should return an errorMacro.expand_literals
doesn't return a literal -
make task run/1 overridable (#114)
-
Support integer argument in
move_right/2
andmove_upwards/2
and addmove_left/2
(#113)
-
resolve project app names set using a module attribute (#111)
-
resolve project app names set using a module attribute
v0.3.75 (2024-10-26)
- make update_gettext idempotent
v0.3.74 (2024-10-24)
- properly compare version lists
v0.3.73 (2024-10-24)
- don't use
yes?
if --git_ci or --yes
v0.3.72 (2024-10-22)
- set
--yes
automatically in git_ci
v0.3.71 (2024-10-22)
v0.3.70 (2024-10-22)
- properly upgrade deps with mix deps.update
v0.3.69 (2024-10-21)
- add
mix igniter.refactor.unless_to_if_not
v0.3.68 (2024-10-21)
-
properly detect all version migrations
-
make replacing code append to parent blocks when extendable
-
pass through additional arguments to installers
-
reintroduce accidentally removed function
-
don't call into shared lib?
v0.3.67 (2024-10-19)
-
ensure deps are always added in explicit tuple format
-
don't use the 2 arg version of config when the first key would be ugly
v0.3.66 (2024-10-19)
- significant improvements to function checking speed
v0.3.65 (2024-10-19)
-
add
mix igniter.upgrade
-
add
mix igniter.refactor.rename_function
v0.3.64 (2024-10-17)
-
don't infinitely recurse on update_all_matches
-
detect node removal in update_all_matches
- add
Igniter.Code.String
v0.3.63 (2024-10-15)
- properly collect csv options into lists
v0.3.62 (2024-10-14)
- properly parse csv/keep options
v0.3.61 (2024-10-14)
- support csv option type and properly handle keep options lists
v0.3.60 (2024-10-14)
- don't rely on elixir 1.16+ features
v0.3.59 (2024-10-14)
- don't return igniter from message function
v0.3.58 (2024-10-13)
- don't assume the availabilit of
which
v0.3.57 (2024-10-11)
- add
group
and option disambiguation based on groups
v0.3.56 (2024-10-11)
- support required arguments in the info schema
v0.3.55 (2024-10-11)
- fix pattern match on prompt on git changes
v0.3.54 (2024-10-11)
- looser match on git change detection
v0.3.53 (2024-10-11)
- add
on_exists
handling toIgniter.Libs.Ecto.gen_migration
v0.3.52 (2024-10-07)
- properly warn on git changes before committing
v0.3.51 (2024-10-07)
- provide proper version in the installer
-
remove
System.cmd
forigniter.install
in installer -
allow excluding line numbers in
Igniter.Test.assert_has_patch
-
prettier errors on task exits
v0.3.50 (2024-10-07)
- don't warn on missing installers that aren't actually missing
v0.3.49 (2024-10-06)
- fix dialyzer spec
v0.3.48 (2024-10-04)
-
add
opts_updater
option toadd_new_child
-
add
Igniter.Libs.Ecto.gen_migration
-
implement various deprecations
-
add
Igniter.Libs.Ecto
for listing/selecting repos -
add
defaults
key toInfo{}
v0.3.47 (2024-10-04)
-
prompt users to handle diverged environment issues
-
display installer output in
IO.stream()
-
honor --yes properly when adding nested deps
-
don't install revoked versions of packages
-
install non-rc packages, or the rc package if there is none
v0.3.46 (2024-10-03)
- fix message in task name warning
v0.3.45 (2024-09-25)
- use
ensure_all_started
without a list for backwards compatibility
- Yn -> y/n to represent a lack of a default
v0.3.44 (2024-09-24)
-
properly create or update config files
-
format files after reading so formatter_opts is set before later writes
-
remove incorrect call to
add_code
fromreplace_code
v0.3.43 (2024-09-23)
- traverse lists without entering child nodes
v0.3.42 (2024-09-23)
- handle empty requested positional args when extracting positional
-
add
Igniter.Code.List.replace_in_list/3
-
allow appending/prepending a different value when the full
v0.3.41 (2024-09-23)
- add
Igniter.Project.TaskAliases.add_alias/3-4
v0.3.40 (2024-09-23)
- properly detect existing scopes with matching names
v0.3.39 (2024-09-18)
-
don't warn while parsing files
-
display an error when a composed task can't be found
-
more phoenix router specific code
-
make
issues
red and formatted with more spacing -
properly compare regex literals
-
add
dont_move_file_pattern
utility -
update installer to always run mix deps get and install
v0.3.38 (2024-09-16)
- don't add warning on
overwrite
option
- better confirmation message experience
v0.3.37 (2024-09-15)
- return
igniter
inIgniter.Test.assert_unchanged
v0.3.36 (2024-09-13)
- reevaluate .igniter.exs when it changes
-
Support for extensions in igniter config
-
Add a phoenix extension to prevent moving modules that may be phoenix-y
v0.3.35 (2024-09-10)
-
much smarter removal of
import_config
when evaluating configuration files -
when including a glob, use
test_files
in test_mode
- add
Igniter.Code.Common.remove/2
v0.3.34 (2024-09-10)
- properly avoid adding duplicate children to application tree
v0.3.33 (2024-09-10)
- properly determine module placement in app tree
v0.3.32 (2024-09-10)
- properly extract app module from
def project
v0.3.31 (2024-09-10)
- set only option to
nil
by default
v0.3.30 (2024-09-10)
- handle some edge cases in application child adding
-
support the opts being code when adding a new child to the app tree
-
prepend new children instead of appending them
-
add an
after
option toadd_new_child/3
-
better warnings on invalid patches in test
v0.3.29 (2024-09-09)
-
check for git changes to avoid overwriting unsaved changes
-
add
mix igniter.gen.task
to quickly generate a full task -
properly find the default location for mix task modules
-
add
--only
option, andonly
key inIgniter.Mix.Task.Info
-
add
Igniter.Test
with helpers for writing tests -
extract app name and app module from mix.exs file
v0.3.28 (2024-09-09)
- don't hardcode
Spark.Formatter
plugin
v0.3.27 (2024-09-08)
- when replacing a dependency, leave it in the same location
v0.3.26 (2024-09-08)
- add
igniter.update_gettext
v0.3.25 (2024-09-06)
-
add
configure_runtime_env
codemod -
remove dependencies that aren't strictly necessary
-
remove dependencies that we don't really need
-
more options to
igniter.new
v0.3.24 (2024-08-26)
- detect equal lists for node equality
v0.3.23 (2024-08-26)
- properly move to arguments of Module.fun calls
-
add
Igniter.Code.Common.expand_literal/1
-
add
--with-args
to pass additional args to installers
v0.3.22 (2024-08-20)
- add options to control behavior when creating a file that already exists
v0.3.21 (2024-08-20)
- add
copy_template/4
v0.3.20 (2024-08-19)
-
ensure no timeout on task async streams
-
don't hardcode
Foo.Supervisor
�
v0.3.19 (2024-08-13)
- properly handle values vs code in configure
v0.3.18 (2024-08-08)
- fix and test keyword setting on empty list
v0.3.17 (2024-08-08)
-
properly parse boolean switches from positional args
-
don't warn on
Macro.Env.expand_alias/3
not being defined -
descend into single child block when modifying keyword
-
set
format: :keyword
when adding keyword list item to empty list -
escape injected code in Common.replace_code/2 (#70)
-
:error consistency in remove_keyword_key and argument_equals? in Config.configure (#68)
-
support for non-elixir files with create_new_file, update_file, include_existing_file, include_or_create_file, create_or_update_file (#75)
-
support "notices" (#65)
v0.3.16 (2024-07-31)
- loadpaths after compiling deps
- add
create_module
utility
v0.3.15 (2024-07-31)
-
remove
force?: true
from dep installation -
better handling of positional args in igniter.new
v0.3.14 (2024-07-30)
-
detect more function call formats
-
properly extract arguments when parsing positional args
v0.3.13 (2024-07-30)
- force compile dependencies to avoid strange compiler issues
v0.3.12 (2024-07-30)
- add
Igniter.Libs.Phoenix.endpoints_for_router/2
v0.3.11 (2024-07-27)
-
ensure igniter is compiled first
-
fetch deps after adding any nested installers
-
various fixes & improvements to positional argument listing
-
clean up dependency compiling logic
-
optimize module finding w/ async_stream
-
add
rest: true
option for positional args
v0.3.10 (2024-07-26)
- recompile igniter in
ingiter.install
-
add
positional_args!/1
macro for use in tasks -
better output on missing installers & already present dep
v0.3.9 (2024-07-22)
-
force compile dependencies.
-
use length of path for insertion point, instead of node equality
v0.3.8 (2024-07-19)
-
better map key setting
-
detect strings as non extendable blocks
-
add option to ignore already present phoenix scopes
v0.3.7 (2024-07-19)
- improve
add_code
by modifying thesupertree
v0.3.6 (2024-07-19)
-
properly scope configuration modification code
-
properly add blocks of code together
v0.3.5 (2024-07-19)
-
properly move to pattern matches in scope
-
configures?/3 -> configures_key & configures_root_key (#54)
- add blocks together more fluidly in
add_code
v0.3.4 (2024-07-19)
- recompile
:igniter
if it has to
-
include config in include_all_elixir_files (#55)
-
add Function.argument_equals?/3 (#53)
-
add Function.argument_equals?/3
v0.3.3 (2024-07-18)
-
fix function typespecs & add
inflex
dependency -
only show executed installers (#50)
-
support tuple dependencies in igniter.install (#49)
v0.3.2 (2024-07-16)
- don't compile igniter dep again when compiling deps
v0.3.1 (2024-07-16)
- when adding code to surrounding block, don't go up multiple blocks
v0.3.0 (2024-07-15)
-
Add
Igniter.Libs.Phoenix
for working with Phoenix -
deprecate duplicate
Igniter.Code.Module.move_to_use
function -
Igniter.Project.Config.configures?/4
that takes a config file -
Add
Igniter.Util.Warning
for formatting code in warnings
v0.2.13 (2024-07-15)
- remove redundant case clause in
Igniter.Code.Common
-
make
apply_and_fetch_dependencies
only changedeps/0
-
remove a bunch of dependencies by using :inets & :httpc
v0.2.12 (2024-07-10)
- fix dialyzer warnings about info/2 never being nil
v0.2.11 (2024-07-10)
- prevent crash on specific cases with
igniter.new
-
more consistent initial impl of
elixirc_paths
-
support :kind in find_and_update_or_create_module/5 (#38)
v0.2.10 (2024-07-10)
- ensure
test/support
is in elixirc paths automatically when necessary
v0.2.9 (2024-07-09)
-
simplify how we get tasks to run
-
don't try to format after editing
mix.exs
v0.2.8 (2024-07-09)
-
fix deps compilation issues by vendoring
deps.compile
-
honor
--yes
flag when installing deps always
- small tweaks to output
v0.2.7 (2024-07-09)
-
remove shortnames for global options, to reduce conflicts
-
remove erroneous warning while composing tasks
-
pass file_path to
ensure_default_configs_exist
(#36) -
preserve original ordering in Util.Install (#33)
-
include only "mix.exs" in the actual run in apply_and_fetch_dependencies (#32)
-
always return {:ok, zipper} in append_new_to_list/2 (#31)
-
support an optional append? flag for add_dep/3 (#34)
-
add
add_dep/2-3
, that accepts a full dep specification -
deprecate
add_dependency/3-4
-
make module moving much smarter
-
add configurations for not moving certain modules
-
make
source_folders
configurable
v0.2.6 (2024-07-02)
-
properly find nested modules again
-
make igniter tests much faster by not searching our own project
-
add
include_all_elixir_files/1
-
add
module_exists?/2
-
add
find_and_update_module/3
-
only require rejecting mix deps.get one time & remember that choice
-
simpler messages signaling a mix deps.get
v0.2.5 (2024-07-02)
-
move_modules
->move_files
-
move some files around and update config names
-
use
%Info{}
structs to compose and plan nested installers -
add Igniter.apply_and_fetch_dependencies/1 and Igniter.has_changes?/1 (#28)
-
rename option_schema/2 -> info/2
-
only create default configs if an env-specific config is created
v0.2.4 (2024-06-28)
-
fix match error in
append_new_to_list
-
version string splitting (#25)
-
add an optional path argument to
find_and_update_or_create_module/5
-
add
option_schema/2
callback toIgniter.Mix.Task
-
Module.find_and_update_or_create_module
-
add a way to move files
-
add
.igniter.exs
file, andmix igniter.setup
to create it -
move files to configured location based on changes
-
add fallback to compose_task (#19)
-
add proper_test_support_location/1 (#18)
-
add proper_test_location/1 (#17)
v0.2.3 (2024-06-21)
- use
override: true
for git/github deps as well
v0.2.2 (2024-06-21)
-
don't show unnecessary diff output
-
don't compile before fetching deps
v0.2.1 (2024-06-21)
-
workaround trailing comment issues w/ sourceror
-
support
--with
option inigniter.new
v0.2.0 (2024-06-20)
-
make installer use
override: true
on local dependency -
ensure dependencies are compiled after
mix deps.get
-
use warnings instead of errors for better UX
-
move proejct related things to
Project
namespace
v0.1.8 (2024-06-19)
- update spitfire for env fix
-
rename
env_at_cursor
tocurrent_env
-
improve marshalling of spitfire env to macro env
-
show warning when adding dependencies by default
v0.1.7 (2024-06-14)
-
various restructurings and improvements across the board
-
use
Spitfire
to ensure that aliases are considered when comparing modules -
use
Spitfire
to use any existing aliases when inserting code -
use
Zipper.topmost
to power newSpitfire
-related features
v0.1.6 (2024-06-13)
-
patch formatter fix, to be removed later when rewrite PR is merged
-
properly find functions in scope
v0.1.5 (2024-06-13)
- Igniter.Code.Common.with/2 was not properly merging with original zipper
v0.1.4 (2024-06-13)
- use
path:
prefix instead oflocal:
v0.1.3 (2024-06-13)
- support space-separated installers
v0.1.2 (2024-06-13)
-
remove unsupportable package installation symbols
-
don't run
mix deps.get
if dependency changes are aborted
v0.1.1 (2024-06-13)
- always format the file even if no
.formatter.exs
exists
v0.1.0 (2024-06-13)
- handle existing deps when they are not local properly
-
ignore installer tasks that are not igniter tasks
-
draw the rest of the owl
-
add installer archive
-
more module helpers
-
wrap code in
==code==
so you can tell what is beingputs
-
add CI/build and get it passing locally