xezat 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +1 -1
  3. data/.rubocop.yml +1 -0
  4. data/lib/xezat.rb +3 -3
  5. data/lib/xezat/command/announce.rb +22 -0
  6. data/lib/xezat/command/bump.rb +1 -1
  7. data/lib/xezat/command/bump/changelog.rb +8 -2
  8. data/lib/xezat/command/bump/compiler.rb +1 -1
  9. data/lib/xezat/command/bump/cygport_dep.rb +1 -1
  10. data/lib/xezat/command/bump/development_package.rb +1 -1
  11. data/lib/xezat/command/bump/file.rb +2 -2
  12. data/lib/xezat/command/bump/language.rb +1 -1
  13. data/lib/xezat/command/bump/runtime_package.rb +1 -1
  14. data/lib/xezat/command/bump/src_uri.rb +1 -1
  15. data/lib/xezat/command/doctor.rb +0 -2
  16. data/lib/xezat/command/port.rb +1 -1
  17. data/lib/xezat/command/validate.rb +68 -6
  18. data/lib/xezat/cygchangelog.rb +6 -4
  19. data/lib/xezat/cygversion.rb +6 -1
  20. data/lib/xezat/detector/asciidoc.rb +20 -0
  21. data/lib/xezat/detector/autoconf.rb +1 -1
  22. data/lib/xezat/detector/boost.m4.rb +1 -1
  23. data/lib/xezat/detector/cmake.rb +1 -1
  24. data/lib/xezat/detector/libtool.rb +2 -2
  25. data/lib/xezat/detector/make.rb +1 -1
  26. data/lib/xezat/detector/nasm.rb +16 -0
  27. data/lib/xezat/detector/ninja.rb +1 -1
  28. data/lib/xezat/detector/{python36-docutils.rb → python38-docutils.rb} +7 -2
  29. data/lib/xezat/detector/python38.rb +13 -0
  30. data/lib/xezat/detector/waf.rb +1 -1
  31. data/lib/xezat/detectors.rb +4 -4
  32. data/lib/xezat/generator/pkgconfig.rb +1 -1
  33. data/lib/xezat/main.rb +7 -0
  34. data/lib/xezat/packages.rb +1 -1
  35. data/lib/xezat/variables.rb +5 -4
  36. data/lib/xezat/version.rb +1 -1
  37. data/share/xezat/categories.yaml +51 -0
  38. data/share/xezat/repository/sourceforge.json +1 -1
  39. data/share/xezat/template/announce.erb +7 -0
  40. data/xezat.gemspec +1 -2
  41. metadata +11 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ce894f06157cf37deb9e4e97f41da557c51a0a4af3b6c81caede3ee88f2f018
4
- data.tar.gz: 5dba5ffae008660e41e8f2ec9c0e8940f05e5d1b7be432d013be58b84439627d
3
+ metadata.gz: 11d74a143e7b6c2d39ab8ee1698400adb87044e0ca8b3cfb8ef60df08641c0e6
4
+ data.tar.gz: 5f1ac17b9895d6c80aa15e27eeabd82e6678144097c92ccd9cb1021773b5c15b
5
5
  SHA512:
6
- metadata.gz: 1bb76ee8cc4c1a9717f6f07403c741eb9d09e819db8f08505a34f55a04374834bf1f0b45d724b968450f9d48a3c772214305f036fe5b39400d02338fe5207ae3
7
- data.tar.gz: 4eb4b364e0e5baf15de4a9c5b486494c8efe84c4ffa71624b55a78c30cd34d224a66c9beb8ae759c7b688347d75eb9a4d5d0ad615bcbad5167551ea8326e9a64
6
+ metadata.gz: 5b14c63cecba36080b1ad95b3669cd2d837c22389e8074c5948d56ef134d1082eca62b0c7f2f16c7fac3b6d64581bc95defe4a2777efe1240a70b6763d8a6cf0
7
+ data.tar.gz: 71ae49dc2ee4282fc949538ed2176140d81b7950edbf12e965527fb005409fed9fcde547a6255eb0c4851372c3f14e12b7bc276a509755a5d15a5ba1a6ba71bc
data/.circleci/config.yml CHANGED
@@ -7,7 +7,7 @@ jobs:
7
7
  build:
