<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="218554" data-post-id="218554">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yep, that’s much better than my thing!</p>
<aside class="quote no-group" data-username="mindok" data-post="41" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mindok/48/13538_2.png" class="avatar"> mindok:</div>
<blockquote>
<p>Yikes. Remember WORM drives (write once, read many) - sed &amp; perl are more like WORN - write once, read never.</p>
</blockquote>
</aside>
<p>It’s not so bad, to be fair. It looks awful when you see the end result but I needed less than 10 minutes to formulate it. But I’ll immediately agree with <a class="mention" href="/u/wojtekmach" rel="nofollow">@wojtekmach</a> that we should use easier to parse responses.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218554" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-218554" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218554"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #41"></div>
  </section>
</div>
    <div class="postbit" id="218652" data-post-id="218652">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="eddy147" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eddy147/120/18308_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  eddy147
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dimitarvp" data-post="35" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir">function _mix_hex_latest() {
    mix hex.info $1 | grep 'Config:' | sed 's/.*{\(.*\)}[^}]*/{\1},/'
}

alias mix_hex_latest='_mix_hex_latest'
</code></pre>
</blockquote>
</aside>
<p>Love it. Thx!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218652" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-218652" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218652"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #42"></div>
  </section>
</div>
    <div class="postbit" id="218665" data-post-id="218665">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="polypush135" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  polypush135
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just a thought but what if the deps got abstracted out of the mix file into a formated data file like json?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218665" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-218665" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218665"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #43"></div>
  </section>
</div>
    <div class="postbit" id="218669" data-post-id="218669">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dorgan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dorgan/120/22107_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dorgan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The issue is not the format the dependencies are listed on, but that because of the flexibility given by the project data being defined in an exs file we can’t know in 100% of the cases where the dependencies are and how to change them. And a dedicated file for dependencies is just one of the many many use cases.</p>
<p>And if we can’t come up with a solution that works in the 100% of the cases, then a task for that won’t be integrated into Elixir:</p>
<blockquote>
<p>One feature in the language shouldn’t limit other features.</p>
</blockquote>
<p>Which means that either the tool works with a “standard” mix.exs structure, in which cases folks that use other methods would be “moving away from the blessed way” and it wouldn’t work for them, or we keep the maximum flexibility that exist today and don’t let people add deps with a single command. The flexibility is being considered much more valuable in this case.</p>
<p>Honestly I have never seen a project(open source) that deviates from listing deps in the mix.exs file in a way that can’t be inferred by looking at the AST though. But that’s the reason, and even then I don’t feel like it’s an insensible one.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218669" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-218669" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218669"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #44"></div>
  </section>
</div>
    <div class="postbit" id="218673" data-post-id="218673">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="brettbeatty" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/brettbeatty/120/36494_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  brettbeatty
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t know about other folks, but I don’t want another JSON/YAML file at the top level of my app. I love having the deps listed in Elixir itself with the rest of the project, and I wouldn’t want to give that up just to make it easier to add deps a little faster.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218673" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-218673" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218673"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #45"></div>
  </section>
</div>
    <div class="postbit" id="218674" data-post-id="218674">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="polypush135" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  polypush135
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I don’t disagree but was rather trying to understand why that idea was not being talked about more since it seemed like an obvious solution to the parsing issue. I think <a class="mention" href="/u/dorgan" rel="nofollow">@dorgan</a> gave me a good perspective to this idea.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218674" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-218674" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218674"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #46"></div>
  </section>
</div>
    <div class="postbit" id="218712" data-post-id="218712">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hauleth" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/120/18942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hauleth
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dorgan" data-post="45" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dorgan/48/22107_2.png" class="avatar"> dorgan:</div>
<blockquote>
<p>in a way that can’t be inferred by looking at the AST though</p>
</blockquote>
</aside>
<p>Well, technically, it can always be done via looking at AST and then evaluating it with tracing. However to make it work in 100% of cases it mean that we need to solve halting problem first.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218712" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-218712" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218712"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #47"></div>
  </section>
