UNPKG

bunny-move

Version:

Move files to and from your storage zones with bunny.net in a single cli command 🐰

3 lines (2 loc) 4.4 kB
import { createRequire } from 'module';const require = createRequire(import.meta.url); import{useSuspenseQuery as ae}from"@tanstack/react-query";import{Newline as m,Static as pe,Text as c}from"ink";import{option as le}from"pastel";import{z as v}from"zod";import{option as U}from"pastel";import{z as O}from"zod";var N=O.string().trim().uuid(),q=O.preprocess(e=>process.env.BUNNY_ACCESS_KEY&&!e?process.env.BUNNY_ACCESS_KEY.split(","):e,N.or(N.array()).optional().transform(e=>typeof e=="string"?[e]:e)),P=q.describe(U({alias:"k",description:"Bunny API Access Key",valueDescription:"uuid"}));import{option as G}from"pastel";import{z as A}from"zod";var w=A.string().trim().min(1),$=A.preprocess(e=>process.env.BUNNY_PROFILE&&!e?process.env.BUNNY_PROFILE.split(","):e,w.or(w.array()).optional().transform(e=>typeof e=="string"?[e]:e)),B=$.describe(G({alias:"p",description:"Bunny user profile name",valueDescription:"string"}));import J from"node:path";import{option as M}from"pastel";import Q from"untildify";import{z as F}from"zod";import W from"node:path";import H from"untildify";import{z as l}from"zod";var h="~/.bunny/credentials",d=W.resolve(H(h)),j=l.object({accessKey:l.string(),email:l.string(),id:l.string(),name:l.string().optional(),profile:l.string()});var V=h,X=F.preprocess(e=>{if(process.env.BUNNY_SHARED_CREDENTIALS_FILE&&!e){let t=process.env.BUNNY_SHARED_CREDENTIALS_FILE.trim();return J.resolve(Q(t))}return e},F.string().trim().optional().default(d)),R=X.describe(M({alias:"c",defaultValueDescription:V,description:"Bunny shared credentials file path",valueDescription:"file-path"}));import{stringify as Z}from"smol-toml";function _(e,t){return e.reduce((r,o)=>{let{[t]:i,...n}=o;return(typeof i=="string"||typeof i=="number"||typeof i=="symbol")&&(r[i]=n),r},{})}function u(e){return Z(_(e.map(t=>({...t,profile:t.profile??t.accessKey})),"profile"))}import oe from"camelcase-keys";import ie from"fast-deep-equal/es6/index.js";import x from"fs-extra";import ne from"is-obj";import D from"p-map";import{parse as se}from"smol-toml";import ee from"node:os";var C=ee.cpus().length;function I(e,t){return e.filter((r,o)=>o===e.findIndex(i=>i[t]===r[t]))}import{createBunnyApiClient as te}from"bunny-sdk";import re from"is-obj";function k({firstName:e,lastName:t}){if(e&&t)return`${e} ${t}`;if(t)return t;if(e)return e}async function g({accessKey:e,profile:t=e}){let o=await te({accessKey:e}).user.get().catch(n=>{throw re(n)&&"responseStatusCode"in n&&n.responseStatusCode===401?new Error(`Cannot find user with accessKey "${e}"`):n});if(!o)throw new Error(`Cannot find user with accessKey "${e}"`);let i=k({firstName:o.firstName,lastName:o.lastName});return{accessKey:e,email:o.email,id:o.id,...i&&{name:i},profile:t}}async function Y({accessKey:e=[],credentialsPath:t=d,profile:r=[]}={}){let o=typeof e=="string"?[e]:e,i=typeof r=="string"?[r]:r,n=await x.pathExists(t),y=[];if(n){let p=await x.readFile(t,"utf8"),L=se(p),K=!1;if(y=await D(Object.entries(L),async([f,S])=>{let b=j.parse({...ne(S)?oe({...S,profile:f}):{}}),E=await g({accessKey:b.accessKey,profile:f});return ie(b,E)||(K=!0),E},{concurrency:C}),K){let f=u(y);await x.outputFile(t,f)}}let z=await D(o,async p=>g({accessKey:p,profile:p}),{concurrency:C}),T=I([...y,...z],"profile");return i.length>0?T.filter(p=>i.includes(p.profile??"")):T}import{Fragment as de,jsx as s,jsxs as a}from"react/jsx-runtime";var me=["text","toml","json"],ce=v.object({accessKey:P,format:v.enum(me).default("text").describe(le({alias:"f",description:"Output format"})),profile:B,sharedCredentialsFile:R});function fe({options:e}){let{data:t}=ae({async queryFn(){return Y({accessKey:e.accessKey,credentialsPath:e.sharedCredentialsFile,profile:e.profile})},queryKey:["who-am-i",e.accessKey,e.profile,e.sharedCredentialsFile]});if(t.length===0)throw new Error("No credentials found");return e.format==="json"&&(console.log(),console.log(JSON.stringify(t,void 0,2))),e.format==="toml"&&(console.log(),console.log(u(t))),e.format==="text"?s(pe,{items:t,children:(r,o)=>a(c,{children:[o===0?s(m,{}):null,a(c,{children:["Access Key: ",r.accessKey]}),s(m,{}),a(c,{children:["Email: ",r.email]}),s(m,{}),a(c,{children:["Id: ",r.id]}),r.name?a(de,{children:[s(m,{}),a(c,{children:["Name: ",r.name]})]}):null,s(m,{}),a(c,{children:["Profile: ",r.profile]}),o===t.length-1?null:s(m,{})]},r.profile+r.accessKey)}):null}export{fe as default,ce as options};