8
8
  docker:
9
9
  # specify the version you desire here
10
- - image: circleci/ruby
10
+ - image: circleci/ruby:2.6
11
11
 
12
12
  working_directory: ~/repo
13
13
 
data/.rubocop.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  require: rubocop-performance
2
2
 
3
3
  AllCops:
4
+ NewCops: enable
4
5
  TargetRubyVersion: 2.6
5
6
  Exclude:
6
7
  - 'spec/cygport/**/*'
data/lib/xezat.rb CHANGED
@@ -12,9 +12,9 @@ module Xezat
12
12
  class << self
13
13
  attr_accessor :logger
14
14
  end
15
- Xezat.logger = Logger.new(STDOUT)
16
- Xezat.logger.formatter = proc { |_severity, datetime, _progname, message|
17
- "#{datetime}: #{message}\n"
15
+ Xezat.logger = Logger.new($stdout)
16
+ Xezat.logger.formatter = proc { |severity, datetime, _progname, message|
17
+ "#{datetime}: [#{severity}] #{message}\n"
18
18
  }
19
19
 
20
20
  class CygportProcessError < StandardError
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'xezat/variables'
4
+
5
+ module Xezat
6
+ module Command
7
+ class Announce
8
+ include Xezat
9
+
10
+ def initialize(options, cygport)
11
+ @options = options
12
+ @cygport = cygport
13
+ end
14
+
15
+ def execute
16
+ variables = variables(@cygport)
17
+ erb = File.expand_path(File.join(TEMPLATE_DIR, 'announce.erb'))
18
+ print ERB.new(File.readlines(erb).join(nil), trim_mode: '%-').result(binding).chop # remove redundant new line
19
+ end
20
+ end
21
+ end
22
+ end
@@ -38,7 +38,7 @@ module Xezat
38
38
  changelog: get_changelog(vars, @options, readme_file)
39
39
  }
40
40
 
41
- Xezat.logger.debug('Write ChangeLog atomically')
41
+ Xezat.logger.debug(' Write ChangeLog atomically')
42
42
  File.atomic_write(readme_file) do |f|
43
43
  f.write(get_embedded_contents(vars, info))
44
44
  end
@@ -9,7 +9,7 @@ module Xezat
9
9
  module Command
10
10
  class Bump
11
11
  def get_changelog(variables, options, readme_file)
12
- Xezat.logger.debug('Append latest log to changelog')
12
+ Xezat.logger.debug(' Try to append latest log to changelog...')
13
13
  current_version = variables[:PVR].intern
14
14
  if FileTest.exist?(readme_file)
15
15
  raise FilePermissionError, "Cannot read #{readme_file}" unless FileTest.readable?(readme_file)
@@ -17,10 +17,16 @@ module Xezat
17
17
 
18
18
  changelog = Cygchangelog.new(File.read(readme_file))
19
19
  message = options['message'] || 'Version bump.'
20
- changelog[current_version] = message unless changelog.key?(current_version)
20
+ if changelog.length > 1 || !changelog.key?(current_version)
21
+ changelog[current_version] = message # overwrite unless initial package
22
+ Xezat.logger.debug(" '#{message}' appended")
23
+ else
24
+ Xezat.logger.warn(' Initial release protected')
25
+ end
21
26
  else
22
27
  changelog = Cygchangelog.new
23
28
  changelog[current_version] = 'Initial release by fd0 <https://github.com/fd00/>'
29
+ Xezat.logger.debug(' Initial release by you')
24
30
  end
25
31
  changelog
26
32
  end
@@ -6,7 +6,7 @@ module Xezat
6
6
  module Command
7
7
  class Bump
8
8
  def get_compilers(languages, _variables)
9
- Xezat.logger.debug('Collect compilers')
9
+ Xezat.logger.debug(' Collect compilers')
10
10
  compiler_file = File.expand_path(File.join(DATA_DIR, 'compilers.json'))
11
11
  compiler_candidates = JSON.parse(File.read(compiler_file))
12
12
  compilers = []
@@ -15,7 +15,7 @@ module Xezat
15
15
  File.dirname(file)
16
16
  end.sort.uniq.join(':')
17
17
  command = ['bash', File.expand_path(File.join(DATA_DIR, 'invoke_cygport_dep.sh')), cygport]
