Skip to content

tumugi/tumugi-plugin-google_drive

Repository files navigation

Build Status Code Climate Coverage Status Gem Version

Google Drive plugin for tumugi

tumugi-plugin-google_drive is a plugin for integrate Google Drive and tumugi.

Installation

Add this line to your application's Gemfile:

gem 'tumugi-plugin-google_drive'

And then execute bundle install

Target

Tumugi::Plugin::GoogleDriveFileTarget

GoogleDriveFileTarget represents file on Googl Drive.

Parameters

name type required? default description
name string required Filename
file_id string optional File ID
parents string or string array optional Parent folder ID(s)
mime_type string optional MIME type of file

mime_type is specifiy default mime_type value for GoogleDriveFileTarget#open(mode="r", mime_type: @mime_type, &block) method.

Examples

Create Google Drive file in folder named xyz, which content is "done"
task :task1 do
  param :day, type: :time, auto_bind: true, required: true

  output do
    target(:google_drive_file,
            name: "test_#{day.strftime('%Y%m%d')}.txt",
            parents: "xyz")
  end

  run do
    log "task1#run"
    output.open("w") {|f| f.puts("done") }
  end
end
Upload CSV file and convert it to Google Sheets file
task :task1 do
  param :day, type: :time, auto_bind: true, required: true

  output do
    target(:google_drive_file,
            name: "test_#{day.strftime('%Y%m%d')}.csv",
            mime_type: "application/vnd.google-apps.spreadsheet")
  end

  run do
    log "task1#run"
    output.open("w") {|f| f.puts("header1,header2"); f.puts("value1,value2") }
    # You can also specify mime_type by argument of open method.
    # output.open("w", mime_type: "application/vnd.google-apps.spreadsheet") { ... }
  end
end

Tumugi::Plugin::GoogleDriveFolderTarget

GoogleDriveFolderTarget represents folder on Googl Drive.

Parameters

name type required? default description
name string required Filename
folder_id string optional Folder ID
parents string or string array optional Parent folder ID(s)

Task

Tumugi::Plugin::GoogleDriveFolderTask

GoogleDriveFolderTask create a folder on Googl Drive. Return value of output must be instance of Tumugi::Plugin::GoogleDriveFolderTarget

Parameters

name type required? default description
name string required Filename
folder_id string optional Folder ID
parents string or string array optional Parent folder ID(s)

Examples

task :task1, type: :google_drive_folder do
  param :day, type: :time, auto_bind: true, required: true
  name { "test_#{day.strftime('%Y%m%d')}.txt" }
  parents "xyz"
end

Run this workflow via:

$ bundle exec tumugi run -f workflow.rb -p day:2016-07-01 task1

Config Section

tumugi-plugin-google_drive provide config section named "google_drive" which can specified Google Drive autenticaion info.

Authenticate by client_email and private_key

Tumugi.config do |config|
  config.section("google_drive") do |section|
    section.project_id = "xxx"
    section.client_email = "yyy@yyy.iam.gserviceaccount.com"
    section.private_key = "zzz"
  end
end

Authenticate by JSON key file

Tumugi.configure do |config|
  config.section("google_drive") do |section|
    section.private_key_file = "/path/to/key.json"
  end
end

Development

After checking out the repo, run bundle install to install dependencies. Then, run bundle exec rake test to run the tests.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/tumugi/tumugi-plugin-google_drive

License

The gem is available as open source under the terms of the Apache License Version 2.0.

About

Tumugi plugin for Google Drive

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages