about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorThibaut Girka <thib@sitedethib.com>2019-01-02 13:45:18 +0100
committerThibaut Girka <thib@sitedethib.com>2019-01-02 15:36:53 +0100
commit571d219bb917cefcca7419a0ad4e3889689d5f6a (patch)
tree6ab91adcb2c164fd027708e58f5fb96c52474007 /lib
parentb300948526d967aaf5608c93546ee0d54940c0ef (diff)
parent66436d08959998be20c6c6bf631177d8c1f3e0d1 (diff)
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts manually resolved:
- app/services/post_status_service.rb
- config/locales/simple_form.pl.yml
- config/routes.rb
- config/webpack/loaders/sass.js
- config/webpack/shared.js
- package.json
- yarn.lock
Diffstat (limited to 'lib')
-rw-r--r--lib/mastodon/accounts_cli.rb62
-rw-r--r--lib/tasks/emojis.rake4
2 files changed, 64 insertions, 2 deletions
diff --git a/lib/mastodon/accounts_cli.rb b/lib/mastodon/accounts_cli.rb
index b21968223..24fb67991 100644
--- a/lib/mastodon/accounts_cli.rb
+++ b/lib/mastodon/accounts_cli.rb
@@ -73,7 +73,7 @@ module Mastodon
     def create(username)
       account  = Account.new(username: username)
       password = SecureRandom.hex
-      user     = User.new(email: options[:email], password: password, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: Time.now.utc)
+      user     = User.new(email: options[:email], password: password, agreement: true, admin: options[:role] == 'admin', moderator: options[:role] == 'moderator', confirmed_at: options[:confirmed] ? Time.now.utc : nil)
 
       if options[:reattach]
         account = Account.find_local(username) || Account.new(username: username)
@@ -300,6 +300,66 @@ module Mastodon
       end
     end
 
+    desc 'follow ACCT', 'Make all local accounts follow account specified by ACCT'
+    long_desc <<-LONG_DESC
+      Make all local accounts follow an account specified by ACCT. ACCT can be
+      a simple username, in case of a local user. It can also be in the format
+      username@domain, in case of a remote user.
+    LONG_DESC
+    def follow(acct)
+      target_account = ResolveAccountService.new.call(acct)
+      processed      = 0
+      failed         = 0
+
+      if target_account.nil?
+        say("Target account (#{acct}) could not be resolved", :red)
+        exit(1)
+      end
+
+      Account.local.without_suspended.find_each do |account|
+        begin
+          FollowService.new.call(account, target_account)
+          processed += 1
+          say('.', :green, false)
+        rescue StandardError
+          failed += 1
+          say('.', :red, false)
+        end
+      end
+
+      say("OK, followed target from #{processed} accounts, skipped #{failed}", :green)
+    end
+
+    desc 'unfollow ACCT', 'Make all local accounts unfollow account specified by ACCT'
+    long_desc <<-LONG_DESC
+      Make all local accounts unfollow an account specified by ACCT. ACCT can be
+      a simple username, in case of a local user. It can also be in the format
+      username@domain, in case of a remote user.
+    LONG_DESC
+    def unfollow(acct)
+      target_account = Account.find_remote(*acct.split('@'))
+      processed      = 0
+      failed         = 0
+
+      if target_account.nil?
+        say("Target account (#{acct}) was not found", :red)
+        exit(1)
+      end
+
+      target_account.followers.local.find_each do |account|
+        begin
+          UnfollowService.new.call(account, target_account)
+          processed += 1
+          say('.', :green, false)
+        rescue StandardError
+          failed += 1
+          say('.', :red, false)
+        end
+      end
+
+      say("OK, unfollowed target from #{processed} accounts, skipped #{failed}", :green)
+    end
+
     private
 
     def rotate_keys_for_account(account, delay = 0)
diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake
index 625a6e55d..892afd898 100644
--- a/lib/tasks/emojis.rake
+++ b/lib/tasks/emojis.rake
@@ -15,7 +15,7 @@ end
 namespace :emojis do
   desc 'Generate a unicode to filename mapping'
   task :generate do
-    source = 'http://www.unicode.org/Public/emoji/5.0/emoji-test.txt'
+    source = 'http://www.unicode.org/Public/emoji/11.0/emoji-test.txt'
     codes  = []
     dest   = Rails.root.join('app', 'javascript', 'mastodon', 'features', 'emoji', 'emoji_map.json')
 
@@ -43,6 +43,8 @@ namespace :emojis do
     existence_maps.each do |group|
       existing_one = group.key(true)
 
+      next if existing_one.nil?
+
       group.each_key do |key|
         map[codepoints_to_unicode(key)] = codepoints_to_filename(existing_one)
       end