18
- result, error, status = Open3.capture3({ 'PATH' => ENV['PATH'] + ':' + additional_path }, command.join(' '))
18
+ result, error, status = Open3.capture3({ 'PATH' => "#{ENV['PATH']}:#{additional_path}" }, command.join(' '))
19
19
  raise CygportProcessError, error unless status.success?
20
20
 
21
21
  result
@@ -9,7 +9,7 @@ module Xezat
9
9
  module Command
10
10
  class Bump
11
11
  def get_development_packages(variables, packages)
12
- Xezat.logger.debug('Collect development packages')
12
+ Xezat.logger.debug(' Collect development packages')
13
13
  compilers = get_compilers(get_languages(variables[:S]), variables)
14
14
  tools = get_tools(variables)
15
15
  development_packages = (compilers + tools + [:cygport]).uniq.sort
@@ -9,10 +9,10 @@ module Xezat
9
9
  module Command
10
10
  class Bump
11
11
  def get_files(variables)
12
- Xezat.logger.debug('Collect files')
12
+ Xezat.logger.debug(' Collect files')
13
13
  pkg2files = {}
14
14
  variables[:pkg_name].each do |pkg_name|
15
- Xezat.logger.debug(" Collect #{pkg_name}")
15
+ Xezat.logger.debug(" Collect #{pkg_name}")
16
16
  lst_file = File.expand_path(File.join(variables[:T], ".#{pkg_name}.lst"))
17
17
  raise IllegalStateError, "No such file: #{lst_file}" unless FileTest.readable?(lst_file)
18
18
 
@@ -7,7 +7,7 @@ module Xezat
7
7
  module Command
8
8
  class Bump
9
9
  def get_languages(top_src_dir)
10
- Xezat.logger.debug('Collect languages')
10
+ Xezat.logger.debug(' Collect languages')
11
11
  languages_file = File.expand_path(File.join(DATA_DIR, 'languages.json'))
12
12
  languages_candidates = JSON.parse(File.read(languages_file))
13
13
  languages = []
@@ -8,7 +8,7 @@ module Xezat
8
8
  module Command
9
9
  class Bump
10
10
  def get_runtime_packages(vars, cygport)
11
- Xezat.logger.debug('Collect runtime packages from cygport dep')
11
+ Xezat.logger.debug(' Collect runtime packages from cygport dep')
12
12
  result = invoke_cygport_dep(vars, cygport)
13
13
  result.gsub(/^.*\*\*\*.*$/, '').split($INPUT_RECORD_SEPARATOR).map(&:lstrip)
14
14
  end
@@ -7,7 +7,7 @@ module Xezat
7
7
  module Command
8
8
  class Bump
9
9
  def get_src_uri(vars, cygclasses = CygclassManager.new)
10
- Xezat.logger.debug('Collect SRC_URI')
10
+ Xezat.logger.debug(' Collect SRC_URI')
11
11
  cygclasses.vcs.each do |vcs|
12
12
  next unless vars.key?("_#{vcs}_CYGCLASS_".intern)
13
13
 
@@ -7,8 +7,6 @@ module Xezat
7
7
  class Doctor
8
8
  include Xezat
9
9
 
10
- def initialize; end
11
-
12
10
  def execute
13
11
  get_contents_uniqueness.each do |path, pkg|
14
12
  puts "#{path} is not unique: #{pkg}" if pkg.length > 1
@@ -43,7 +43,7 @@ module Xezat
43
43
  port_dir = conf['xezat']['portdir'] || options[:portdir]
44
44
  raise NoPortDirectoryError if port_dir.nil?
45
45
 
46
- Xezat.logger.debug("Port directory: #{port_dir}")
46
+ Xezat.logger.debug(" Port directory: #{port_dir}")
47
47
  port_dir
48
48
  end
49
49
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'net/http'
3
4
  require 'pkg-config'
5
+ require 'uri'
4
6
  require 'xezat/variables'
5
7
 
6
8
  module Xezat
@@ -16,22 +18,82 @@ module Xezat
16
18
  def execute
17
19
  Xezat.logger.debug('Start validating')
18
20
  vars = variables(@cygport)
