@@ -32,18 +32,22 @@ defmodule Mix.Tasks.Local.Install do
32
32
def run ( argv ) do
33
33
{ opts , argv , _ } = OptionParser . parse ( argv , switches: [ force: :boolean ] )
34
34
35
- unless path = List . first ( argv ) do
35
+ if url = List . first ( argv ) do
36
+ URI.Info [ path : path ] = URI . parse ( url )
37
+
38
+ case Path . extname ( path ) do
39
+ ".ez" -> install_archive ( url , opts )
40
+ _ -> raise Mix.Error , message: "mix local.install doesn't know how to install #{ path } "
41
+ end
42
+ else
36
43
path = Mix.Archive . name ( Mix . project [ :app ] , Mix . project [ :version ] )
37
44
38
- unless File . exists? ( path ) do
45
+ if File . exists? ( path ) do
46
+ install_archive ( path , opts )
47
+ else
39
48
raise Mix.Error , message: "Expected PATH to be given, please use `mix local.install PATH`"
40
49
end
41
50
end
42
-
43
- case Path . extname ( path ) do
44
- ".ez" -> install_archive ( path , opts )
45
- _ -> raise Mix.Error , message: "mix local.install doesn't know how to install #{ path } "
46
- end
47
51
end
48
52
49
53
defp install_archive ( src , opts ) do
@@ -52,10 +56,15 @@ defmodule Mix.Tasks.Local.Install do
52
56
remove_previous_versions ( previous )
53
57
dest = Mix.Local . archives_path
54
58
File . mkdir_p! dest
55
- create_file Path . join ( dest , Path . basename ( src ) ) , Mix.Utils . read_path! ( src )
59
+ create_file Path . join ( dest , basename ( src ) ) , Mix.Utils . read_path! ( src )
56
60
end
57
61
end
58
62
63
+ defp basename ( path ) do
64
+ URI.Info [ path : path ] = URI . parse ( path )
65
+ Path . basename ( path )
66
+ end
67
+
59
68
defp should_install? ( src , [ ] ) do
60
69
Mix . shell . yes? ( "Are you sure you want to install archive #{ src } ?" )
61
70
end
0 commit comments