From 696c2c6f2f3338df121cf17389478da9ecab11af Mon Sep 17 00:00:00 2001
From: Daigo 3 Dango <zunda@users.noreply.github.com>
Date: Tue, 22 Aug 2017 20:54:19 +0000
Subject: [PATCH] Add Mastodon::Source.url (#4643)

* Add Mastodon::Source.url

* Update spec

* Refactor

Move things frmo Mastodon::Source to Mastodon::Version
---
 app/presenters/instance_presenter.rb    |  4 ++++
 app/views/about/more.html.haml          |  4 ++--
 app/views/about/show.html.haml          |  4 ++--
 lib/mastodon/version.rb                 | 17 +++++++++++++++++
 spec/views/about/show.html.haml_spec.rb |  1 +
 5 files changed, 26 insertions(+), 4 deletions(-)

diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index 5d5be58ba..8104b7531 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -31,4 +31,8 @@ class InstancePresenter
   def version_number
     Mastodon::Version
   end
+
+  def source_url
+    Mastodon::Version.source_url
+  end
 end
diff --git a/app/views/about/more.html.haml b/app/views/about/more.html.haml
index a6fd265fa..094188472 100644
--- a/app/views/about/more.html.haml
+++ b/app/views/about/more.html.haml
@@ -63,5 +63,5 @@
   .footer-links
     .container
       %p
-        = link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon'
-        = " (#{@instance_presenter.version_number})"
\ No newline at end of file
+        = link_to t('about.source_code'), @instance_presenter.source_url
+        = " (#{@instance_presenter.version_number})"
diff --git a/app/views/about/show.html.haml b/app/views/about/show.html.haml
index acdb12ad7..93270fe3d 100644
--- a/app/views/about/show.html.haml
+++ b/app/views/about/show.html.haml
@@ -76,5 +76,5 @@
   .footer-links
     .container
       %p
-        = link_to t('about.source_code'), 'https://github.com/tootsuite/mastodon'
-        = " (#{@instance_presenter.version_number})"
\ No newline at end of file
+        = link_to t('about.source_code'), @instance_presenter.source_url
+        = " (#{@instance_presenter.version_number})"
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 381e9aac9..fcca875d9 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -31,5 +31,22 @@ module Mastodon
     def to_s
       [to_a.join('.'), flags].join
     end
+
+    def source_base_url
+      'https://github.com/tootsuite/mastodon'
+    end
+
+    # specify git tag or commit hash here
+    def source_tag
+      nil
+    end
+
+    def source_url
+      if source_tag
+        "#{source_base_url}/tree/#{source_tag}"
+      else
+        source_base_url
+      end
+    end
   end
 end
diff --git a/spec/views/about/show.html.haml_spec.rb b/spec/views/about/show.html.haml_spec.rb
index c0ead6349..aa151dd27 100644
--- a/spec/views/about/show.html.haml_spec.rb
+++ b/spec/views/about/show.html.haml_spec.rb
@@ -13,6 +13,7 @@ describe 'about/show.html.haml', without_verify_partial_doubles: true do
                                 site_title: 'something',
                                 site_description: 'something',
                                 version_number: '1.0',
+                                source_url: 'https://github.com/tootsuite/mastodon',
                                 open_registrations: false,
                                 closed_registrations_message: 'yes')
     assign(:instance_presenter, instance_presenter)