21
+
22
+ Xezat.logger.debug(' Validate .cygport')
23
+ validate_cygport(@cygport)
24
+
25
+ Xezat.logger.debug(' Validate category')
26
+ validate_category(vars[:CATEGORY])
27
+
28
+ Xezat.logger.debug(' Validate homepage')
29
+ validate_homepage(vars[:HOMEPAGE])
30
+
31
+ Xezat.logger.debug(' Validate *.pc')
19
32
  validate_pkgconfig(vars)
33
+
20
34
  Xezat.logger.debug('End validating')
21
35
  end
22
36
 
37
+ def validate_cygport(cygport)
38
+ original_string = File.read(cygport)
39
+ stripped_string = original_string.gsub(/^\xEF\xBB\xBF/, '')
40
+ Xezat.logger.error(' .cygport contains BOM') unless original_string == stripped_string
41
+ end
42
+
43
+ def validate_category(category)
44
+ categories_file = File.expand_path(File.join(DATA_DIR, 'categories.yaml'))
45
+ Xezat.logger.error(" Category is invalid : #{category}") unless YAML.safe_load(File.open(categories_file), [Symbol]).include?(category.downcase)
46
+ end
47
+
48
+ def validate_homepage(homepage)
49
+ response = Net::HTTP.get_response(URI.parse(homepage))
50
+ code = response.code
51
+ if code == '200'
52
+ Xezat.logger.debug(" code = #{response.code}")
53
+ else
54
+ Xezat.logger.error(" code = #{response.code}")
55
+ end
56
+ end
57
+
23
58
  def validate_pkgconfig(variables)
24
59
  pkgconfig_path = File.join(variables[:D], 'usr', 'lib', 'pkgconfig')
25
60
  PKGConfig.add_path(pkgconfig_path)
26
61
  Dir.glob('*.pc', 0, base: pkgconfig_path).each do |pc|
27
62
  basename = File.basename(pc, '.pc')
28
- Xezat.logger.debug(" #{basename}.pc found")
63
+ Xezat.logger.debug(" #{basename}.pc found")
29
64
  modversion = PKGConfig.modversion(basename)
30
- Xezat.logger.debug(" modversion = #{modversion}")
31
- pv = variables[:PV][0]
32
- Xezat.logger.error(" modversion differs from $PN = #{pv}") unless modversion == pv
33
- Xezat.logger.debug(" cflags = #{PKGConfig.cflags(basename)}")
34
- Xezat.logger.debug(" libs = #{PKGConfig.libs(basename)}")
65
+ Xezat.logger.debug(" modversion = #{modversion}")
66
+ pv = variables[:PV][0].gsub(/\+.+$/, '')
67
+ Xezat.logger.error(" modversion differs from $PN = #{pv}") unless modversion == pv
68
+ Xezat.logger.debug(" cflags = #{PKGConfig.cflags(basename)}")
69
+ libs = PKGConfig.libs(basename)
70
+ Xezat.logger.debug(" libs = #{libs}")
71
+ validate_libs(variables, libs)
72
+ end
73
+ end
74
+
75
+ def validate_libs(variables, libs)
76
+ lib_dirs = [File.join(variables[:D], '/usr/lib'), '/usr/lib', '/usr/lib/w32api', '/usr/lib/gcc/x86_64-pc-cygwin/10']
77
+ libs.split do |option|
78
+ if option.start_with?('-l')
79
+ lib_name = option[2, 255] # Assume file length limit
80
+ found = false
81
+ lib_dirs.each do |dir|
82
+ archive_path = File.join(dir, "lib#{lib_name}.dll.a")
83
+ if File.exist?(archive_path)
84
+ Xezat.logger.debug(" #{lib_name} -> #{archive_path.gsub(variables[:D], '$D')}")
85
+ found = true
86
+ break
87
+ end
88
+ static_path = File.join(dir, "lib#{lib_name}.a")
89
+ next unless File.exist?(static_path)
90
+
91
+ Xezat.logger.debug(" #{lib_name} -> #{static_path}")
92
+ found = true
93
+ break
94
+ end
95
+ Xezat.logger.error(" #{lib_name} not found") unless found
96
+ end
35
97
  end
36
98
  end
37
99
  end
@@ -48,13 +48,15 @@ module Xezat
48
48
  @changelogs.key?(key)
