class Autoproj::CLI::Commit

Public Instance Methods

default_message(tag_name) click to toggle source
# File lib/autoproj/cli/commit.rb, line 8
def default_message(tag_name)
    if tag_name
        "autoproj created tag #{tag_name}"
    else
        "autoproj created version commit"
    end
end
run(user_selection, options = Hash.new) click to toggle source
# File lib/autoproj/cli/commit.rb, line 16
def run(user_selection, options = Hash.new)
    tag_name = options[:tag]
    ws.load_config
    pkg = ws.manifest.main_package_set.create_autobuild_package
    importer = pkg.importer
    if !importer || !importer.kind_of?(Autobuild::Git)
        raise CLIInvalidArguments, "cannot use autoproj commit if the main configuration is not managed by git"
    end

    if tag_name
        begin
            importer.rev_parse(pkg, "refs/tags/#{tag_name}")
            raise CLIInvalidArguments, "tag #{tag_name} already exists"
        rescue Autobuild::PackageException
        end
    end

    versions_file = File.join(ws.config_dir,
                              Workspace::OVERRIDES_DIR,
                              Versions::DEFAULT_VERSIONS_FILE_BASENAME)

    versions = CLI::Versions.new(ws)
    Autoproj.message "creating versions file, this may take a while"
    versions.run(user_selection,
                 save: versions_file,
                 package_sets: options[:package_sets],
                 replace: true,
                 keep_going: options[:keep_going],
                 deps: options[:deps])

    importer.run_git(pkg, "add", versions_file)
    message = options[:message] || default_message(tag_name)

    importer.run_git(pkg, "commit", "-m", message)
    importer.run_git(pkg, "tag", tag_name) unless tag_name.nil?
end