imdone-cli 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -542,7 +542,7 @@ Or add it to your .imdone-cli.yml file:
542
542
  remoteUrl: <your-remote-url>
543
543
 
544
544
  Then run imdone clone again.
545
- `);return}if(t.info(`Cloning remote repository at ${r}...`),n?t.info(`Using custom backlog directory: ${n}`):t.info("Using default backlog directory: backlog"),n||(n=(0,ep.join)(u,i.backlogDir)),await Mj.default.mkdir(n,{recursive:!0}),await K9(i.remoteUrl,n,{feedback:t}))return t.succeed(`Successfully cloned remote repository to ${n}`),i.backlogDir||(i.backlogDir="backlog",await Rj(u,i),t.info("Updated .imdone-cli.yml with backlogDir setting")),n;t.warn("Failed to clone repository.")}async function KOt(e){try{return!(!await Eoe(e)||!await _oe(e)||!await yoe(e)||!await xoe(e))}catch(t){if(t instanceof df)return!1}}async function z8e(e,t,{feedback:r}={}){if(!await KOt(e))return;await boe(t,{feedback:r}),r.start();let{name:u,jiraUrl:i,jiraProjectKey:o,jiraUsername:a,jiraApiToken:s,jql:c}=config,l=e,f=e,D=await r5(l);if(D&&D.remoteUrl){r&&r.start(`Found remote URL in .imdone-cli: ${D.remoteUrl}`);let m=(0,ep.join)(l,D.backlogDir||"backlog");await Mj.default.mkdir(m,{recursive:!0}),await K9(D.remoteUrl,m,{feedback:r})?(r&&r.succeed(`Successfully cloned remote repository to ${m}`),f=m,D.backlogDir||(D.backlogDir="backlog",await Rj(l,D),r&&r.info("Updated .imdone-cli with backlogDir setting"))):r&&r.warn("Failed to clone repository. Continuing with local initialization.")}let h={name:u,jiraUrl:i,jiraProjectKey:o,jql:c};return await EV(f),await z9((0,ep.dirname)(f),(0,ep.basename)(f)),await z9(f,".env"),await lK(f,a,s),await U3e(f,"archive"),$3e(f,h),te.info("Imdone project initialized successfully:",h),{targetPath:f}}var V8e={name:"imdone-cli",version:"0.5.0",author:"Jesse Piascik",description:"An imdone cli that automates your jira updates with markdown files.",license:"Proprietary",engines:{node:">=22.0.0"},main:"dist/index.min.cjs",type:"module",bin:{imdone:"dist/index.min.cjs","imdone-debug":"dist/index.cjs"},files:["dist","docs","LICENSE","README.md"],scripts:{prepublishOnly:"npm --prefix ../ install && npm --prefix ../ run build && npm i && npm test && npm run build",link:"npm link ../../imdone-core-2 ../../imdone-api",build:"node esbuild.config.js && cp public/* dist/ && cp src/adapters/jwt-public.pem dist/",coverage:"vitest --run --coverage",test:"vitest --run","test-ci":"vitest --run"},dependencies:{chalk:"^5.4.1",commander:"^13.1.0",dotenv:"16.4.5","find-up-simple":"^1.0.1","imdone-core":"^2.0.13",inquirer:"^12.5.2","js-yaml":"^4.1.0",jsonwebtoken:"^9.0.2",ora:"^8.2.0","simple-git":"^3.27.0"},devDependencies:{esbuild:"^0.25.2","esbuild-plugin-copy":"^2.1.1",vitest:"^3.1.1"}};var K8e=W(require("node:https"),1);var{name:qj,version:A0,description:J8e}=V8e;async function Nj(e){return new Promise((t,r)=>{K8e.default.get(`https://registry.npmjs.org/${e}/latest`,n=>{let u="";n.on("data",i=>u+=i),n.on("end",()=>{try{let i=JSON.parse(u);t(i.version)}catch(i){r(i)}})}).on("error",r)})}async function tp(){try{let e=await Nj(qj);e!==A0&&console.log(`
545
+ `);return}if(t.info(`Cloning remote repository at ${r}...`),n?t.info(`Using custom backlog directory: ${n}`):t.info("Using default backlog directory: backlog"),n||(n=(0,ep.join)(u,i.backlogDir)),await Mj.default.mkdir(n,{recursive:!0}),await K9(i.remoteUrl,n,{feedback:t}))return t.succeed(`Successfully cloned remote repository to ${n}`),i.backlogDir||(i.backlogDir="backlog",await Rj(u,i),t.info("Updated .imdone-cli.yml with backlogDir setting")),n;t.warn("Failed to clone repository.")}async function KOt(e){try{return!(!await Eoe(e)||!await _oe(e)||!await yoe(e)||!await xoe(e))}catch(t){if(t instanceof df)return!1}}async function z8e(e,t,{feedback:r}={}){if(!await KOt(e))return;await boe(t,{feedback:r}),r.start();let{name:u,jiraUrl:i,jiraProjectKey:o,jiraUsername:a,jiraApiToken:s,jql:c}=config,l=e,f=e,D=await r5(l);if(D&&D.remoteUrl){r&&r.start(`Found remote URL in .imdone-cli: ${D.remoteUrl}`);let m=(0,ep.join)(l,D.backlogDir||"backlog");await Mj.default.mkdir(m,{recursive:!0}),await K9(D.remoteUrl,m,{feedback:r})?(r&&r.succeed(`Successfully cloned remote repository to ${m}`),f=m,D.backlogDir||(D.backlogDir="backlog",await Rj(l,D),r&&r.info("Updated .imdone-cli with backlogDir setting"))):r&&r.warn("Failed to clone repository. Continuing with local initialization.")}let h={name:u,jiraUrl:i,jiraProjectKey:o,jql:c};return await EV(f),await z9((0,ep.dirname)(f),(0,ep.basename)(f)),await z9(f,".env"),await lK(f,a,s),await U3e(f,"archive"),$3e(f,h),te.info("Imdone project initialized successfully:",h),{targetPath:f}}var V8e={name:"imdone-cli",version:"0.5.1",author:"Jesse Piascik",description:"An imdone cli that automates your jira updates with markdown files.",license:"Proprietary",engines:{node:">=22.0.0"},main:"dist/index.min.cjs",type:"module",bin:{imdone:"dist/index.min.cjs","imdone-debug":"dist/index.cjs"},files:["dist","docs","LICENSE","README.md"],scripts:{prepublishOnly:"npm --prefix ../ install && npm --prefix ../ run build && npm i && npm test && npm run build",link:"npm link ../../imdone-core-2 ../../imdone-api",build:"node esbuild.config.js && cp public/* dist/ && cp src/adapters/jwt-public.pem dist/",coverage:"vitest --run --coverage",test:"vitest --run","test-ci":"vitest --run"},dependencies:{chalk:"^5.4.1",commander:"^13.1.0",dotenv:"16.4.5","find-up-simple":"^1.0.1","imdone-core":"^2.0.13",inquirer:"^12.5.2","js-yaml":"^4.1.0",jsonwebtoken:"^9.0.2",ora:"^8.2.0","simple-git":"^3.27.0"},devDependencies:{esbuild:"^0.25.2","esbuild-plugin-copy":"^2.1.1",vitest:"^3.1.1"}};var K8e=W(require("node:https"),1);var{name:qj,version:A0,description:J8e}=V8e;async function Nj(e){return new Promise((t,r)=>{K8e.default.get(`https://registry.npmjs.org/${e}/latest`,n=>{let u="";n.on("data",i=>u+=i),n.on("end",()=>{try{let i=JSON.parse(u);t(i.version)}catch(i){r(i)}})}).on("error",r)})}async function tp(){try{let e=await Nj(qj);e!==A0&&console.log(`
546
546
 