49
49
  end
50
50
 
51
- def each
51
+ def each(&block)
52
52
  logs = @changelogs.sort do |a, b|
53
53
  -(Cygversion.new(a[0].to_s) <=> Cygversion.new(b[0].to_s))
54
54
  end
55
- logs.each do |k, v|
56
- yield(k, v)
57
- end
55
+ logs.each(&block)
56
+ end
57
+
58
+ def length
59
+ @changelogs.length
58
60
  end
59
61
  end
60
62
  end
@@ -15,6 +15,8 @@ module Xezat
15
15
 
16
16
  def to_v
17
17
  [Gem::Version.new(@version), @revision, @release]
18
+ rescue ArgumentError
19
+ to_a
18
20
  end
19
21
 
20
22
  def to_a
@@ -22,7 +24,10 @@ module Xezat
22
24
  end
23
25
 
24
26
  def <=>(other)
25
- to_v <=> other.to_v
27
+ result = (to_v <=> other.to_v)
28
+ return result unless result.nil?
29
+
30
+ (to_a <=> other.to_a)
26
31
  end
27
32
  end
28
33
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'find'
4
+
5
+ module Xezat
6
+ module Detector
7
+ class Asciidoc
8
+ def detect(variables)
9
+ Find.find(variables[:S]) do |file|
10
+ next unless file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
11
+
12
+ File.foreach(file) do |line|
13
+ return true if line.include?('asciidoc')
14
+ end
15
+ end
16
+ false
17
+ end
18
+ end
19
+ end
20
+ end
@@ -7,7 +7,7 @@ module Xezat
7
7
  class Autoconf
8
8
  def detect(variables)
9
9
  Find.find(variables[:S]) do |file|
10
- return true if file.end_with?(File::SEPARATOR + 'configure.ac') || file.end_with?(File::SEPARATOR + 'configure.in')
10
+ return true if file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
11
11
  end
12
12
  false
13
13
  end
@@ -7,7 +7,7 @@ module Xezat
7
7
  class BoostM4
8
8
  def detect(variables)
9
9
  Find.find(variables[:S]) do |file|
10
- next unless file.end_with?(File::SEPARATOR + 'configure.ac') || file.end_with?(File::SEPARATOR + 'configure.in')
10
+ next unless file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
11
11
 
12
12
  File.foreach(file) do |line|
13
13
  return true if line.lstrip.start_with?('BOOST_REQUIRE')
@@ -7,7 +7,7 @@ module Xezat
7
7
  class Cmake
8
8
  def detect(variables)
9
9
  Find.find(variables[:S]) do |file|
10
- return true if file.end_with?(File::SEPARATOR + 'CMakeLists.txt')
10
+ return true if file.end_with?("#{File::SEPARATOR}CMakeLists.txt")
11
11
  end
12
12
  false
13
13
  end
@@ -7,10 +7,10 @@ module Xezat
7
7
  class Libtool
8
8
  def detect(variables)
9
9
  Find.find(variables[:S]) do |file|
10
- return true if file.end_with?(File::SEPARATOR + 'ltmain.sh')
10
+ return true if file.end_with?("#{File::SEPARATOR}ltmain.sh")
11
11
  end
12
12
  Find.find(variables[:S]) do |file|
13
- next unless file.end_with?(File::SEPARATOR + 'Makefile') || file.end_with?(File::SEPARATOR + 'makefile')
13
+ next unless file.end_with?("#{File::SEPARATOR}Makefile", "#{File::SEPARATOR}makefile")
14
14
  next if File.directory?(file)
15
15
 
16
16
  File.foreach(file) do |line|
@@ -7,7 +7,7 @@ module Xezat
7
7
  class Make
8
8
  def detect(variables)
9
9
  Find.find(variables[:B]) do |file|
10
- return true if file.end_with?(File::SEPARATOR + 'Makefile') || file.end_with?(File::SEPARATOR + 'makefile')
10
+ return true if file.end_with?("#{File::SEPARATOR}Makefile", "#{File::SEPARATOR}makefile")
11
11
  end
12
12
  File.foreach(File.join(variables[:top], variables[:cygportfile])) do |line|
