首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在终端中运行Ruby脚本?

如何在终端中运行Ruby脚本?
EN

Stack Overflow用户
提问于 2020-05-16 01:54:09
回答 1查看 41关注 0票数 0

我正在尝试运行一个由DHH共享的Ruby脚本(链接如下),以将一些Leica相机配置文件转换为.dcp M10相机配置文件。

我只是不确定如何运行它。我知道它需要在终端中运行,但仅此而已。

我在桌面上的一个文件夹里有所有的Leica Q相机配置文件...这次又是什么?

我已经下载了脚本注释中提到的DCP tool

这里有一个指向GitHub存储库的链接:https://gist.github.com/dhh/d3c8cf9309b662047257b7e583c3f595#file-dcp-converter-rb-L8

我知道这可能是非常基本的,但任何帮助都会非常感谢!

下面是实际的脚本:

代码语言:javascript
复制
#!/usr/bin/env ruby

# Requires that you have ./bin/dcpTool from https://sourceforge.net/projects/dcptool/

require 'rubygems'
require 'bundler/setup'
require 'nokogiri'

input_camera_model  = ARGV[0] || "LEICA Q (Typ 116)"
output_camera_model = ARGV[1] || "LEICA M10"

input_dir  = ARGV[2] || "./input"
output_dir = ARGV[3] || "./output"

def convert_profile_name(profile_name, input_camera_model, output_camera_model)
  File.basename(profile_name.gsub(/#{input_camera_model.gsub(/\(/, "\\(").gsub(/\)/, "\\)")}/, output_camera_model), ".dcp")
end

def replace_camera_model(xml_profile_filename, output_camera_model)
  profile_doc = Nokogiri::XML(File.read(xml_profile_filename))
  profile_doc.xpath('//UniqueCameraModelRestriction').first.content = output_camera_model  

  File.open(xml_profile_filename, "w+") { |file| file.write(profile_doc.to_xml) }
end

Dir.entries(input_dir).reject { |file| file =~ /^(\.|\.\.)$/ }.each do |existing_profile|
  converted_profile = convert_profile_name(existing_profile, input_camera_model, output_camera_model)
  existing_dcp_filename  = File.join(input_dir, existing_profile)
  xml_filename = "#{File.join(output_dir, converted_profile)}.xml"

  decompile_command = "./bin/dcpTool -d '#{existing_dcp_filename}' '#{xml_filename}'"

  puts "Decompiling #{existing_dcp_filename} into XML"
  `#{decompile_command}`

  puts "Replacing camera model: #{input_camera_model} -> #{output_camera_model}"
  replace_camera_model(xml_filename, output_camera_model)


  converted_dcp_filename = "#{File.join(output_dir, converted_profile)}.dcp"
  recompile_command = "./bin/dcpTool -c '#{xml_filename}' '#{converted_dcp_filename}'"

  puts "Recompiling XML into #{converted_dcp_filename}"
  `#{recompile_command}`

  File.delete(xml_filename)

  puts
end```
EN

回答 1

Stack Overflow用户

发布于 2020-05-16 02:13:34

最简单的方法:

  • 在与此脚本相同的位置创建"input“和"output”目录。
  • 将所有文件放在终端中的“input”
  • 中导航到此位置
  • 键入ruby dcp-converter.rb.

注意:您可能必须先运行gem install bundler nokogiri

如果您的模型与所示模型不同,则可能需要传递额外的参数,例如ruby dcp-converter.rb "LEICA Q (Typ 202)"

参数顺序为ruby dcp-converter.rb [input_model] [output_model] [input_directory] [output_directory]

默认值为

116)"

  • output_model="LEICA M10"

  • input_directory="./input"

  • output_directory="./output"

类型:

  • input_model = "LEICA Q(类型
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61825479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档