#!/usr/bin/env ruby require 'bundler/inline' require 'yaml' require 'securerandom' require 'date' $stdout.sync = true print "installing dependencies..." gemfile do source 'https://rubygems.org' gem 'bcrypt' end puts "done" salt = "" begin File.open("/project/docker-compose.override.yml") do |file| config = YAML.load(file) salt = config.dig("services", "dashboard-login", "environment", "MU_APPLICATION_SALT") throw "invalid salt" unless salt end rescue puts "Tried to locate login salt in docker-compose.override.yml, but couldn't find it." puts "Please make sure a salt is configured:" puts < PREFIX people: PREFIX accounts: PREFIX dcterms: PREFIX mu: PREFIX ext: PREFIX account: PREFIX xsd: INSERT DATA { GRAPH { people:#{person_uuid} a foaf:Person ; foaf:name "#{account_name}"; foaf:account accounts:#{account_uuid}; mu:uuid "#{person_uuid}"; dcterms:created "#{now}"^^xsd:datetime; dcterms:modified "#{now}"^^xsd:datetime. accounts:#{account_uuid} a foaf:OnlineAccount; foaf:accountName "#{account_name}"; mu:uuid "#{account_uuid}"; account:password """#{hashed_password}"""; account:salt "#{account_salt}"; account:status ; dcterms:created "#{now}"^^xsd:datetime; ext:sessionRole "dashboard-user"; dcterms:modified "#{now}"^^xsd:datetime. }} ) timestamp = DateTime.now.strftime("%Y%m%d%H%M%L") filename = "#{timestamp}-create-user-#{account_name.gsub(" ", "-")}.sparql" File.write("/project/config/migrations/local/#{filename}", query) puts "generated migration ./config/migrations/local/#{filename} for #{account_name.inspect} : #{password.inspect}"