require "dnnbundler/zipFileGenerator" require "dnnbundler/packageVersionReplacer" require "dnnbundler/jsonConfig" require "thor" require "json" module Dnnbundler class CLI < Thor desc "build CONFIG [options]", "creates a zip package according to given configuration file" option :bumpBuild option :bumpSprint option :targetVersion, :type => :string def build( config ) puts "Build with config #{config}" file = File.read(config) data_hash = JSON.parse(file) manifest_files = data_hash[JsonConfig::Manifests] current_version = Dnnbundler::getVersionFromManifest manifest_files[0] version_numbers = Dnnbundler::splitVersionNumbers current_version version_numbers[1] = version_numbers[1] + 1 if options[:bumpSprint] version_numbers[2] = 1 if options[:bumpSprint] version_numbers[2] = version_numbers[2] + 1 if options[:bumpBuild] version_numbers = Dnnbundler::splitVersionNumbers(options[:targetVersion]) if options[:targetVersion] new_version = Dnnbundler::formatVersion(version_numbers) puts "current version is #{current_version}" puts "new version is #{new_version}" data_hash[JsonConfig::Packages].each do |package| package[JsonConfig::Name].sub! JsonConfig::PackageVersionPlaceholder, new_version Dnnbundler::replaceVersionInManifestFiles manifest_files, new_version generator = ZipFileGenerator.new(package) generator.write end end end def self.formatVersion(version) "#{version[0].to_s.rjust(4, "0")}.#{version[1].to_s.rjust(2, "0")}.#{version[2].to_s.rjust(4, "0")}" end def self.splitVersionNumbers(version_string) version_string.split(".").map { |x| x.to_i } end end