Packages
igniter
0.6.21
0.8.2
0.8.1
0.8.0
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.30
0.6.29
0.6.28
0.6.27
0.6.26
0.6.25
0.6.24
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.52
0.5.51
0.5.50
0.5.49
0.5.48
0.5.47
0.5.46
0.5.45
0.5.44
0.5.43
0.5.42
0.5.41
0.5.40
0.5.39
0.5.38
0.5.37
0.5.36
0.5.35
0.5.34
0.5.33
0.5.32
0.5.31
0.5.30
0.5.29
0.5.28
0.5.27
0.5.26
0.5.25
0.5.24
0.5.23
0.5.22
0.5.21
0.5.20
0.5.19
0.5.18
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.78
0.3.77
0.3.76
0.3.75
0.3.74
0.3.73
0.3.72
0.3.71
0.3.70
0.3.69
0.3.68
0.3.67
0.3.66
0.3.65
0.3.64
0.3.63
0.3.62
0.3.61
0.3.60
0.3.59
0.3.58
0.3.57
0.3.56
0.3.55
0.3.54
0.3.53
0.3.52
0.3.51
0.3.50
0.3.49
0.3.48
0.3.47
0.3.46
0.3.45
0.3.44
0.3.43
0.3.42
0.3.41
0.3.40
0.3.39
0.3.38
0.3.37
0.3.36
0.3.35
0.3.34
0.3.33
0.3.32
0.3.31
0.3.30
0.3.29
0.3.28
0.3.27
0.3.26
0.3.25
0.3.24
0.3.23
0.3.22
0.3.21
0.3.20
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
A code generation and project patching framework
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/igniter.upgrade_igniter.ex
defmodule Mix.Tasks.Igniter.UpgradeIgniter do
use Igniter.Mix.Task
@example "mix igniter.upgrade_igniter --example arg"
@moduledoc false
def info(_argv, _composing_task) do
%Igniter.Mix.Task.Info{
# Groups allow for overlapping arguments for tasks by the same author
# See the generators guide for more.
group: :igniter,
# dependencies to add
adds_deps: [],
# dependencies to add and call their associated installers, if they exist
installs: [],
# An example invocation
example: @example,
# a list of positional arguments, i.e `[:file]`
positional: [:from, :to],
# Other tasks your task composes using `Igniter.compose_task`, passing in the CLI argv
# This ensures your option schema includes options from nested tasks
composes: [],
# `OptionParser` schema
schema: [],
# Default values for the options in the `schema`.
defaults: [],
# CLI aliases
aliases: [],
# A list of options in the schema that are required
required: []
}
end
def igniter(igniter) do
arguments = igniter.args.positional
options = igniter.args.options
upgrades =
%{
"0.3.66" => [&code_module_parse_to_project_module_parse/2],
"0.3.71" => [&code_module_parse_to_project_module_parse/2],
"0.3.76" => [&code_common_nth_right_to_move_right/2],
"0.4.0" => [&igniter2_to_igniter1/2]
}
# For each version that requires a change, add it to this map
# Each key is a version that points at a function that takes an
# igniter, an argv, and options (i.e flags or other custom options).
# See the upgrades guide for more.
Igniter.Upgrades.run(igniter, arguments.from, arguments.to, upgrades, options)
end
defp code_module_parse_to_project_module_parse(igniter, _opts) do
igniter
|> Igniter.Refactors.Rename.rename_function(
{Igniter.Code.Module, :parse},
{Igniter.Project.Module, :parse},
arity: 1
)
|> Igniter.add_notice(
"Igniter.Code.Module.parse/1 was deprecated in favor of Igniter.Project.Module.parse/1"
)
end
defp code_common_nth_right_to_move_right(igniter, _opts) do
igniter
|> Igniter.Refactors.Rename.rename_function(
{Igniter.Code.Common, :nth_right},
{Igniter.Code.Common, :move_right},
arity: 2
)
|> Igniter.add_notice(
"Igniter.Code.Common.nth_right/2 was deprecated in favor of Igniter.Code.Common.move_right/2"
)
end
defp igniter2_to_igniter1(igniter, _opts) do
ignore_module_conflict(fn ->
Igniter.Mix.Task.module_info()[:compile][:source] |> List.to_string() |> Code.compile_file()
end)
Igniter.update_all_elixir_files(igniter, fn zipper ->
Igniter.Upgrades.Igniter.rewrite_deprecated_igniter_callback(zipper)
end)
end
defp ignore_module_conflict(fun) when is_function(fun, 0) do
original_compiler_opts = Code.compiler_options()
Code.put_compiler_option(:ignore_module_conflict, true)
result = fun.()
Code.compiler_options(original_compiler_opts)
result
end
end