minhajuddin / mix_script Goto Github PK
View Code? Open in Web Editor NEWA build tool which allows you to use mix packages in an elixir script
Home Page: https://github.com/minhajuddin/mix_script
License: MIT License
A build tool which allows you to use mix packages in an elixir script
Home Page: https://github.com/minhajuddin/mix_script
License: MIT License
OS: Funtoo Linux
=== Enabled Profiles: ===
arch: x86-64bit
build: current
subarch: intel64-ivybridge
# ...
Elixir and Erlang version manager: asdf
Elixir version: 1.5.2-otp-20
Erlang version: 20.1
mix escript.install hex mix_script
PATH
environment variabletouch example.exs
(or just copy example from README.md
)mix_script compile example.exs
...
):17:48:36.572 [info] parsing script @ example.exs
17:48:36.581 [info] Found these deps:
17:48:36.581 [info] Found this in the script:
17:48:36.583 [info] creating tmp dir
17:48:36.608 [info] created tmp dir /tmp/...
17:48:36.612 [info] executing: "mix" with args ["new", "/tmp/...", "--module", "MixScript", "--app", "mix_script"]
* creating README.md
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/mix_script.ex
* creating test
* creating test/test_helper.exs
* creating test/mix_script_test.exs
Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:
cd /tmp/...
mix test
Run "mix help" for more commands.
17:48:36.893 [info] created mix project
17:48:36.893 [info] replacing deps
17:48:36.896 [info] setting up escript
17:48:36.896 [info] executing: "mix" with args ["deps.get"]
** (SyntaxError) mix.exs:22: "do" is missing terminator "end". unexpected token: "]" at line 26
(elixir) lib/code.ex:334: Code.load_file/2
(mix) lib/mix/cli.ex:26: Mix.CLI.proceed/1
(elixir) lib/code.ex:376: Code.require_file/2
ERROR:
{"", 1}
17:48:37.180 [info] executing: "mix" with args ["escript.build"]
** (SyntaxError) mix.exs:22: "do" is missing terminator "end". unexpected token: "]" at line 26
(elixir) lib/code.ex:334: Code.load_file/2
(mix) lib/mix/cli.ex:26: Mix.CLI.proceed/1
(elixir) lib/code.ex:376: Code.require_file/2
ERROR:
{"", 1}
** (File.CopyError) could not copy from "/tmp/.../mix_script" to "/home/username/test2": no such file or directory
(elixir) lib/file.ex:631: File.cp!/3
(mix_script) lib/mix_script.ex:10: MixScript.main/1
(elixir) lib/kernel/cli.ex:90: anonymous fn/3 in Kernel.CLI.exec_fun/2
Project should be compiled and generate a binary.
Project does not compile and therefore can't generate a binary.
Here is output of cat /tmp/.../mix.exs
command:
defmodule MixScript.Mixfile do
use Mix.Project
def project do
[
app: :mix_script,
version: "0.1.0",
elixir: "~> 1.5",
escript: [main_module: MixScript],
deps: deps()
]
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[]
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"},
]
end
end
As you can see at end of &deps/0
function there is extra ]
character that causes SyntaxError
.
cond
in
Line 41 in c91b7a5
List
that is added to returned tuple, so you can filter every line before end
in this function.
Generate file from your own template with current Elixir
version and updated dependencies list.
I have created PR: #2, so anyone that needs it working can now follow few simple steps:
git clone [email protected]:Eiji7/mix_script.git
git clone https://github.com/Eiji7/mix_script.git
cd mix_script
MIX_ENV=prod mix escript.build
mix_script
compiled binary wherever you like ๐path/to/compiled/mix_script path/to/example.exs
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.