@omer-x/buttler
Version:
automates CI/CD workflows using Docker and GitHub webhooks
1 lines • 13.5 kB
JavaScript
exports.id=337,exports.ids=[337],exports.modules={8774:(e,t,r)=>{"use strict";function n(e,t){return e.map(e=>e[t])}function i(e){return e.reduce((e,t)=>Object.assign(e,t),{})}r.d(t,{E:()=>n,r:()=>i})},12284:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(70762);let i=n.Ay.object({CURRENT_WORKING_DIRECTORY:n.Ay.string().default(process.cwd()),DEBUG_MODE:n.Ay.enum(["yes"]).optional()}).parse(process.env)},13057:(e,t,r)=>{"use strict";r.d(t,{X:()=>d,z:()=>c});var n=r(56013),i=r(89283),s=r(70932),o=r(77301),a=r(28234),l=r(31465);let d=(0,a.D)("ports",{serviceId:(0,i.Qq)().notNull().references(()=>l.$.id,{onDelete:"cascade",onUpdate:"restrict"}),external:(0,s.nd)({mode:"number"}).notNull(),internal:(0,s.nd)({mode:"number"}).notNull()},e=>({pk:(0,o.ie)({columns:[e.serviceId,e.external]})})),c=(0,n.K1)(d,({one:e})=>({service:e(l.$,{fields:[d.serviceId],references:[l.$.id]})}))},29100:(e,t,r)=>{"use strict";r.d(t,{h:()=>c,r:()=>d});var n=r(51707),i=r(56013),s=r(89283),o=r(8030),a=r(28234),l=r(31465);let d=(0,a.D)("build_images",{id:(0,s.Qq)().primaryKey(),serviceId:(0,s.Qq)().notNull().references(()=>l.$.id,{onDelete:"restrict",onUpdate:"restrict"}),status:(0,s.Qq)({enum:["pending","canceled","failed","ready"]}).notNull().default("pending"),errorCode:(0,s.Qq)({enum:["REPO_NOT_FOUND","BUILD_FAILED"]}),createdAt:(0,s.Qq)().notNull().default((0,n.ll)`(CURRENT_TIMESTAMP)`),updatedAt:(0,s.Qq)().notNull().default((0,n.ll)`(CURRENT_TIMESTAMP)`)},e=>({createdAtIdx:(0,o.Pe)("build_image_created_at_index").on(e.createdAt)})),c=(0,i.K1)(d,({one:e})=>({service:e(l.$,{fields:[d.serviceId],references:[l.$.id]})}))},29378:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n={src:"/_next/static/media/logo.d9d22550.png",height:800,width:800,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAPFBMVEUhISF5eXmBgYHg4OCFhYVFRUWDg4Py8vKVlZWRkZGdnZ2enp4kJCTIyMjNzc3Ly8tbW1upqamJiYnR0dGlFBWWAAAAEHRSTlMEY2X9tvxr/bCqa2z6/P/+Dds3xgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAD1JREFUeJwVy0kSwCAIAMFRQTALLvn/X1Pc+tJAF+kAPlubDiVsvhaFYba32Uick6ifqj5RwZeu5dlukQt+P+AB1c1OZ/YAAAAASUVORK5CYII=",blurWidth:8,blurHeight:8}},29698:(e,t,r)=>{Promise.resolve().then(r.bind(r,70912)),Promise.resolve().then(r.t.bind(r,85814,23)),Promise.resolve().then(r.t.bind(r,46533,23)),Promise.resolve().then(r.bind(r,43198)),Promise.resolve().then(r.bind(r,49429)),Promise.resolve().then(r.bind(r,47530)),Promise.resolve().then(r.bind(r,60608))},31465:(e,t,r)=>{"use strict";r.d(t,{$:()=>A,d:()=>f});var n=r(51707),i=r(56013),s=r(89283),o=r(8030),a=r(28234),l=r(29100),d=r(78444),c=r(39362),u=r(13057),m=r(99710),v=r(86398);let A=(0,a.D)("services",{id:(0,s.Qq)().primaryKey(),kind:(0,s.Qq)({enum:["git","database"]}).notNull(),name:(0,s.Qq)().notNull(),repo:(0,s.Qq)().notNull(),status:(0,s.Qq)({enum:["idle","running"]}).notNull().default("idle"),imageId:(0,s.Qq)(),containerId:(0,s.Qq)(),createdAt:(0,s.Qq)().notNull().default((0,n.ll)`(CURRENT_TIMESTAMP)`),updatedAt:(0,s.Qq)().notNull().default((0,n.ll)`(CURRENT_TIMESTAMP)`)},e=>({createdAtIdx:(0,o.Pe)("service_created_at_index").on(e.createdAt)})),f=(0,i.K1)(A,({many:e})=>({environmentVariables:e(d.r),ports:e(u.X),buildImages:e(l.r),volumes:e(v.o),networks:e(c.o),providerlinks:e(m.b,{relationName:"client"}),clientLinks:e(m.b,{relationName:"provider"})}))},36046:(e,t,r)=>{"use strict";r.d(t,{default:()=>n});let n=(0,r(12907).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/buttler/buttler/src/components/Tabs.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/buttler/buttler/src/components/Tabs.tsx","default")},37144:(e,t,r)=>{"use strict";r.d(t,{A:()=>g});var n={};r.r(n),r.d(n,{buildImages:()=>A.r,environmentVariables:()=>m.r,globalVariables:()=>c.v,networks:()=>b.o,ports:()=>v.X,relationsOfBuildImages:()=>A.h,relationsOfEnvironmentVariables:()=>m.z,relationsOfNetworks:()=>b.e,relationsOfPorts:()=>v.z,relationsOfServiceLinks:()=>h.n,relationsOfServices:()=>u.d,relationsOfVolumes:()=>f.a,serviceLinks:()=>h.b,services:()=>u.$,volumes:()=>f.o});var i=r(76760),s=r.n(i),o=r(87550),a=r.n(o),l=r(88314),d=r(12284),c=r(86598),u=r(31465),m=r(78444),v=r(13057),A=r(29100),f=r(86398),b=r(39362),h=r(99710);let p=new(a())(s().resolve(d.A.CURRENT_WORKING_DIRECTORY,"buttler.db")),g=(0,l.f)({schema:n,client:p,casing:"snake_case"})},39362:(e,t,r)=>{"use strict";r.d(t,{e:()=>l,o:()=>a});var n=r(56013),i=r(89283),s=r(28234),o=r(31465);let a=(0,s.D)("networks",{id:(0,i.Qq)().primaryKey(),kind:(0,i.Qq)({enum:["provider","custom"]}).notNull(),serviceId:(0,i.Qq)().notNull().references(()=>o.$.id,{onDelete:"cascade",onUpdate:"restrict"})}),l=(0,n.K1)(a,({one:e})=>({service:e(o.$,{fields:[a.serviceId],references:[o.$.id]})}))},42389:(e,t,r)=>{"use strict";r.d(t,{A:()=>i});var n=r(99710);async function i(e,t,r){await e.insert(n.b).values({clientId:t,providerId:r})}},43485:()=>{},47530:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>n});let n={src:"/_next/static/media/logo.d9d22550.png",height:800,width:800,blurDataURL:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAMAAADz0U65AAAAPFBMVEUhISF5eXmBgYHg4OCFhYVFRUWDg4Py8vKVlZWRkZGdnZ2enp4kJCTIyMjNzc3Ly8tbW1upqamJiYnR0dGlFBWWAAAAEHRSTlMEY2X9tvxr/bCqa2z6/P/+Dds3xgAAAAlwSFlzAAALEwAACxMBAJqcGAAAAD1JREFUeJwVy0kSwCAIAMFRQTALLvn/X1Pc+tJAF+kAPlubDiVsvhaFYba32Uick6ifqj5RwZeu5dlukQt+P+AB1c1OZ/YAAAAASUVORK5CYII=",blurWidth:8,blurHeight:8}},58624:(e,t,r)=>{"use strict";function n(e,t,r){return e.reduce((e,n)=>({...e,[n[t]]:n[r]}),{})}r.d(t,{A:()=>n})},59643:(e,t,r)=>{"use strict";r.d(t,{B8:()=>b,Lp:()=>g,Nc:()=>f,VS:()=>p,ZP:()=>u,_w:()=>c,aH:()=>m,g$:()=>v,od:()=>A,pb:()=>h});var n=r(76760),i=r.n(n),s=r(66400),o=r.n(s),a=r(49629);let l=new(o()),d={};function c(e,t,r,n,s){let o=i().join(t,"Dockerfile"),c=a.pack(i().dirname(o));return new Promise((t,i)=>{l.buildImage(c,{t:`${e}:latest`,buildargs:r,networkmode:n},(r,n)=>r?i(r):n?void(n.on("data",e=>{if(!s)return;let t=JSON.parse(e.toString("utf-8").trim());"stream"in t&&console.log(t.stream)}),n.on("end",()=>{l.getImage(`${e}:latest`).inspect().then(()=>t(!0)).catch(()=>t(!1))}),n.on("error",e=>{"UPDATE"===e?t(!1):i(e)}),d[e]=n):i(Error("no stream")))})}function u(e){return new Promise((t,r)=>{l.pull(`${e}:latest`,(e,n)=>{if(e)return r(e);l.modem.followProgress(n,(e,n)=>{if(e)return r(e);t(n)})})})}async function m(e){try{let t=l.getImage(e);await t.remove()}catch{}}async function v(e,t,r,n,i,s){let o=await l.createContainer({name:e,Image:t,Env:Object.entries(r).map(([e,t])=>`${e}=${t}`),HostConfig:{PortBindings:Object.fromEntries(Object.entries(n).map(([e,t])=>[`${t}/tcp`,[{HostPort:e}]])),RestartPolicy:{Name:"always"},Binds:Object.entries(i).map(([e,t])=>`${e}:${t}`)},Tty:!0});return await Promise.all(s.map(e=>P(o.id,e))),await o.start(),o.id}async function A(e){await l.getContainer(e).remove({force:!0})}function f(e,t){return new Promise((r,n)=>{l.getContainer(e).exec({Cmd:t,AttachStdout:!0,AttachStderr:!0,Tty:!0},(e,t)=>{if(e||!t)return n(e);t.start({Tty:!0},(e,t)=>{if(e||!t)return n(e);let i="";t.on("data",e=>{i+=e.toString()}),t.on("end",()=>{r(i)})})})})}function b(e,t){let r=l.getContainer(e);return new Promise((e,n)=>{r.logs({follow:!1,stdout:!0,stderr:!0,tail:t},(t,r)=>t?n(t):r?void e(r.toString()):n(Error("stream is undefined")))})}async function h(e){await l.createVolume({Name:e,Driver:"local"})}async function p(e,t=[]){let r=await l.createNetwork({Name:e,Driver:"bridge",CheckDuplicate:!0,Internal:!1,Attachable:!0});return await Promise.all(t.map(e=>P(e,r.id))),r}async function g(e,t=[]){let r=l.getNetwork(e);await Promise.all(t.map(e=>w(e,r.id))),await r.remove()}async function P(e,t){let r=l.getNetwork(t);await r.connect({Container:e})}async function w(e,t){let r=l.getNetwork(t);await r.disconnect({Container:e})}},60608:(e,t,r)=>{"use strict";r.d(t,{default:()=>v});var n=r(60687),i=r(15220),s=r(42493),o=r(35885),a=r(85814),l=r.n(a),d=r(16189),c=r(98792),u=r(28028),m=r(70747);let v=()=>{let e=(0,d.usePathname)();return(0,n.jsxs)(c.A,{variant:"tabs",defaultActiveKey:e,children:[(0,n.jsx)(u.A,{children:(0,n.jsx)(m.A,{as:l(),href:"/services",children:(0,n.jsx)(o.g,{icon:s.D6,size:"xl",className:"fa-fw"})})}),(0,n.jsx)(u.A,{children:(0,n.jsx)(m.A,{as:l(),href:"/settings",children:(0,n.jsx)(o.g,{icon:i._g,size:"xl",className:"fa-fw"})})})]})}},61640:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,86346,23)),Promise.resolve().then(r.t.bind(r,27924,23)),Promise.resolve().then(r.t.bind(r,35656,23)),Promise.resolve().then(r.t.bind(r,40099,23)),Promise.resolve().then(r.t.bind(r,38243,23)),Promise.resolve().then(r.t.bind(r,28827,23)),Promise.resolve().then(r.t.bind(r,62763,23)),Promise.resolve().then(r.t.bind(r,97173,23))},74792:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,16444,23)),Promise.resolve().then(r.t.bind(r,16042,23)),Promise.resolve().then(r.t.bind(r,88170,23)),Promise.resolve().then(r.t.bind(r,49477,23)),Promise.resolve().then(r.t.bind(r,29345,23)),Promise.resolve().then(r.t.bind(r,12089,23)),Promise.resolve().then(r.t.bind(r,46577,23)),Promise.resolve().then(r.t.bind(r,31307,23))},76356:(e,t,r)=>{"use strict";r.d(t,{A:()=>a});var n=r(77598),i=r.n(n),s=r(37021),o=r(39362);async function a(e,t,r){let[n]=await e.insert(o.o).values({id:i().randomUUID(),kind:r,serviceId:t}).returning({id:o.o.id});return n}(0,s.r)(o.o)},78444:(e,t,r)=>{"use strict";r.d(t,{r:()=>l,z:()=>d});var n=r(56013),i=r(89283),s=r(77301),o=r(28234),a=r(31465);let l=(0,o.D)("environment_variables",{serviceId:(0,i.Qq)().notNull().references(()=>a.$.id,{onDelete:"cascade",onUpdate:"restrict"}),key:(0,i.Qq)().notNull(),value:(0,i.Qq)().notNull()},e=>({pk:(0,s.ie)({columns:[e.serviceId,e.key]})})),d=(0,n.K1)(l,({one:e})=>({service:e(a.$,{fields:[l.serviceId],references:[a.$.id]})}))},86167:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});var n=r(8774),i=r(58624);async function s(e,t){let r=await e.query.services.findFirst({with:{environmentVariables:{columns:{key:!0,value:!0}},ports:{columns:{external:!0,internal:!0}},volumes:{columns:{id:!0,containerPath:!0}},networks:{columns:{id:!0}},providerlinks:{columns:{},with:{provider:{columns:{id:!0,name:!0,repo:!0,containerId:!0},with:{networks:{columns:{id:!0}},environmentVariables:{columns:{key:!0,value:!0}}}}}},clientLinks:{columns:{},with:{client:{columns:{id:!0,name:!0}}}}},where:(e,{eq:r})=>r(e.id,t)});if(!r)return null;let{ports:s,environmentVariables:o,volumes:a,networks:l,providerlinks:d,clientLinks:c,...u}=r;return{...u,environmentVariables:(0,i.A)(o,"key","value"),ports:Object.fromEntries(s.map(({external:e,internal:t})=>[e,t.toString()])),volumes:(0,i.A)(a,"id","containerPath"),networkIds:(0,n.E)(l,"id"),providers:(0,n.E)(d,"provider").map(({networks:e,environmentVariables:t,...r})=>({...r,networkIds:(0,n.E)(e,"id"),variables:(0,i.A)(t,"key","value")})),clients:(0,n.E)(c,"client")}}},86398:(e,t,r)=>{"use strict";r.d(t,{a:()=>l,o:()=>a});var n=r(56013),i=r(89283),s=r(28234),o=r(31465);let a=(0,s.D)("volumes",{id:(0,i.Qq)().primaryKey(),serviceId:(0,i.Qq)().notNull().references(()=>o.$.id,{onDelete:"cascade",onUpdate:"restrict"}),containerPath:(0,i.Qq)().notNull()}),l=(0,n.K1)(a,({one:e})=>({service:e(o.$,{fields:[a.serviceId],references:[o.$.id]})}))},86598:(e,t,r)=>{"use strict";r.d(t,{v:()=>i});var n=r(89283);let i=(0,r(28234).D)("global_variables",{key:(0,n.Qq)().primaryKey(),value:(0,n.Qq)().notNull()})},94431:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>A,metadata:()=>v});var n=r(37413);r(43485),r(38380);var i=r(75529),s=r(10925),o=r(53384),a=r(4536),l=r.n(a);r(61120);var d=r(97592),c=r(47047),u=r(29378),m=r(36046);i.$W.autoAddCss=!1;let v={title:"Buttler",description:"makes your life easier",icons:{icon:[{url:"/favicon-16x16.png",sizes:"16x16",type:"image/png"},{url:"/favicon-32x32.png",sizes:"32x32",type:"image/png"},{url:"/favicon-96x96.png",sizes:"96x96",type:"image/png"},{url:"/favicon-192x192.png",sizes:"192x192",type:"image/png"}]}},A=({children:e})=>(0,n.jsx)("html",{lang:"en",children:(0,n.jsx)(s.default,{children:(0,n.jsxs)(c.default,{as:"main",className:"py-3",children:[(0,n.jsx)("div",{className:"d-flex justify-content-center mb-3",children:(0,n.jsx)(l(),{href:"/",children:(0,n.jsx)(o.default,{src:u.default,alt:"logo",width:80,height:80,style:{marginBottom:-40}})})}),(0,n.jsx)(m.default,{}),(0,n.jsx)("div",{className:"rounded-bottom border-start border-end border-bottom shadow p-3",children:(0,n.jsx)(d.default,{style:{minHeight:"calc(100vh - 163px)"},children:e})})]})})})},95418:(e,t,r)=>{Promise.resolve().then(r.bind(r,10925)),Promise.resolve().then(r.t.bind(r,4536,23)),Promise.resolve().then(r.t.bind(r,49603,23)),Promise.resolve().then(r.bind(r,97592)),Promise.resolve().then(r.bind(r,47047)),Promise.resolve().then(r.bind(r,29378)),Promise.resolve().then(r.bind(r,36046))},99710:(e,t,r)=>{"use strict";r.d(t,{b:()=>l,n:()=>d});var n=r(56013),i=r(89283),s=r(77301),o=r(28234),a=r(31465);let l=(0,o.D)("service_links",{clientId:(0,i.Qq)().notNull().references(()=>a.$.id,{onDelete:"cascade",onUpdate:"restrict"}),providerId:(0,i.Qq)().notNull().references(()=>a.$.id,{onDelete:"cascade",onUpdate:"restrict"})},e=>({pk:(0,s.ie)({columns:[e.clientId,e.providerId]})})),d=(0,n.K1)(l,({one:e})=>({client:e(a.$,{fields:[l.clientId],references:[a.$.id],relationName:"client"}),provider:e(a.$,{fields:[l.providerId],references:[a.$.id],relationName:"provider"})}))}};