From 6baadb98e96bb096726ab581379b7b14cf9f486d Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Thu, 10 Nov 2022 02:14:18 +0100 Subject: [PATCH] Add Cura. --- lib/require.rb | 1 + lib/tasks/brew.rake | 1 + lib/tasks/cura.rake | 46 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 lib/tasks/cura.rake diff --git a/lib/require.rb b/lib/require.rb index 6c5baca4..53be14ab 100644 --- a/lib/require.rb +++ b/lib/require.rb @@ -33,6 +33,7 @@ def require(name) concurrent-edge concurrent-ruby-ext concurrent-ruby-edge + iniparse plist vdf ].freeze diff --git a/lib/tasks/brew.rake b/lib/tasks/brew.rake index 415d7935..20c0fdfb 100644 --- a/lib/tasks/brew.rake +++ b/lib/tasks/brew.rake @@ -266,6 +266,7 @@ namespace :brew do 'textmate-solarized' => {}, 'transmission' => {}, 'unicodechecker' => {}, + 'ultimaker-cura' => {}, 'vagrant' => {}, 'vagrant-manager' => {}, 'visual-studio-code' => {}, diff --git a/lib/tasks/cura.rake b/lib/tasks/cura.rake new file mode 100644 index 00000000..7d083d61 --- /dev/null +++ b/lib/tasks/cura.rake @@ -0,0 +1,46 @@ +# frozen_string_literal: true + +require 'iniparse' +require 'json' + +MOONRAKER_INSTANCES = { + "Longer LK5 Pro" => { + api_key: "", + camera_url: "", + frontend_url: "", + output_format: "ufp", + power_device: "", + retry_interval: "", + trans_input: "", + trans_output: "", + trans_remove: "", + upload_autohide_messagebox: false, + upload_dialog: true, + upload_remember_state: false, + upload_start_print_job: false, + url: "http://lk5-pro.reiter.ooo/", + } +} + +task :cura => [:'brew:casks_and_formulae'] do + cura_version = JSON.parse(capture('brew', 'info', '--json=v2', '--cask', + 'ultimaker-cura')).fetch('casks').fetch(0).fetch('installed') + cura_version = cura_version.match(/\A(\d+\.\d+)\.\d+\Z/)[1] + + config_dir = Pathname("~/Library/Application Support/cura/#{cura_version}").expand_path + config_path = config_dir / 'cura.cfg' + + config = IniParse.parse(config_path.read) + + general_config = config.section('general') + general_config['accepted_user_agreement'] = true + general_config['auto_slice'] = false + general_config['theme'] = 'cura-dark' + + moonraker_config = config.section('moonraker') + moonraker_instances = moonraker_config['instances']&.yield_self { |json| JSON.parse(json) } || {} + moonraker_instances.merge!(MOONRAKER_INSTANCES) + moonraker_config['instances'] = moonraker_instances.to_json + + config_path.write config.to_ini +end