</div>
    <div class="postbit" id="218714" data-post-id="218714">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hauleth" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/120/18942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hauleth
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>However after second thought, even then, in extreme cases, where someone <strong>intentionally</strong> will decide that they want to screw such tooling, it will still be at least hard:</p>
<p><strong>Encrypt dependencies because why not</strong>:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Foo.Mixfile do
  use Mix.Project

  def project do
    [
      app: :foo,
      version: "0.0.1",
      deps: deps()
    ]
  end

  defp deps do
    [iv, cipher, tag] =
      "WQydrxbe9+EIYQ9g.ADrtmVaQiGsLf8SjDXjREw+aDpIhzSE7tIxLLhjp3F0=.JXO8/u60/ItDjmGGuHtENQ=="
      |&gt; String.split(".")
      |&gt; Enum.map(&amp;Base.decode64!)
    key = Base.decode64!("YykuqU+Bs0HSQz758LjvZCxDte+w53uAeQvEJ7LVLlM=")

    :crypto.crypto_one_time_aead(:chacha20_poly1305, key, iv, ciphertext, "", tag, false) |&gt; :erlang.binary_to_term()
  end
end
</code></pre>
<p>While it would be possible to decode data from such message, it would be impossible to recode it in meaningful way without destructive changes.</p>
<p>Not that anyone would use such monster, but the <strong>can</strong> do it right now. And we cannot break their assumption that it will continue to work, and it will work with all features from <code>mix</code>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218714" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-218714" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218714"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #48"></div>
  </section>
</div>
    <div class="postbit" id="218716" data-post-id="218716">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dorgan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dorgan/120/22107_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dorgan
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We’re getting close to the “you did this to yourself” territory and in such cases mix would be very right to say “nah I’m not touching that abomination”</p>
<p>But the simple case of the deps being pulled into their own module in a different exs file is a very valid case that already complecates things substantially. I mean you already kind of have to get out of your way just to add a single dep in a “standard” <code>deps</code> function, which is why I feel it should be implemented as a third party tool and integrated into other tools like editors, rather than implemented in the language itself. I’m not saying this to low-key lure people to use my ast tool, but I know what it takes and I think the complexity is disproportionate to the benefit of the mix add.deps tool.</p>
<p>Imagine having a full blown refactoring engine in core elixir just to add a dependency to your mix.exs file.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218716" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-218716" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218716"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #49"></div>
  </section>
</div>
    <div class="postbit" id="218718" data-post-id="218718">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="hauleth" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hauleth/120/18942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  hauleth
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="dorgan" data-post="50" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dorgan/48/22107_2.png" class="avatar"> dorgan:</div>
<blockquote>
<p>We’re getting close to the “you did this to yourself” territory and in such cases mix would be very right to say “nah I’m not touching that abomination”</p>
</blockquote>
</aside>
<p>That is the problem with imperative configuration files like <code>mix.exs</code>. I prefer declarative approach, like in Rebar3 for example, but we have, what we have, and we cannot escape it right now. And IMHO adding new feature that in some cases will tell user “I cannot do anything there, even if your code is correct” is something that we should avoid at any cost.</p>
<aside class="quote no-group" data-username="dorgan" data-post="50" data-topic="40627">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dorgan/48/22107_2.png" class="avatar"> dorgan:</div>
<blockquote>
<p>which is why I feel it should be implemented as a third party tool and integrated into other tools like editors, rather than implemented in the language itself</p>
</blockquote>
</aside>
<p>I 100% agree. In that case it will not be a problem at all if it will break in some cases. My comments are only why I think such functionality cannot be added to Elixir Core, not why it cannot be implemented as 3rd party. I encourage anyone to implement such functionality as an external tool, it will be great.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="218718" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/why-doesnt-the-elixir-core-team-accept-mix-deps-add-proposals/40627/51">Post #50</a>
	                </div>
	            </div>
              <div id="likers-container-218718" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="218718"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #50"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/40627/load_more?page=6">Load more posts (1 remaining)</a>
</div></template></turbo-stream>