<div dir="ltr"><div>Hi Orta,</div><div><br></div>We definitely want an installation story for SwiftPM. This is a pretty complex topic because, currently, we don&#39;t have support for things like resources, installing external dependencies, custom build requirement. That said, we can probably start by building something for simple executable packages. Before an implementation, we would need discuss a proposal and go through the swift-evolution process. Feel free to start a draft on swift-build-dev!<br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 14, 2017 at 10:45 PM, Orta Therox via swift-build-dev <span dir="ltr">&lt;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hey all,<div><br></div><div>I&#39;ve been working on a SwiftPM executable (<a href="https://github.com/danger/danger-swift" target="_blank">danger-swift</a>) which is a pretty small CLI tool. I feel like it&#39;s a bunch of work to allow a user to get a copy of the app running on their computer / CIs. My current app distributions options are: <a href="https://brew.sh" target="_blank">Homebrew</a> and <a href="https://github.com/JohnSundell/Marathon" target="_blank">Marathon</a> (which I added to homebrew) or a custom cURL&#39;d setup script. None are great, because it requires many build steps and require custom installers. </div><div><br></div><div>In an eco-system like Node/Ruby I can do something like &quot;<font face="monospace, monospace">npm install -g danger</font>&quot; which uses the centralized index, or  &quot;<font face="monospace, monospace">npm install -g danger/danger-js</font>&quot; if I wanted to use a repo which would install CLI tools. I&#39;d like to see SwiftPM cover this part of the swift ecosystem, and encourage building small CLI tools in swift.</div><div><br></div><div>So, as an example of behavior, running this new command: &quot;<font face="monospace, monospace">swift install danger/danger-swift</font>&quot; would:</div><div><br></div><div>- use the <span style="font-family:monospace,monospace">danger/danger-swift </span>a shortcut for GitHub, and clone that repo into a temporary folder</div><div>- parse the <a href="https://github.com/danger/danger-swift/blob/master/Package.swift" target="_blank">Package.swift</a> then let the user know they are going to install the CLI executable danger-swift</div><div>- run <span style="font-family:monospace,monospace">swift build </span>in release mode</div><div>- install the executable into a folder in the users default path</div><div><br></div><div>This greatly reduces the friction to making more tools, and reduces the number of dependencies for users to being the Xcode CLT which basically everyone has out of the box.</div><div><br></div><div>I&#39;m willing to take a stab at an implementation if this has approval of Anders/Daniel.<span class="gmail-HOEnZb"><font color="#888888"><br></font></span></div><span class="gmail-HOEnZb"><font color="#888888"><div><br></div><div><div><div class="gmail-m_7806818276979211587gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div style="color:rgb(0,0,0);font-family:Helvetica;margin:0px">-- </div><div style="color:rgb(0,0,0);font-family:Helvetica;margin:0px"><span style="color:rgb(35,35,35);font-size:12px">[A.]</span><span style="color:rgb(35,35,35);font-size:12px;white-space:pre-wrap">        </span>      <span style="color:rgb(35,35,35);font-size:12px">Orta Therox</span></div><div style="font-family:Helvetica;font-size:12px;margin:0px;color:rgb(35,35,35);min-height:14px"><blockquote style="color:rgb(0,0,0);font-size:medium;margin:0px 0px 0px 40px;border:none;padding:0px"><div style="word-wrap:break-word"><div style="word-wrap:break-word"><div style="margin:0px;font-size:12px;color:rgb(35,35,35);min-height:14px"><blockquote type="cite" style="border-left-color:rgb(0,33,98);color:rgb(0,33,98);border-width:1px;margin-left:0px;padding-left:10px;padding-right:0px;margin-right:0px"><span style="border-collapse:collapse;color:rgb(34,34,34)"><div style="margin:0px"><span style="color:rgb(136,136,136)">w/ </span><a href="http://artsy.net/" target="_blank">Artsy</a></div><div style="margin:0px"><a href="http://cocoapods.org/" target="_blank">CocoaPods</a> / <a href="http://cocoadocs.org/" target="_blank">CocoaDocs</a></div><div style="margin:0px"><a>@orta</a> / <a href="http://orta.github.com/" target="_blank">orta.github.com</a></div><div style="margin:0px"><br></div></span></blockquote></div></div></div></blockquote></div><div style="font-family:Helvetica;font-size:12px;margin:0px;color:rgb(35,35,35)"><br></div></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:medium"></span></div></div></div></div></div></div>
</div></font></span></div>
<br>______________________________<wbr>_________________<br>
swift-build-dev mailing list<br>
<a href="mailto:swift-build-dev@swift.org">swift-build-dev@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-build-<wbr>dev</a><br>
<br></blockquote></div><br></div></div>