547
547
  \u{1F6A8} Update available! \u{1F6A8}
548
548
 
@@ -562,7 +562,7 @@ ${o}`),e.succeed(`Update complete:
562
562
  ${i}`)});await new Promise((u,i)=>{n.on("close",o=>{o!==0?i(new Error(`Child process exited with code ${o}`)):u()})}),console.log(`
563
563
  \u{1F680} imdone-cli updated to version ${t}!
564
564
 
565
- Run 'imdone update' again to get configuration updates.`)}var Fkt=hwe.default.basename(process.argv[1]),xkt=Fkt.includes("debug");xkt?(console.log("\u{1F527} Debug mode enabled"),te.setLevel(process.env.LOG_LEVEL||Kn.TRACE)):te.setLevel(Kn.ERROR);var Ho=new C$;Ho.name("imdone").description(J8e).version(A0);async function ykt(e){try{let{feedback:t}=Wo("Fetching license information...",!0),r=await X_(process.env.IMDONE_LICENSE);if(r.valid){let{name:n,email:u,expires:i}=r.data;t.succeed(`Current license: ${n} (${u}) - Expires: ${i.toLocaleDateString()}`)}else t.fail(`Invalid or expired license: ${r.reason}`)}catch(t){te.warn(t),feedback.fail(`Failed to fetch license information: ${t.message}`)}}async function _kt(e,t){let r;try{let n=t.token||await Foe();r=Wo("Validating license...",!0)?.feedback;let u=await X_(n);u.valid||r.fail(`Invalid license: ${u.reason}`),await fK(e,n);let{name:i,email:o,expires:a}=u.data;r.succeed(`License accepted for ${i} (${o}) - Expires: ${a.toLocaleDateString()}`)}catch(n){te.warn(n),r.fail(`Failed to validate or store license: ${n.message}`)}}Ho.command("license").description("Enter or update your Imdone license").option("--token [token]","License token").option("--show","Show current license information").action(async e=>{let t=await Cc(process.cwd());if(await eh(t),await tp(),e.show)return await ykt();await _kt(t,e)});Ho.command("update").description("Update imdone-cli to the latest version and update config from origin").action(async()=>{let e;try{e=Wo("Updating imdone-cli...")?.feedback;let t=await Cc(process.cwd());await pwe(t,e)}catch(t){te.warn(t),e.fail(`Failed to update imdone-cli: ${t.message}`)}});Ho.command("clone").description("Clone a remote repository backlog to the local machine").option("--remote-url [remoteUrl]","Remote repository URL").option("--backlog-dir [backlogDir]","Backlog directory (default: backlog)").action(async e=>{let t,r;try{r=Wo("Cloning remote repository...",!0)?.feedback,t=await Cc(process.cwd()),await tp(),await Y8e(process.cwd(),{feedback:r,...e})}catch(n){te.warn("Error during clone operation:",n),r.fail(`Failed to clone repository: ${n.message}`)}});Ho.command("init").description("Initialize Jira integration").option("--name [name]","Project name").option("--jira-url [jiraUrl]","Jira URL (e.g., https://your-domain.atlassian.net)").option("--jira-project-key [jiraProjectKey]","Jira project key (e.g., ABC)").option("--jira-username [jiraUsername]","Jira username (email)").option("--jira-api-token [jiraApiToken]","Jira API token").option("--jql [jql]",'JQL query to fetch issues (e.g., Sprint in openSprints() and status != "Done")').action(async e=>{let t,r=process.cwd();try{t=Wo("Initializing imdone project...",!0)?.feedback,await tp(),await z8e(r,e,{feedback:t})||(console.log("Configuration cancelled"),process.exit(1)),t.succeed(`Imdone initialization for "${config.name}" completed successfully`)}catch(n){te.warn(n),t.fail(`Failed to initialize imdone project: ${n.message}`),process.exit(1)}});Ho.command("pull").description("Pull issues from Jira").action(async()=>{let e,t;try{t=Wo("Pulling issues from Jira...")?.feedback,e=await Cc(process.cwd());let{project:r,jiraPlugin:n}=await Ix("Pulling issues from Jira...",e,t);await m_({project:r,jiraPlugin:n,...wg,feedback:t})}catch(r){te.warn("Error during pull operation:",r),t.fail(`Failed to pull issues from Jira: ${r.message}`)}});Ho.command("push").description("Push changes to Jira").action(async()=>{let e,t;try{t=Wo("Pushing changes to Jira...")?.feedback,e=await Cc(process.cwd());let{project:r,jiraPlugin:n}=await Ix("Pushing changes to Jira...",e,t);await F_({project:r,jiraPlugin:n,...Qp,feedback:t})}catch(r){te.warn("Error during push operation:",r),t.fail(`Failed to push changes to Jira: ${r.message}`)}});Ho.command("merge").description("Push resolved merge conflicts to Jira").action(async e=>{let t,r;try{r=Wo("Pushing resolved merge conflicts to Jira...")?.feedback,t=await Cc(process.cwd());let{project:n,jiraPlugin:u}=await Ix("Pushing resolved merge conflicts to Jira...",t,r);await HV({project:n,jiraPlugin:u,feedback:r})}catch(n){te.warn("Error during merge operation:",n),r.fail(`Failed to merge changes: ${n.message}`),process.exit(1)}});Ho.command("lint").description("Lint local changes for imdone compatibility").action(async()=>{let e,t;try{t=Wo("Linting changes...")?.feedback,e=await Cc(process.cwd()),await eh(e),await tp(),await Gv(t),await E_(e,{...g_,feedback:t})}catch(r){te.warn("Error during lint operation:",r),t.fail(`Failed to lint changes: ${r.message}`)}});Ho.command("reset").description("Delete the local markdown files and pull the latest from Jira").action(async()=>{let e,t;try{t=Wo("Resetting imdone project...",!0)?.feedback,e=await Cc(process.cwd());let{project:r,jiraPlugin:n}=await Ix("Reset imdone project...",e,t);await YV({project:r,jiraPlugin:n,feedback:t}),t.succeed("Project reset successfully")}catch(r){te.warn("error:",r.stack),t.fail(`Failed to reset project: ${r.message}`)}});(async function(){Ho.parse()})();
565
+ Run 'imdone update' again to get configuration updates.`)}var Fkt=hwe.default.basename(process.argv[1]),xkt=Fkt.includes("debug");xkt?(console.log("\u{1F527} Debug mode enabled"),te.setLevel(process.env.LOG_LEVEL||Kn.TRACE)):te.setLevel(Kn.ERROR);var Ho=new C$;Ho.name("imdone").description(J8e).version(A0);async function ykt(e){try{let{feedback:t}=Wo("Fetching license information...",!0),r=await X_(process.env.IMDONE_LICENSE);if(r.valid){let{name:n,email:u,expires:i}=r.data;t.succeed(`Current license: ${n} (${u}) - Expires: ${i.toLocaleDateString()}`)}else t.fail(`Invalid or expired license: ${r.reason}`)}catch(t){te.warn(t),feedback.fail(`Failed to fetch license information: ${t.message}`)}}async function _kt(e,t){let r;try{let n=t.token||await Foe();r=Wo("Validating license...",!0)?.feedback;let u=await X_(n);u.valid||r.fail(`Invalid license: ${u.reason}`),await fK(e,n);let{name:i,email:o,expires:a}=u.data;r.succeed(`License accepted for ${i} (${o}) - Expires: ${a.toLocaleDateString()}`)}catch(n){te.warn(n),r.fail(`Failed to validate or store license: ${n.message}`)}}Ho.command("license").description("Enter or update your Imdone license").option("--token [token]","License token").option("--show","Show current license information").action(async e=>{let t=await Cc(process.cwd());if(await eh(t),await tp(),e.show)return await ykt();await _kt(t,e)});Ho.command("update").description("Update imdone-cli to the latest version and update config from origin").action(async()=>{let e;try{e=Wo("Updating imdone-cli...")?.feedback;let t=await Cc(process.cwd());await pwe(t,e)}catch(t){te.warn(t),e.fail(`Failed to update imdone-cli: ${t.message}`)}});Ho.command("clone").description("Clone a remote repository backlog to the local machine").option("--remote-url [remoteUrl]","Remote repository URL").option("--backlog-dir [backlogDir]","Backlog directory (default: backlog)").action(async e=>{let t,r;try{r=Wo("Cloning remote repository...",!0)?.feedback,t=await Cc(process.cwd()),await tp(),await Y8e(process.cwd(),{feedback:r,...e})}catch(n){te.warn("Error during clone operation:",n),r.fail(`Failed to clone repository: ${n.message}`)}});Ho.command("init").description("Initialize Jira integration").option("--name [name]","Project name").option("--jira-url [jiraUrl]","Jira URL (e.g., https://your-domain.atlassian.net)").option("--jira-project-key [jiraProjectKey]","Jira project key (e.g., ABC)").option("--jira-username [jiraUsername]","Jira username (email)").option("--jira-api-token [jiraApiToken]","Jira API token").option("--jql [jql]",'JQL query to fetch issues (e.g., Sprint in openSprints() and status != "Done")').action(async e=>{let t,r=process.cwd();try{t=Wo("Initializing imdone project...")?.feedback,await tp(),await z8e(r,e,{feedback:t})||(t.fail("Configuration cancelled"),process.exit(1)),t.succeed(`Imdone initialization for "${config.name}" completed successfully`)}catch(n){te.warn(n),t.fail(`Failed to initialize imdone project: ${n.message}`),process.exit(1)}});Ho.command("pull").description("Pull issues from Jira").action(async()=>{let e,t;try{t=Wo("Pulling issues from Jira...")?.feedback,e=await Cc(process.cwd());let{project:r,jiraPlugin:n}=await Ix("Pulling issues from Jira...",e,t);await m_({project:r,jiraPlugin:n,...wg,feedback:t})}catch(r){te.warn("Error during pull operation:",r),t.fail(`Failed to pull issues from Jira: ${r.message}`)}});Ho.command("push").description("Push changes to Jira").action(async()=>{let e,t;try{t=Wo("Pushing changes to Jira...")?.feedback,e=await Cc(process.cwd());let{project:r,jiraPlugin:n}=await Ix("Pushing changes to Jira...",e,t);await F_({project:r,jiraPlugin:n,...Qp,feedback:t})}catch(r){te.warn("Error during push operation:",r),t.fail(`Failed to push changes to Jira: ${r.message}`)}});Ho.command("merge").description("Push resolved merge conflicts to Jira").action(async e=>{let t,r;try{r=Wo("Pushing resolved merge conflicts to Jira...")?.feedback,t=await Cc(process.cwd());let{project:n,jiraPlugin:u}=await Ix("Pushing resolved merge conflicts to Jira...",t,r);await HV({project:n,jiraPlugin:u,feedback:r})}catch(n){te.warn("Error during merge operation:",n),r.fail(`Failed to merge changes: ${n.message}`),process.exit(1)}});Ho.command("lint").description("Lint local changes for imdone compatibility").action(async()=>{let e,t;try{t=Wo("Linting changes...")?.feedback,e=await Cc(process.cwd()),await eh(e),await tp(),await Gv(t),await E_(e,{...g_,feedback:t})}catch(r){te.warn("Error during lint operation:",r),t.fail(`Failed to lint changes: ${r.message}`)}});Ho.command("reset").description("Delete the local markdown files and pull the latest from Jira").action(async()=>{let e,t;try{t=Wo("Resetting imdone project...",!0)?.feedback,e=await Cc(process.cwd());let{project:r,jiraPlugin:n}=await Ix("Reset imdone project...",e,t);await YV({project:r,jiraPlugin:n,feedback:t}),t.succeed("Project reset successfully")}catch(r){te.warn("error:",r.stack),t.fail(`Failed to reset project: ${r.message}`)}});(async function(){Ho.parse()})();
566
566
  /*! Bundled license information:
567
567
 
568
568
  moment/moment.js: