#!/usr/bin/env node

const { argv } = require('yargs')
  .usage('用法: ./$0 <目錄ID> [options]')
  .example('./$0 1ULY8ISgWSOVc0UrzejykVgXfVL_I4r75', '獲取 https://drive.google.com/drive/folders/1ULY8ISgWSOVc0UrzejykVgXfVL_I4r75 内包含的所有文件的統計資訊')
  .example('./$0 root -s size -t html -o out.html', '獲取個人空間根目錄統計資訊，結果以HTML表格輸出，根據總大小降冪排列，保存到本目錄下的out.html文件中（不存在則新建，存在的覆蓋）')
  .example('./$0 root -s name -t json -o out.json', '獲取個人空間根目錄統計資訊，結果以JSON格式輸出，根據文件扩展名排序，保存到本目录下的out.json文件中')
  .example('./$0 root -t all -o all.json', '獲取個人空間根目錄統計資訊，將所有文件資訊（包括資料夾）以JSON格式輸出，保存到本目錄下的all.json文件中')
  .alias('u', 'update')
  .describe('u', '強制從線上獲取資訊(不論是否存在本地快取)')
  .alias('N', 'not_teamdrive')
  .describe('N', '如果不是小組雲端硬碟連結，可以加上此参數以提高接口查詢效率，降低延遲。如果要統計的是帳號下之個人空間，且./sa目錄下的service account沒有相關權限，請加上此參數以使用個人的auth身份進行查詢')
  .alias('S', 'service_account')
  .describe('S', '指定使用service account進行統計，前提是必須在sa路徑下放置SA json文件')
  .alias('s', 'sort')
  .describe('s', '統計結果排序方法，可選值如下： name 或 size，不填則預設根據文件數量降冪排列')
  .alias('t', 'type')
  .describe('t', '統計結果輸出類型，可選值如下： html/tree/json/all，all表示輸出所有文件json數據，最好與 -o 一起使用。不填則預設輸出命令列表格')
  .alias('o', 'output')
  .describe('o', '統計結果輸出文件，適合與 -t 一起使用')
  .help('h')
  .alias('h', 'help')

const { count, validate_fid } = require('./src/gd')
const [fid] = argv._
if (validate_fid(fid)) {
  const { update, sort, type, output, not_teamdrive, service_account } = argv
  count({ fid, update, sort, type, output, not_teamdrive, service_account }).catch(console.error)
} else {
  console.warn('無目錄ID或格式錯誤')
}