13
13
  return true if line.index('cygmake')
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Xezat
4
+ module Detector
5
+ class Nasm
6
+ def detect(variables)
7
+ if variables.key?(:_meson_CYGCLASS_)
8
+ File.foreach(File.join(variables[:S], 'meson.build')) do |line|
9
+ return true if line.include?("find_program('nasm')")
10
+ end
11
+ end
12
+ false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -9,7 +9,7 @@ module Xezat
9
9
  return true if variables.key?(:_meson_CYGCLASS_)
10
10
 
11
11
  Find.find(variables[:B]) do |file|
12
- return true if file.end_with?(File::SEPARATOR + 'build.ninja')
12
+ return true if file.end_with?("#{File::SEPARATOR}build.ninja")
13
13
  end
14
14
  false
15
15
  end
@@ -4,15 +4,20 @@ require 'find'
4
4
 
5
5
  module Xezat
6
6
  module Detector
7
- class Python36Docutils
7
+ class Python38Docutils
8
8
  def detect(variables)
9
9
  Find.find(variables[:S]) do |file|
10
- next unless file.end_with?(File::SEPARATOR + 'configure.ac') || file.end_with?(File::SEPARATOR + 'configure.in')
10
+ next unless file.end_with?("#{File::SEPARATOR}configure.ac", "#{File::SEPARATOR}configure.in")
11
11
 
12
12
  File.foreach(file) do |line|
13
13
  return true if line.strip.start_with?('AC_CHECK_PROG') && line.index('rst2man').is_a?(Integer)
14
14
  end
15
15
  end
16
+ if variables.key?(:_meson_CYGCLASS_)
17
+ File.foreach(File.join(variables[:S], 'meson.build')) do |line|
18
+ return true if line.strip.index('rst2man').is_a?(Integer)
19
+ end
20
+ end
16
21
  false
17
22
  end
18
23
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'find'
4
+
5
+ module Xezat
6
+ module Detector
7
+ class Python38
8
+ def detect(variables)
9
+ File.directory?(File.join(variables[:D], 'usr', 'lib', 'python3.8'))
10
+ end
11
+ end
12
+ end
13
+ end
@@ -6,7 +6,7 @@ module Xezat
6
6
  def detect(variables)
7
7
  if variables.key?(:_waf_CYGCLASS_)
8
8
  Find.find(variables[:S]) do |file|
9
- return false if file.end_with?(File::SEPARATOR + 'waf')
9
+ return false if file.end_with?("#{File::SEPARATOR}waf")
10
10
  end
11
11
  return true
12
12
  end
@@ -6,7 +6,7 @@ require 'xezat/ext/string'
6
6
  module Xezat
7
7
  class DetectorManager
8
8
  def initialize(detector_dir = File.expand_path(File.join(File.dirname(__FILE__), 'detector')))
9
- Xezat.logger.debug('Load detectors')
9
+ Xezat.logger.debug(' Load detectors')
10
10
  @detectors = {}
11
11
  Dir.glob(File.join(detector_dir, '*.rb')).sort.each do |rb|
12
12
  require rb
@@ -15,14 +15,14 @@ module Xezat
15
15
  end
16
16
 
17
17
  def detect(variables)
18
- Xezat.logger.debug('Detect tools')
18
+ Xezat.logger.debug(' Detect tools')
19
19
  tools = []
20
20
  @detectors.each do |name, detector|
21
21
  if detector.detect(variables)
22
22
  tools << name
23
- Xezat.logger.debug(" #{name} ... yes")
23
+ Xezat.logger.debug(" #{name} ... yes")
24
24
  else
25
- Xezat.logger.debug(" #{name} ... no")
25
+ Xezat.logger.debug(" #{name} ... no")
26
26
  end
27
27
  end
28
28
  if tools.include?(:python27) && (tools.include?(:python36) || tools.include?(:python37))
@@ -73,7 +73,7 @@ module Xezat
73
73
 
74
74
  return if /#{pn}.pc/.match?(original_ac)
75
75
 
76
- original_ac.gsub!(/(AC_CONFIG_FILES\(\[)/, '\1' + "#{pn}.pc ")
76
+ original_ac.gsub!(/(AC_CONFIG_FILES\(\[)/, "\\1#{"#{pn}.pc "}")
77
77
  File.atomic_write(configure_ac) do |fa|
78
78
  fa.write(original_ac)
79
79
 
data/lib/xezat/main.rb CHANGED
@@ -67,5 +67,12 @@ module Xezat
67
67
  require 'xezat/command/validate'
68
68
  Command::Validate.new(nil, cygport).execute
69
69
  end
70
+
71
+ desc 'announce cygport', 'Show announce'
72
+
73
+ def announce(cygport)
74
+ require 'xezat/command/announce'
75
+ Command::Announce.new(nil, cygport).execute
76
+ end
70
77
  end
71
78
  end
@@ -4,7 +4,7 @@ require 'xezat'
4
4
 
5
5
  module Xezat
6
6
  def packages(db_path = '/etc/setup/installed.db')
7
- Xezat.logger.debug("Collect installed packages from #{db_path}")
7
+ Xezat.logger.debug(" Collect installed packages from #{db_path}")
8
8
  raise ArgumentError, "#{db_path} not found" unless File.exist?(db_path)
9
9
 
10
10
  packages = {}
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'etc'
3
4
  require 'facets/file/atomic_write'
4
5
  require 'facets/string/word_wrap'
5
6
  require 'open3'
@@ -10,12 +11,12 @@ require 'xezat'
10
11
  module Xezat
11
12
  def variables(cygport)
12
13
  cygport_dir = File.dirname(File.absolute_path(cygport))
13
- cache_file = File.expand_path(File.join(cygport_dir, File.basename(cygport, '.cygport') + '.cache.yml'))
14
+ cache_file = File.expand_path(File.join(cygport_dir, "#{File.basename(cygport, '.cygport')}.#{Etc.uname[:machine]}.yml"))
14
15
 
15
- Xezat.logger.debug('Extract variables')
16
+ Xezat.logger.debug(' Extract variables')
16
17
 
17
18
  if File.exist?(cache_file) && File.ctime(cache_file) > File.ctime(cygport)
18
- Xezat.logger.debug(' Read cache for variables')
19
+ Xezat.logger.debug(' Read cache for variables')
19
20
  return YAML.safe_load(File.open(cache_file), [Symbol]).each do |k, v|
20
21
  v.strip! if v.respond_to?(:strip) && k != :DESCRIPTION
21
22
  end
@@ -33,7 +34,7 @@ module Xezat
33
34
  variables[:DESCRIPTION].word_wrap!(79)
34
35
 
35
36
  File.atomic_write(cache_file) do |f|
36
- Xezat.logger.debug(' Write cache for variables')
37
+ Xezat.logger.debug(' Write cache for variables')
37
38
  f.write(YAML.dump(variables))
38
39
  end
39
40
 
data/lib/xezat/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Xezat
4
- VERSION = '0.2.0'
4
+ VERSION = '0.2.1'
5
5
  end
@@ -0,0 +1,51 @@
1
+ ---
2
+ - accessibility
3
+ - admin
4
+ - archive
5
+ - audio
6
+ - base
7
+ - benchmark
8
+ - comm
9
+ - database
10
+ - debug
11
+ - devel
12
+ - doc
13
+ - editors
14
+ - emulators
15
+ - games
16
+ - gnome
17
+ - graphics
18
+ - interpreters
19
+ - kde
20
+ - libs
21
+ - lua
22
+ - lxde
23
+ - mail
24
+ - mate
25
+ - math
26
+ - mingw
27
+ - net
28
+ - ocaml
29
+ - office
30
+ - perl
31
+ - php
32
+ - publishing
33
+ - python
34
+ - ruby
35
+ - scheme
36
+ - science
37
+ - security
38
+ - shells
39
+ - sound
40
+ - source
41
+ - sugar
42
+ - system
43
+ - tcl
44
+ - text
45
+ - utils
46
+ - video
47
+ - web
48
+ - x11
49
+ - xfce
50
+ - _obsolete
51
+ - _postinstalllast
@@ -1,5 +1,5 @@
1
1
  {
2
- "HOMEPAGE": "https://${PN}.sourceforge.io/",
2
+ "HOMEPAGE": "https://sourceforge.net/projects/${PN}",
3
3
  "SRC_URI": "mirror://sourceforge/${PN}/${P}.tar.gz",
4
4
  "SVN_URI": "svn://svn.code.sf.net/p/${PN}/code",
5
5
  "GIT_URI": "git://git.code.sf.net/p/${PN}/code"
@@ -0,0 +1,7 @@
1
+ The following packages have been uploaded to the Cygwin distribution:
2
+
3
+ <% variables[:pkg_name].each { |pkg_name| -%>
4
+ * <%= pkg_name + '-' + variables[:PVR] %>
5
+ <% } -%>
6
+
7
+ <%= variables[:DESCRIPTION] %>
data/xezat.gemspec CHANGED
@@ -25,8 +25,7 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  spec.add_runtime_dependency 'facets', '>= 3.1.0'
27
27
  spec.add_runtime_dependency 'github-linguist', '>= 7.11.0'
28
- spec.add_runtime_dependency 'io-console', '>= 0.5.6'
29
- spec.add_runtime_dependency 'pkg-config', '>= 1.4.2'
28
+ spec.add_runtime_dependency 'pkg-config', '>= 1.4.4'
30
29
  spec.add_runtime_dependency 'thor', '>= 0.20.3'
31
30
  spec.add_runtime_dependency 'thor-zsh_completion', '>= 0.1.7'
32
31
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xezat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daisuke Fujimura (fd0)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-20 00:00:00.000000000 Z
11
+ date: 2021-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: facets
@@ -38,34 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 7.11.0
41
- - !ruby/object:Gem::Dependency
42
- name: io-console
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 0.5.6
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: 0.5.6
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: pkg-config
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - ">="
60
46
  - !ruby/object:Gem::Version
61
- version: 1.4.2
47
+ version: 1.4.4
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - ">="
67
53
  - !ruby/object:Gem::Version
68
- version: 1.4.2
54
+ version: 1.4.4
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: thor
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -228,6 +214,7 @@ files:
228
214
  - bin/setup
229
215
  - exe/xezat
230
216
  - lib/xezat.rb
217
+ - lib/xezat/command/announce.rb
231
218
  - lib/xezat/command/bump.rb
232
219
  - lib/xezat/command/bump/changelog.rb
233
220
  - lib/xezat/command/bump/compiler.rb
@@ -250,6 +237,7 @@ files:
250
237
  - lib/xezat/cygversion.rb
251
238
  - lib/xezat/debugger/linguist.rb
252
239
  - lib/xezat/debugger/variable.rb
240
+ - lib/xezat/detector/asciidoc.rb
253
241
  - lib/xezat/detector/autoconf.rb
254
242
  - lib/xezat/detector/automake.rb
255
243
  - lib/xezat/detector/boost.m4.rb
@@ -262,11 +250,13 @@ files:
262
250
  - lib/xezat/detector/libtool.rb
263
251
  - lib/xezat/detector/make.rb
264
252
  - lib/xezat/detector/meson.rb
253
+ - lib/xezat/detector/nasm.rb
265
254
  - lib/xezat/detector/ninja.rb
266
255
  - lib/xezat/detector/python27.rb
267
- - lib/xezat/detector/python36-docutils.rb
268
256
  - lib/xezat/detector/python36.rb
269
257
  - lib/xezat/detector/python37.rb
258
+ - lib/xezat/detector/python38-docutils.rb
259
+ - lib/xezat/detector/python38.rb
270
260
  - lib/xezat/detector/roundup.rb
271
261
  - lib/xezat/detector/waf.rb
272
262
  - lib/xezat/detectors.rb
@@ -277,6 +267,7 @@ files:
277
267
  - lib/xezat/packages.rb
278
268
  - lib/xezat/variables.rb
279
269
  - lib/xezat/version.rb
270
+ - share/xezat/categories.yaml
280
271
  - share/xezat/compilers.json
281
272
  - share/xezat/invoke_cygport_dep.sh
282
273
  - share/xezat/languages.json
@@ -287,6 +278,7 @@ files:
287
278
  - share/xezat/show_cygport_variable.sh
288
279
  - share/xezat/template/Makefile.am
289
280
  - share/xezat/template/README.erb
281
+ - share/xezat/template/announce.erb
290
282
  - share/xezat/template/cmake.erb
291
283
  - share/xezat/template/cygport.erb
292
284
  - share/xezat/template/pkgconfig.erb